@aztec/end-to-end 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240

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 (263) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/benchmark.d.ts +17 -2
  3. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/benchmark.js +38 -1
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts +14 -15
  6. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  7. package/dest/bench/client_flows/client_flows_benchmark.js +132 -150
  8. package/dest/bench/client_flows/config.d.ts +2 -2
  9. package/dest/bench/client_flows/config.d.ts.map +1 -1
  10. package/dest/bench/client_flows/config.js +18 -0
  11. package/dest/bench/utils.d.ts +6 -5
  12. package/dest/bench/utils.d.ts.map +1 -1
  13. package/dest/bench/utils.js +15 -8
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +12 -10
  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 +120 -117
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +21 -11
  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 +103 -67
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts +6 -5
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  22. package/dest/e2e_deploy_contract/deploy_test.js +20 -14
  23. package/dest/e2e_epochs/epochs_test.d.ts +39 -8
  24. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  25. package/dest/e2e_epochs/epochs_test.js +171 -50
  26. package/dest/e2e_fees/bridging_race.notest.js +3 -5
  27. package/dest/e2e_fees/fees_test.d.ts +18 -15
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +157 -142
  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 -13
  33. package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -10
  34. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  35. package/dest/e2e_nested_contract/nested_contract_test.js +32 -41
  36. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  37. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  38. package/dest/e2e_p2p/inactivity_slash_test.js +8 -6
  39. package/dest/e2e_p2p/p2p_network.d.ts +20 -17
  40. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  41. package/dest/e2e_p2p/p2p_network.js +166 -123
  42. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  43. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  44. package/dest/e2e_p2p/reqresp/utils.js +206 -0
  45. package/dest/e2e_p2p/shared.d.ts +30 -12
  46. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  47. package/dest/e2e_p2p/shared.js +86 -66
  48. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  49. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  50. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  51. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  52. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  53. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  54. package/dest/e2e_token_contract/token_contract_test.d.ts +20 -11
  55. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  56. package/dest/e2e_token_contract/token_contract_test.js +103 -93
  57. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  58. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  59. package/dest/fixtures/authwit_proxy.js +34 -0
  60. package/dest/fixtures/e2e_prover_test.d.ts +15 -20
  61. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  62. package/dest/fixtures/e2e_prover_test.js +115 -134
  63. package/dest/fixtures/elu_monitor.d.ts +21 -0
  64. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  65. package/dest/fixtures/elu_monitor.js +102 -0
  66. package/dest/fixtures/fixtures.d.ts +77 -1
  67. package/dest/fixtures/fixtures.d.ts.map +1 -1
  68. package/dest/fixtures/fixtures.js +74 -0
  69. package/dest/fixtures/get_bb_config.d.ts +1 -1
  70. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  71. package/dest/fixtures/get_bb_config.js +5 -5
  72. package/dest/fixtures/ha_setup.d.ts +71 -0
  73. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  74. package/dest/fixtures/ha_setup.js +116 -0
  75. package/dest/fixtures/index.d.ts +2 -1
  76. package/dest/fixtures/index.d.ts.map +1 -1
  77. package/dest/fixtures/index.js +1 -0
  78. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  79. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  80. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  81. package/dest/fixtures/setup.d.ts +266 -0
  82. package/dest/fixtures/setup.d.ts.map +1 -0
  83. package/dest/fixtures/setup.js +714 -0
  84. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  85. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  86. package/dest/fixtures/setup_p2p_test.js +43 -32
  87. package/dest/fixtures/token_utils.d.ts +2 -2
  88. package/dest/fixtures/token_utils.d.ts.map +1 -1
  89. package/dest/fixtures/token_utils.js +7 -6
  90. package/dest/fixtures/utils.d.ts +5 -191
  91. package/dest/fixtures/utils.d.ts.map +1 -1
  92. package/dest/fixtures/utils.js +4 -615
  93. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  94. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  95. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  96. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  97. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  98. package/dest/forward-compatibility/wallet_service.js +109 -0
  99. package/dest/install_legacy_contracts.d.cts +10 -0
  100. package/dest/install_legacy_contracts.d.cts.map +1 -0
  101. package/dest/legacy-jest-resolver.d.cts +3 -0
  102. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  103. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  104. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  105. package/dest/quality_of_service/prometheus_client.js +67 -0
  106. package/dest/shared/cross_chain_test_harness.d.ts +17 -5
  107. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  108. package/dest/shared/cross_chain_test_harness.js +33 -29
  109. package/dest/shared/gas_portal_test_harness.d.ts +18 -5
  110. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  111. package/dest/shared/gas_portal_test_harness.js +20 -11
  112. package/dest/shared/index.d.ts +2 -1
  113. package/dest/shared/index.d.ts.map +1 -1
  114. package/dest/shared/index.js +1 -0
  115. package/dest/shared/jest_setup.js +41 -1
  116. package/dest/shared/mock_state_view.d.ts +86 -0
  117. package/dest/shared/mock_state_view.d.ts.map +1 -0
  118. package/dest/shared/mock_state_view.js +186 -0
  119. package/dest/shared/submit-transactions.d.ts +4 -4
  120. package/dest/shared/submit-transactions.d.ts.map +1 -1
  121. package/dest/shared/submit-transactions.js +9 -11
  122. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  123. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  124. package/dest/shared/uniswap_l1_l2.js +73 -50
  125. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  126. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  127. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  128. package/dest/simulators/lending_simulator.d.ts +14 -3
  129. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  130. package/dest/simulators/lending_simulator.js +28 -16
  131. package/dest/simulators/token_simulator.d.ts +1 -1
  132. package/dest/simulators/token_simulator.d.ts.map +1 -1
  133. package/dest/simulators/token_simulator.js +3 -24
  134. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  135. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  136. package/dest/spartan/setup_test_wallets.js +133 -43
  137. package/dest/spartan/tx_metrics.d.ts +68 -5
  138. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  139. package/dest/spartan/tx_metrics.js +399 -19
  140. package/dest/spartan/utils/bot.d.ts +28 -0
  141. package/dest/spartan/utils/bot.d.ts.map +1 -0
  142. package/dest/spartan/utils/bot.js +142 -0
  143. package/dest/spartan/utils/chaos.d.ts +79 -0
  144. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  145. package/dest/spartan/utils/chaos.js +142 -0
  146. package/dest/spartan/utils/clients.d.ts +39 -0
  147. package/dest/spartan/utils/clients.d.ts.map +1 -0
  148. package/dest/spartan/utils/clients.js +90 -0
  149. package/dest/spartan/utils/config.d.ts +19 -0
  150. package/dest/spartan/utils/config.d.ts.map +1 -0
  151. package/dest/spartan/utils/config.js +23 -0
  152. package/dest/spartan/utils/health.d.ts +63 -0
  153. package/dest/spartan/utils/health.d.ts.map +1 -0
  154. package/dest/spartan/utils/health.js +202 -0
  155. package/dest/spartan/utils/helm.d.ts +15 -0
  156. package/dest/spartan/utils/helm.d.ts.map +1 -0
  157. package/dest/spartan/utils/helm.js +47 -0
  158. package/dest/spartan/utils/index.d.ts +11 -0
  159. package/dest/spartan/utils/index.d.ts.map +1 -0
  160. package/dest/spartan/utils/index.js +22 -0
  161. package/dest/spartan/utils/k8s.d.ts +128 -0
  162. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  163. package/dest/spartan/utils/k8s.js +381 -0
  164. package/dest/spartan/utils/nodes.d.ts +40 -0
  165. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  166. package/dest/spartan/utils/nodes.js +461 -0
  167. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  168. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  169. package/dest/spartan/utils/pod_logs.js +74 -0
  170. package/dest/spartan/utils/scripts.d.ts +30 -0
  171. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  172. package/dest/spartan/utils/scripts.js +81 -0
  173. package/dest/spartan/utils.d.ts +2 -253
  174. package/dest/spartan/utils.d.ts.map +1 -1
  175. package/dest/spartan/utils.js +1 -892
  176. package/dest/test-wallet/test_wallet.d.ts +85 -0
  177. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  178. package/dest/test-wallet/test_wallet.js +273 -0
  179. package/dest/test-wallet/utils.d.ts +41 -0
  180. package/dest/test-wallet/utils.d.ts.map +1 -0
  181. package/dest/test-wallet/utils.js +66 -0
  182. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  183. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  184. package/dest/test-wallet/wallet_worker_script.js +48 -0
  185. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  186. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  187. package/dest/test-wallet/worker_wallet.js +155 -0
  188. package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
  189. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  190. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  191. package/package.json +53 -45
  192. package/src/bench/client_flows/benchmark.ts +43 -2
  193. package/src/bench/client_flows/client_flows_benchmark.ts +189 -240
  194. package/src/bench/client_flows/config.ts +9 -1
  195. package/src/bench/utils.ts +17 -9
  196. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +141 -152
  197. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +144 -114
  198. package/src/e2e_deploy_contract/deploy_test.ts +24 -16
  199. package/src/e2e_epochs/epochs_test.ts +217 -93
  200. package/src/e2e_fees/bridging_race.notest.ts +4 -10
  201. package/src/e2e_fees/fees_test.ts +206 -227
  202. package/src/e2e_l1_publisher/write_json.ts +16 -13
  203. package/src/e2e_nested_contract/nested_contract_test.ts +38 -57
  204. package/src/e2e_p2p/inactivity_slash_test.ts +8 -6
  205. package/src/e2e_p2p/p2p_network.ts +238 -190
  206. package/src/e2e_p2p/reqresp/utils.ts +274 -0
  207. package/src/e2e_p2p/shared.ts +111 -83
  208. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  209. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  210. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  211. package/src/e2e_token_contract/token_contract_test.ts +129 -117
  212. package/src/fixtures/authwit_proxy.ts +54 -0
  213. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  214. package/src/fixtures/e2e_prover_test.ts +143 -184
  215. package/src/fixtures/elu_monitor.ts +126 -0
  216. package/src/fixtures/fixtures.ts +96 -0
  217. package/src/fixtures/get_bb_config.ts +7 -6
  218. package/src/fixtures/ha_setup.ts +188 -0
  219. package/src/fixtures/index.ts +1 -0
  220. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  221. package/src/fixtures/setup.ts +1037 -0
  222. package/src/fixtures/setup_p2p_test.ts +52 -52
  223. package/src/fixtures/token_utils.ts +7 -6
  224. package/src/fixtures/utils.ts +29 -901
  225. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  226. package/src/forward-compatibility/wallet_service.ts +104 -0
  227. package/src/guides/up_quick_start.sh +3 -5
  228. package/src/install_legacy_contracts.cjs +75 -0
  229. package/src/legacy-jest-resolver.cjs +112 -0
  230. package/src/quality_of_service/prometheus_client.ts +113 -0
  231. package/src/shared/cross_chain_test_harness.ts +38 -38
  232. package/src/shared/gas_portal_test_harness.ts +22 -12
  233. package/src/shared/index.ts +1 -0
  234. package/src/shared/jest_setup.ts +51 -1
  235. package/src/shared/mock_state_view.ts +188 -0
  236. package/src/shared/submit-transactions.ts +11 -16
  237. package/src/shared/uniswap_l1_l2.ts +91 -73
  238. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  239. package/src/simulators/lending_simulator.ts +34 -16
  240. package/src/simulators/token_simulator.ts +6 -30
  241. package/src/spartan/setup_test_wallets.ts +184 -28
  242. package/src/spartan/tx_metrics.ts +329 -25
  243. package/src/spartan/utils/bot.ts +188 -0
  244. package/src/spartan/utils/chaos.ts +253 -0
  245. package/src/spartan/utils/clients.ts +100 -0
  246. package/src/spartan/utils/config.ts +29 -0
  247. package/src/spartan/utils/health.ts +255 -0
  248. package/src/spartan/utils/helm.ts +84 -0
  249. package/src/spartan/utils/index.ts +71 -0
  250. package/src/spartan/utils/k8s.ts +535 -0
  251. package/src/spartan/utils/nodes.ts +543 -0
  252. package/src/spartan/utils/pod_logs.ts +99 -0
  253. package/src/spartan/utils/scripts.ts +99 -0
  254. package/src/spartan/utils.ts +1 -1158
  255. package/src/test-wallet/test_wallet.ts +376 -0
  256. package/src/test-wallet/utils.ts +108 -0
  257. package/src/test-wallet/wallet_worker_script.ts +60 -0
  258. package/src/test-wallet/worker_wallet.ts +218 -0
  259. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  260. package/dest/fixtures/snapshot_manager.d.ts +0 -93
  261. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  262. package/dest/fixtures/snapshot_manager.js +0 -488
  263. package/src/fixtures/snapshot_manager.ts +0 -646
@@ -1,10 +1,11 @@
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
1
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
3
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
3
4
  import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
4
5
  import { type Logger, createLogger } from '@aztec/aztec.js/log';
5
6
  import type { AztecNode } from '@aztec/aztec.js/node';
6
7
  import type { Wallet } from '@aztec/aztec.js/wallet';
7
- import { CheatCodes } from '@aztec/aztec/testing';
8
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
8
9
  import { createExtendedL1Client } from '@aztec/ethereum/client';
9
10
  import { RollupContract } from '@aztec/ethereum/contracts';
10
11
  import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
@@ -26,38 +27,31 @@ import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
26
27
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
27
28
  import { GasSettings } from '@aztec/stdlib/gas';
28
29
  import { deriveSigningKey } from '@aztec/stdlib/keys';
29
- import { TestWallet } from '@aztec/test-wallet/server';
30
30
 
31
- import { MNEMONIC } from '../../fixtures/fixtures.js';
32
- import {
33
- type ISnapshotManager,
34
- type SubsystemsContext,
35
- createSnapshotManager,
36
- deployAccounts,
37
- } from '../../fixtures/snapshot_manager.js';
31
+ import { AUTOMINE_E2E_OPTS, MNEMONIC, getPaddedMaxFeesPerGas } from '../../fixtures/fixtures.js';
32
+ import { type EndToEndContext, type SetupOptions, deployAccounts, setup, teardown } from '../../fixtures/setup.js';
38
33
  import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
39
- import { type SetupOptions, setupSponsoredFPC } from '../../fixtures/utils.js';
34
+ import { setupSponsoredFPC } from '../../fixtures/utils.js';
40
35
  import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
41
36
  import {
42
37
  FeeJuicePortalTestingHarnessFactory,
43
38
  type GasBridgingTestHarness,
44
39
  } from '../../shared/gas_portal_test_harness.js';
40
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
45
41
  import { ProxyLogger } from './benchmark.js';
46
42
  import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
47
43
 
48
- const { E2E_DATA_PATH: dataPath, BENCHMARK_CONFIG } = process.env;
44
+ const { BENCHMARK_CONFIG } = process.env;
49
45
 
50
46
  export type AccountType = 'ecdsar1' | 'schnorr';
51
47
  export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
52
48
  export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
53
49
 
54
50
  export class ClientFlowsBenchmark {
55
- private snapshotManager: ISnapshotManager;
56
-
57
51
  public logger: Logger;
58
52
  public aztecNode!: AztecNode;
59
53
  public cheatCodes!: CheatCodes;
60
- public context!: SubsystemsContext;
54
+ public context!: EndToEndContext;
61
55
  public chainMonitor!: ChainMonitor;
62
56
  public feeJuiceBridgeTestHarness!: GasBridgingTestHarness;
63
57
  public adminWallet!: TestWallet;
@@ -94,64 +88,74 @@ export class ClientFlowsBenchmark {
94
88
 
95
89
  public realProofs = ['true', '1'].includes(process.env.REAL_PROOFS ?? '');
96
90
 
97
- public paymentMethods: Record<BenchmarkingFeePaymentMethod, { forWallet: FeePaymentMethodGetter; circuits: number }> =
98
- {
99
- // eslint-disable-next-line camelcase
100
- bridged_fee_juice: {
101
- forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
102
- circuits: 2, // FeeJuice claim + kernel inner
103
- },
104
- // eslint-disable-next-line camelcase
105
- private_fpc: {
106
- forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
107
- circuits:
108
- 2 + // FPC entrypoint + kernel inner
109
- 2 + // BananaCoin transfer_to_public + kernel inner
110
- 2 + // Account verify_private_authwit + kernel inner
111
- 2, // BananaCoin prepare_private_balance_increase + kernel inner
112
- },
113
- // eslint-disable-next-line camelcase
114
- sponsored_fpc: {
115
- forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
116
- circuits: 2, // Sponsored FPC sponsor_unconditionally + kernel inner
117
- },
118
- // eslint-disable-next-line camelcase
119
- fee_juice: {
120
- forWallet: () => Promise.resolve(undefined),
121
- circuits: 0,
122
- },
123
- };
91
+ // `apps` is the number of private function calls contributed by this payment method.
92
+ // Each app produces one execution step at proving time; the orchestrator additionally produces
93
+ // one kernel step per batch of N apps (see `expectedExecutionSteps` in `benchmark.ts`).
94
+ public paymentMethods: Record<BenchmarkingFeePaymentMethod, { forWallet: FeePaymentMethodGetter; apps: number }> = {
95
+ // eslint-disable-next-line camelcase
96
+ bridged_fee_juice: {
97
+ forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
98
+ apps: 1, // FeeJuice claim
99
+ },
100
+ // eslint-disable-next-line camelcase
101
+ private_fpc: {
102
+ forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
103
+ apps:
104
+ 1 + // FPC entrypoint
105
+ 1 + // BananaCoin transfer_to_public
106
+ 1 + // Account verify_private_authwit
107
+ 1, // BananaCoin prepare_private_balance_increase
108
+ },
109
+ // eslint-disable-next-line camelcase
110
+ sponsored_fpc: {
111
+ forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
112
+ apps: 1, // Sponsored FPC sponsor_unconditionally
113
+ },
114
+ // eslint-disable-next-line camelcase
115
+ fee_juice: {
116
+ forWallet: () => Promise.resolve(undefined),
117
+ apps: 0,
118
+ },
119
+ };
124
120
 
125
121
  public config: ClientFlowsConfig;
126
122
 
127
123
  private proxyLogger: ProxyLogger;
124
+ private setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs>;
128
125
 
129
126
  constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs> = {}) {
130
127
  this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
131
- this.snapshotManager = createSnapshotManager(
132
- `bench_client_flows${testName ? `/${testName}` : ''}`,
133
- dataPath,
134
- { startProverNode: true, ...setupOptions },
135
- { ...setupOptions },
136
- );
128
+ this.setupOptions = { ...AUTOMINE_E2E_OPTS, startProverNode: true, ...setupOptions };
137
129
  this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
138
130
  ProxyLogger.create();
139
131
  this.proxyLogger = ProxyLogger.getInstance();
140
132
  }
141
133
 
142
134
  async setup() {
143
- const context = await this.snapshotManager.setup();
144
- await context.aztecNode.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
135
+ this.logger.info('Setting up subsystems from fresh');
136
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
137
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
138
+ this.context = await setup(0, {
139
+ ...this.setupOptions,
140
+ fundSponsoredFPC: true,
141
+ skipAccountDeployment: true,
142
+ l1ContractsArgs: this.setupOptions,
143
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
144
+ });
145
+ await this.applyBaseSetup();
146
+
147
+ await this.context.aztecNodeService.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
145
148
 
146
- const rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
147
- this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
149
+ const rollupContract = RollupContract.getFromConfig(this.context.config);
150
+ this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
148
151
 
149
152
  return this;
150
153
  }
151
154
 
152
155
  async teardown() {
153
156
  await this.chainMonitor.stop();
154
- await this.snapshotManager.teardown();
157
+ await this.userWallet?.stop();
158
+ await teardown(this.context);
155
159
  }
156
160
 
157
161
  async mintAndBridgeFeeJuice(address: AztecAddress) {
@@ -159,21 +163,20 @@ export class ClientFlowsBenchmark {
159
163
  const { claimSecret: secret, messageLeafIndex: index } = claim;
160
164
  await this.feeJuiceContract.methods
161
165
  .claim(address, claim.claimAmount, secret, index)
162
- .send({ from: this.adminAddress })
163
- .wait();
166
+ .send({ from: this.adminAddress });
164
167
  }
165
168
 
166
169
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
167
170
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
168
- const balanceBefore = await this.bananaCoin.methods
171
+ const { result: balanceBefore } = await this.bananaCoin.methods
169
172
  .balance_of_private(address)
170
- .simulate({ from: this.adminAddress });
173
+ .simulate({ from: address });
171
174
 
172
175
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
173
176
 
174
- const balanceAfter = await this.bananaCoin.methods
177
+ const { result: balanceAfter } = await this.bananaCoin.methods
175
178
  .balance_of_private(address)
176
- .simulate({ from: this.adminAddress });
179
+ .simulate({ from: address });
177
180
  expect(balanceAfter).toEqual(balanceBefore + amount);
178
181
  }
179
182
 
@@ -193,161 +196,124 @@ export class ClientFlowsBenchmark {
193
196
  }
194
197
  }
195
198
 
196
- public async applyBaseSnapshots() {
197
- await this.applyInitialAccountsSnapshot();
198
- await this.applySetupFeeJuiceSnapshot();
199
+ public async applyBaseSetup() {
200
+ await this.applyInitialAccounts();
201
+ await this.applySetupFeeJuice();
199
202
  }
200
203
 
201
- async applyInitialAccountsSnapshot() {
202
- await this.snapshotManager.snapshot(
203
- 'initial_accounts',
204
- deployAccounts(2, this.logger),
205
- async (
206
- { deployedAccounts: [{ address: adminAddress }, { address: sequencerAddress }] },
207
- { wallet, aztecNode, cheatCodes },
208
- ) => {
209
- this.adminWallet = wallet;
210
- this.aztecNode = aztecNode;
211
- this.cheatCodes = cheatCodes;
212
-
213
- this.adminAddress = adminAddress;
214
- this.sequencerAddress = sequencerAddress;
215
-
216
- const canonicalFeeJuice = await getCanonicalFeeJuice();
217
- this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
218
- this.coinbase = EthAddress.random();
219
-
220
- const userPXEConfig = getPXEConfig();
221
- const userPXEConfigWithContracts = {
222
- ...userPXEConfig,
223
- proverEnabled: this.realProofs,
224
- } as PXEConfig;
225
-
226
- this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
227
- loggers: {
228
- prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
229
- },
230
- });
204
+ async applyInitialAccounts() {
205
+ this.logger.info('Applying initial accounts setup');
206
+ const { deployedAccounts } = await deployAccounts(
207
+ 2,
208
+ this.logger,
209
+ )({
210
+ wallet: this.context.wallet,
211
+ initialFundedAccounts: this.context.initialFundedAccounts,
212
+ });
213
+
214
+ const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
215
+
216
+ this.adminWallet = this.context.wallet;
217
+ this.aztecNode = this.context.aztecNodeService;
218
+ this.cheatCodes = this.context.cheatCodes;
219
+
220
+ this.adminAddress = adminAddress;
221
+ this.sequencerAddress = sequencerAddress;
222
+
223
+ const canonicalFeeJuice = await getCanonicalFeeJuice();
224
+ this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
225
+ this.coinbase = EthAddress.random();
226
+
227
+ const userPXEConfig = getPXEConfig();
228
+ const userPXEConfigWithContracts = {
229
+ ...userPXEConfig,
230
+ proverEnabled: this.realProofs,
231
+ } as PXEConfig;
232
+
233
+ this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
234
+ loggers: {
235
+ prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
231
236
  },
232
- );
237
+ });
233
238
  }
234
239
 
235
- async applySetupFeeJuiceSnapshot() {
236
- await this.snapshotManager.snapshot(
237
- 'setup_fee_juice',
238
- async () => {},
239
- async (_data, context) => {
240
- this.context = context;
241
-
242
- this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
243
-
244
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
245
- aztecNode: context.aztecNode,
246
- aztecNodeAdmin: context.aztecNode,
247
- l1Client: context.deployL1ContractsValues.l1Client,
248
- wallet: this.adminWallet,
249
- logger: this.logger,
250
- });
251
- },
252
- );
240
+ async applySetupFeeJuice() {
241
+ this.logger.info('Applying fee juice setup');
242
+ this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
243
+
244
+ this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
245
+ aztecNode: this.context.aztecNodeService,
246
+ aztecNodeAdmin: this.context.aztecNodeService,
247
+ l1Client: this.context.deployL1ContractsValues.l1Client,
248
+ wallet: this.adminWallet,
249
+ logger: this.logger,
250
+ });
253
251
  }
254
252
 
255
- async applyDeployBananaTokenSnapshot() {
256
- await this.snapshotManager.snapshot(
257
- 'deploy_banana_token',
258
- async () => {
259
- const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(
260
- this.adminWallet,
261
- this.adminAddress,
262
- 'BC',
263
- 'BC',
264
- 18n,
265
- )
266
- .send({ from: this.adminAddress })
267
- .wait();
268
- this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
269
- return { bananaCoinAddress: bananaCoin.address, bananaCoinInstance };
270
- },
271
- ({ bananaCoinAddress, bananaCoinInstance }) => {
272
- this.bananaCoin = BananaCoin.at(bananaCoinAddress, this.adminWallet);
273
- this.bananaCoinInstance = bananaCoinInstance;
274
- return Promise.resolve();
275
- },
276
- );
253
+ async applyDeployBananaToken() {
254
+ this.logger.info('Applying banana token deployment');
255
+ const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(
256
+ this.adminWallet,
257
+ this.adminAddress,
258
+ 'BC',
259
+ 'BC',
260
+ 18n,
261
+ ).send({
262
+ from: this.adminAddress,
263
+ });
264
+ this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
265
+ this.bananaCoin = bananaCoin;
266
+ this.bananaCoinInstance = bananaCoinInstance;
277
267
  }
278
268
 
279
- async applyDeployCandyBarTokenSnapshot() {
280
- await this.snapshotManager.snapshot(
281
- 'deploy_candy_bar_token',
282
- async () => {
283
- const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(
284
- this.adminWallet,
285
- this.adminAddress,
286
- 'CBC',
287
- 'CBC',
288
- 18n,
289
- )
290
- .send({ from: this.adminAddress })
291
- .wait();
292
- this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
293
- return { candyBarCoinAddress: candyBarCoin.address, candyBarCoinInstance };
294
- },
295
- ({ candyBarCoinAddress, candyBarCoinInstance }) => {
296
- this.candyBarCoin = TokenContract.at(candyBarCoinAddress, this.adminWallet);
297
- this.candyBarCoinInstance = candyBarCoinInstance;
298
- return Promise.resolve();
299
- },
300
- );
269
+ async applyDeployCandyBarToken() {
270
+ this.logger.info('Applying candy bar token deployment');
271
+ const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(
272
+ this.adminWallet,
273
+ this.adminAddress,
274
+ 'CBC',
275
+ 'CBC',
276
+ 18n,
277
+ ).send({
278
+ from: this.adminAddress,
279
+ });
280
+ this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
281
+ this.candyBarCoin = candyBarCoin;
282
+ this.candyBarCoinInstance = candyBarCoinInstance;
301
283
  }
302
284
 
303
- public async applyFPCSetupSnapshot() {
304
- await this.snapshotManager.snapshot(
305
- 'fpc_setup',
306
- async context => {
307
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
308
- expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
285
+ public async applyFPCSetup() {
286
+ this.logger.info('Applying FPC setup');
287
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
288
+ expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
309
289
 
310
- const bananaCoin = this.bananaCoin;
311
- const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(
312
- this.adminWallet,
313
- bananaCoin.address,
314
- this.adminAddress,
315
- )
316
- .send({ from: this.adminAddress })
317
- .wait();
290
+ const bananaCoin = this.bananaCoin;
291
+ const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(
292
+ this.adminWallet,
293
+ bananaCoin.address,
294
+ this.adminAddress,
295
+ ).send({
296
+ from: this.adminAddress,
297
+ });
318
298
 
319
- this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
299
+ this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
320
300
 
321
- await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
301
+ await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
322
302
 
323
- return { bananaFPCAddress: bananaFPC.address, bananaFPCInstance };
324
- },
325
- data => {
326
- this.bananaFPC = FPCContract.at(data.bananaFPCAddress, this.adminWallet);
327
- this.bananaFPCInstance = data.bananaFPCInstance;
328
- return Promise.resolve();
329
- },
330
- );
303
+ this.bananaFPC = bananaFPC;
304
+ this.bananaFPCInstance = bananaFPCInstance;
331
305
  }
332
306
 
333
- async applyDeploySponsoredFPCSnapshot() {
334
- await this.snapshotManager.snapshot(
335
- 'deploy_sponsored_fpc',
336
- async () => {
337
- const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
338
- this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
339
- return { sponsoredFPCAddress: sponsoredFPCInstance.address, sponsoredFPCInstance };
340
- },
341
- ({ sponsoredFPCAddress, sponsoredFPCInstance }) => {
342
- this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
343
- this.sponsoredFPCInstance = sponsoredFPCInstance;
344
- return Promise.resolve();
345
- },
346
- );
307
+ async applyDeploySponsoredFPC() {
308
+ this.logger.info('Applying sponsored FPC deployment');
309
+ const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
310
+ this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
311
+ this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
312
+ this.sponsoredFPCInstance = sponsoredFPCInstance;
347
313
  }
348
314
 
349
315
  public async createCrossChainTestHarness(owner: AztecAddress) {
350
- const l1Client = createExtendedL1Client(this.context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
316
+ const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
351
317
 
352
318
  const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
353
319
  'Underlying',
@@ -376,59 +342,42 @@ export class ClientFlowsBenchmark {
376
342
  const benchysAddress = benchysAccountManager.address;
377
343
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
378
344
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
379
- await behchysDeployMethod
380
- .send({
381
- from: AztecAddress.ZERO,
382
- fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
383
- })
384
- .wait();
345
+ await behchysDeployMethod.send({
346
+ from: NO_FROM,
347
+ fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
348
+ });
385
349
  // Register benchy on the user's Wallet, where we're going to be interacting from
386
350
  const accountManager = await this.userWallet.createAccount({
387
351
  secret: benchysAccount.getSecretKey(),
388
- salt: new Fr(benchysAccount.salt),
352
+ salt: new Fr(benchysAccountManager.getInstance().salt),
389
353
  contract: benchysAccountManager.getAccountContract(),
390
354
  });
391
355
  return accountManager.address;
392
356
  }
393
357
 
394
- public async applyDeployAmmSnapshot() {
395
- await this.snapshotManager.snapshot(
396
- 'deploy_amm',
397
- async () => {
398
- const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(
399
- this.adminWallet,
400
- this.adminAddress,
401
- 'LPT',
402
- 'LPT',
403
- 18n,
404
- )
405
- .send({ from: this.adminAddress })
406
- .wait();
407
- const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
408
- this.adminWallet,
409
- this.bananaCoin.address,
410
- this.candyBarCoin.address,
411
- liquidityToken.address,
412
- )
413
- .send({ from: this.adminAddress })
414
- .wait();
415
- this.logger.info(`AMM deployed at ${amm.address}`);
416
- await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress }).wait();
417
- return {
418
- ammAddress: amm.address,
419
- ammInstance,
420
- liquidityTokenAddress: liquidityToken.address,
421
- liquidityTokenInstance,
422
- };
423
- },
424
- ({ ammAddress, ammInstance, liquidityTokenAddress, liquidityTokenInstance }) => {
425
- this.liquidityToken = TokenContract.at(liquidityTokenAddress, this.adminWallet);
426
- this.liquidityTokenInstance = liquidityTokenInstance;
427
- this.amm = AMMContract.at(ammAddress, this.adminWallet);
428
- this.ammInstance = ammInstance;
429
- return Promise.resolve();
430
- },
431
- );
358
+ public async applyDeployAmm() {
359
+ this.logger.info('Applying AMM deployment');
360
+ const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(
361
+ this.adminWallet,
362
+ this.adminAddress,
363
+ 'LPT',
364
+ 'LPT',
365
+ 18n,
366
+ ).send({
367
+ from: this.adminAddress,
368
+ });
369
+ const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
370
+ this.adminWallet,
371
+ this.bananaCoin.address,
372
+ this.candyBarCoin.address,
373
+ liquidityToken.address,
374
+ ).send({ from: this.adminAddress });
375
+ this.logger.info(`AMM deployed at ${amm.address}`);
376
+ await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
377
+ this.liquidityToken = liquidityToken;
378
+ this.liquidityTokenInstance = liquidityTokenInstance;
379
+ this.amm = amm;
380
+ this.ammInstance = ammInstance;
432
381
  }
433
382
 
434
383
  public async getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress) {
@@ -439,8 +388,8 @@ export class ClientFlowsBenchmark {
439
388
  public async getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress) {
440
389
  // The private fee paying method assembled on the app side requires knowledge of the maximum
441
390
  // fee the user is willing to pay
442
- const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
443
- const gasSettings = GasSettings.default({ maxFeesPerGas });
391
+ const maxFeesPerGas = await getPaddedMaxFeesPerGas(this.aztecNode);
392
+ const gasSettings = GasSettings.fallback({ maxFeesPerGas });
444
393
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
445
394
  }
446
395
 
@@ -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,14 +1,17 @@
1
1
  import type { AztecNodeService } from '@aztec/aztec-node';
2
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
3
- import { BatchCall, type SentTx, type WaitOpts } from '@aztec/aztec.js/contracts';
3
+ import { BatchCall, NO_WAIT, type WaitOpts } from '@aztec/aztec.js/contracts';
4
+ import { waitForTx } from '@aztec/aztec.js/node';
4
5
  import { mean, stdDev, times } from '@aztec/foundation/collection';
5
6
  import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
7
+ import type { TxHash } from '@aztec/stdlib/tx';
6
8
  import type { MetricDefinition } from '@aztec/telemetry-client';
7
9
  import type { BenchmarkDataPoint, BenchmarkMetricsType, BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
8
10
 
9
11
  import { mkdirSync, writeFileSync } from 'fs';
10
12
  import path from 'path';
11
13
 
14
+ import { PIPELINING_SETUP_OPTS } from '../fixtures/fixtures.js';
12
15
  import { type EndToEndContext, type SetupOptions, setup } from '../fixtures/utils.js';
13
16
 
14
17
  /**
@@ -21,12 +24,12 @@ export async function benchmarkSetup(
21
24
  benchOutput?: string;
22
25
  },
23
26
  ) {
24
- const context = await setup(1, { ...opts, telemetryConfig: { benchmark: true } });
27
+ const context = await setup(1, { ...PIPELINING_SETUP_OPTS, ...opts, telemetryConfig: { benchmark: true } });
25
28
  const defaultAccountAddress = context.accounts[0];
26
- const contract = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress }).deployed();
29
+ const { contract } = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
27
30
  context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
28
31
  const sequencer = (context.aztecNode as AztecNodeService).getSequencer()!;
29
- const telemetry = context.telemetryClient! as BenchmarkTelemetryClient;
32
+ const telemetry = context.telemetryClient as BenchmarkTelemetryClient;
30
33
  context.logger.warn(`Cleared benchmark data points from setup`);
31
34
  telemetry.clear();
32
35
  const origTeardown = context.teardown.bind(context);
@@ -142,18 +145,23 @@ export async function sendTxs(
142
145
  context: EndToEndContext,
143
146
  contract: BenchmarkingContract,
144
147
  heavyPublicCompute: boolean = false,
145
- ): Promise<SentTx[]> {
148
+ ): Promise<TxHash[]> {
146
149
  const calls = await Promise.all(times(txCount, index => makeCall(index, context, contract, heavyPublicCompute)));
147
150
  context.logger.info(`Creating ${txCount} txs`);
148
151
  const [from] = context.accounts;
149
152
  context.logger.info(`Sending ${txCount} txs`);
150
- return calls.map(call => call.send({ from }));
153
+ return Promise.all(
154
+ calls.map(async call => {
155
+ const { txHash } = await call.send({ from, wait: NO_WAIT });
156
+ return txHash;
157
+ }),
158
+ );
151
159
  }
152
160
 
153
- export async function waitTxs(txs: SentTx[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
161
+ export async function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
154
162
  context.logger.info(`Awaiting ${txs.length} txs to be mined`);
155
- await Promise.all(txs.map(tx => tx.wait(txWaitOpts)));
156
- context.logger.info(`All ${txs.length} txs have been mined`);
163
+ await Promise.all(txs.map(txHash => waitForTx(context.aztecNode, txHash, txWaitOpts)));
164
+ context.logger.info(`${txs.length} txs have been mined`);
157
165
  }
158
166
 
159
167
  function randomBytesAsBigInts(length: number): bigint[] {