@aztec/end-to-end 0.0.1-commit.03f7ef2 → 0.0.1-commit.04d373f

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 (271) 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/client_flows/data_extractor.js +3 -1
  12. package/dest/bench/utils.d.ts +9 -8
  13. package/dest/bench/utils.d.ts.map +1 -1
  14. package/dest/bench/utils.js +33 -19
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +12 -10
  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 +120 -117
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +30 -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 +122 -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 +20 -14
  24. package/dest/e2e_epochs/epochs_test.d.ts +39 -8
  25. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  26. package/dest/e2e_epochs/epochs_test.js +172 -51
  27. package/dest/e2e_fees/bridging_race.notest.js +3 -5
  28. package/dest/e2e_fees/fees_test.d.ts +18 -15
  29. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  30. package/dest/e2e_fees/fees_test.js +158 -143
  31. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  32. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  33. package/dest/e2e_l1_publisher/write_json.js +14 -16
  34. package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -10
  35. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  36. package/dest/e2e_nested_contract/nested_contract_test.js +32 -41
  37. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  38. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  39. package/dest/e2e_p2p/inactivity_slash_test.js +8 -6
  40. package/dest/e2e_p2p/p2p_network.d.ts +20 -17
  41. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  42. package/dest/e2e_p2p/p2p_network.js +167 -124
  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 +206 -0
  46. package/dest/e2e_p2p/shared.d.ts +30 -12
  47. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  48. package/dest/e2e_p2p/shared.js +88 -68
  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 +20 -11
  56. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  57. package/dest/e2e_token_contract/token_contract_test.js +103 -93
  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 +34 -0
  61. package/dest/fixtures/e2e_prover_test.d.ts +15 -20
  62. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  63. package/dest/fixtures/e2e_prover_test.js +115 -135
  64. package/dest/fixtures/elu_monitor.d.ts +21 -0
  65. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  66. package/dest/fixtures/elu_monitor.js +102 -0
  67. package/dest/fixtures/fixtures.d.ts +78 -2
  68. package/dest/fixtures/fixtures.d.ts.map +1 -1
  69. package/dest/fixtures/fixtures.js +75 -1
  70. package/dest/fixtures/get_bb_config.d.ts +1 -1
  71. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  72. package/dest/fixtures/get_bb_config.js +5 -5
  73. package/dest/fixtures/ha_setup.d.ts +71 -0
  74. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  75. package/dest/fixtures/ha_setup.js +116 -0
  76. package/dest/fixtures/index.d.ts +2 -1
  77. package/dest/fixtures/index.d.ts.map +1 -1
  78. package/dest/fixtures/index.js +1 -0
  79. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  80. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  81. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  82. package/dest/fixtures/setup.d.ts +266 -0
  83. package/dest/fixtures/setup.d.ts.map +1 -0
  84. package/dest/fixtures/setup.js +714 -0
  85. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  86. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  87. package/dest/fixtures/setup_p2p_test.js +43 -32
  88. package/dest/fixtures/token_utils.d.ts +2 -2
  89. package/dest/fixtures/token_utils.d.ts.map +1 -1
  90. package/dest/fixtures/token_utils.js +7 -6
  91. package/dest/fixtures/utils.d.ts +5 -194
  92. package/dest/fixtures/utils.d.ts.map +1 -1
  93. package/dest/fixtures/utils.js +4 -619
  94. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  95. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  96. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  97. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  98. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  99. package/dest/forward-compatibility/wallet_service.js +109 -0
  100. package/dest/install_legacy_contracts.d.cts +10 -0
  101. package/dest/install_legacy_contracts.d.cts.map +1 -0
  102. package/dest/legacy-jest-resolver.d.cts +3 -0
  103. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  104. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  105. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  106. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  107. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  108. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  109. package/dest/quality_of_service/prometheus_client.js +67 -0
  110. package/dest/shared/cross_chain_test_harness.d.ts +18 -6
  111. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  112. package/dest/shared/cross_chain_test_harness.js +33 -29
  113. package/dest/shared/gas_portal_test_harness.d.ts +18 -5
  114. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  115. package/dest/shared/gas_portal_test_harness.js +20 -11
  116. package/dest/shared/index.d.ts +3 -2
  117. package/dest/shared/index.d.ts.map +1 -1
  118. package/dest/shared/index.js +1 -0
  119. package/dest/shared/jest_setup.js +41 -1
  120. package/dest/shared/mock_state_view.d.ts +86 -0
  121. package/dest/shared/mock_state_view.d.ts.map +1 -0
  122. package/dest/shared/mock_state_view.js +186 -0
  123. package/dest/shared/submit-transactions.d.ts +4 -4
  124. package/dest/shared/submit-transactions.d.ts.map +1 -1
  125. package/dest/shared/submit-transactions.js +9 -11
  126. package/dest/shared/uniswap_l1_l2.d.ts +3 -28
  127. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  128. package/dest/shared/uniswap_l1_l2.js +88 -47
  129. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  130. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  131. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  132. package/dest/simulators/lending_simulator.d.ts +14 -3
  133. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  134. package/dest/simulators/lending_simulator.js +28 -16
  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 +15 -5
  139. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  140. package/dest/spartan/setup_test_wallets.js +133 -43
  141. package/dest/spartan/tx_metrics.d.ts +68 -5
  142. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  143. package/dest/spartan/tx_metrics.js +399 -19
  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 +19 -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 -231
  178. package/dest/spartan/utils.d.ts.map +1 -1
  179. package/dest/spartan/utils.js +1 -853
  180. package/dest/test-wallet/test_wallet.d.ts +85 -0
  181. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  182. package/dest/test-wallet/test_wallet.js +273 -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 +66 -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 +53 -0
  190. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  191. package/dest/test-wallet/worker_wallet.js +155 -0
  192. package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
  193. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  194. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  195. package/package.json +53 -45
  196. package/src/bench/client_flows/benchmark.ts +43 -2
  197. package/src/bench/client_flows/client_flows_benchmark.ts +189 -240
  198. package/src/bench/client_flows/config.ts +9 -1
  199. package/src/bench/client_flows/data_extractor.ts +1 -1
  200. package/src/bench/utils.ts +38 -22
  201. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +141 -152
  202. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +166 -118
  203. package/src/e2e_deploy_contract/deploy_test.ts +24 -16
  204. package/src/e2e_epochs/epochs_test.ts +218 -94
  205. package/src/e2e_fees/bridging_race.notest.ts +4 -10
  206. package/src/e2e_fees/fees_test.ts +207 -230
  207. package/src/e2e_l1_publisher/write_json.ts +16 -16
  208. package/src/e2e_nested_contract/nested_contract_test.ts +38 -57
  209. package/src/e2e_p2p/inactivity_slash_test.ts +8 -6
  210. package/src/e2e_p2p/p2p_network.ts +239 -191
  211. package/src/e2e_p2p/reqresp/utils.ts +274 -0
  212. package/src/e2e_p2p/shared.ts +115 -86
  213. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  214. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  215. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  216. package/src/e2e_token_contract/token_contract_test.ts +129 -117
  217. package/src/fixtures/authwit_proxy.ts +54 -0
  218. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  219. package/src/fixtures/e2e_prover_test.ts +143 -185
  220. package/src/fixtures/elu_monitor.ts +126 -0
  221. package/src/fixtures/fixtures.ts +97 -1
  222. package/src/fixtures/get_bb_config.ts +7 -6
  223. package/src/fixtures/ha_setup.ts +188 -0
  224. package/src/fixtures/index.ts +1 -0
  225. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  226. package/src/fixtures/setup.ts +1037 -0
  227. package/src/fixtures/setup_p2p_test.ts +52 -52
  228. package/src/fixtures/token_utils.ts +7 -6
  229. package/src/fixtures/utils.ts +29 -907
  230. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  231. package/src/forward-compatibility/wallet_service.ts +104 -0
  232. package/src/guides/up_quick_start.sh +3 -5
  233. package/src/install_legacy_contracts.cjs +75 -0
  234. package/src/legacy-jest-resolver.cjs +112 -0
  235. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  236. package/src/quality_of_service/prometheus_client.ts +113 -0
  237. package/src/shared/cross_chain_test_harness.ts +34 -40
  238. package/src/shared/gas_portal_test_harness.ts +22 -12
  239. package/src/shared/index.ts +2 -1
  240. package/src/shared/jest_setup.ts +51 -1
  241. package/src/shared/mock_state_view.ts +188 -0
  242. package/src/shared/submit-transactions.ts +11 -16
  243. package/src/shared/uniswap_l1_l2.ts +114 -108
  244. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  245. package/src/simulators/lending_simulator.ts +34 -16
  246. package/src/simulators/token_simulator.ts +6 -30
  247. package/src/spartan/setup_test_wallets.ts +191 -29
  248. package/src/spartan/tx_metrics.ts +329 -25
  249. package/src/spartan/utils/bot.ts +188 -0
  250. package/src/spartan/utils/chaos.ts +253 -0
  251. package/src/spartan/utils/clients.ts +100 -0
  252. package/src/spartan/utils/config.ts +29 -0
  253. package/src/spartan/utils/health.ts +255 -0
  254. package/src/spartan/utils/helm.ts +84 -0
  255. package/src/spartan/utils/index.ts +71 -0
  256. package/src/spartan/utils/k8s.ts +535 -0
  257. package/src/spartan/utils/nodes.ts +543 -0
  258. package/src/spartan/utils/pod_logs.ts +99 -0
  259. package/src/spartan/utils/scripts.ts +99 -0
  260. package/src/spartan/utils.ts +1 -1077
  261. package/src/test-wallet/test_wallet.ts +376 -0
  262. package/src/test-wallet/utils.ts +108 -0
  263. package/src/test-wallet/wallet_worker_script.ts +60 -0
  264. package/src/test-wallet/worker_wallet.ts +218 -0
  265. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  266. package/dest/fixtures/snapshot_manager.d.ts +0 -93
  267. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  268. package/dest/fixtures/snapshot_manager.js +0 -493
  269. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  270. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  271. package/src/fixtures/snapshot_manager.ts +0 -651
@@ -1,7 +1,8 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
2
2
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
3
3
  import { PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
4
4
  import { createLogger } from '@aztec/aztec.js/log';
5
+ import { getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
5
6
  import { createExtendedL1Client } from '@aztec/ethereum/client';
6
7
  import { RollupContract } from '@aztec/ethereum/contracts';
7
8
  import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
@@ -21,18 +22,17 @@ import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
21
22
  import { getPXEConfig } from '@aztec/pxe/server';
22
23
  import { GasSettings } from '@aztec/stdlib/gas';
23
24
  import { deriveSigningKey } from '@aztec/stdlib/keys';
24
- import { TestWallet } from '@aztec/test-wallet/server';
25
- import { MNEMONIC } from '../../fixtures/fixtures.js';
26
- import { createSnapshotManager, deployAccounts } from '../../fixtures/snapshot_manager.js';
25
+ import { AUTOMINE_E2E_OPTS, MNEMONIC, getPaddedMaxFeesPerGas } from '../../fixtures/fixtures.js';
26
+ import { deployAccounts, setup, teardown } from '../../fixtures/setup.js';
27
27
  import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
28
28
  import { setupSponsoredFPC } from '../../fixtures/utils.js';
29
29
  import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
30
30
  import { FeeJuicePortalTestingHarnessFactory } from '../../shared/gas_portal_test_harness.js';
31
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
31
32
  import { ProxyLogger } from './benchmark.js';
32
33
  import { FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
33
- const { E2E_DATA_PATH: dataPath, BENCHMARK_CONFIG } = process.env;
34
+ const { BENCHMARK_CONFIG } = process.env;
34
35
  export class ClientFlowsBenchmark {
35
- snapshotManager;
36
36
  logger;
37
37
  aztecNode;
38
38
  cheatCodes;
@@ -70,73 +70,90 @@ export class ClientFlowsBenchmark {
70
70
  'true',
71
71
  '1'
72
72
  ].includes(process.env.REAL_PROOFS ?? '');
73
+ // `apps` is the number of private function calls contributed by this payment method.
74
+ // Each app produces one execution step at proving time; the orchestrator additionally produces
75
+ // one kernel step per batch of N apps (see `expectedExecutionSteps` in `benchmark.ts`).
73
76
  paymentMethods = {
74
77
  // eslint-disable-next-line camelcase
75
78
  bridged_fee_juice: {
76
79
  forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
77
- circuits: 2
80
+ apps: 1
78
81
  },
79
82
  // eslint-disable-next-line camelcase
80
83
  private_fpc: {
81
84
  forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
82
- circuits: 2 + // FPC entrypoint + kernel inner
83
- 2 + // BananaCoin transfer_to_public + kernel inner
84
- 2 + // Account verify_private_authwit + kernel inner
85
- 2
85
+ apps: 1 + // FPC entrypoint
86
+ 1 + // BananaCoin transfer_to_public
87
+ 1 + // Account verify_private_authwit
88
+ 1
86
89
  },
87
90
  // eslint-disable-next-line camelcase
88
91
  sponsored_fpc: {
89
92
  forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
90
- circuits: 2
93
+ apps: 1
91
94
  },
92
95
  // eslint-disable-next-line camelcase
93
96
  fee_juice: {
94
97
  forWallet: ()=>Promise.resolve(undefined),
95
- circuits: 0
98
+ apps: 0
96
99
  }
97
100
  };
98
101
  config;
99
102
  proxyLogger;
103
+ setupOptions;
100
104
  constructor(testName, setupOptions = {}){
101
105
  this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
102
- this.snapshotManager = createSnapshotManager(`bench_client_flows${testName ? `/${testName}` : ''}`, dataPath, {
106
+ this.setupOptions = {
107
+ ...AUTOMINE_E2E_OPTS,
103
108
  startProverNode: true,
104
109
  ...setupOptions
105
- }, {
106
- ...setupOptions
107
- });
110
+ };
108
111
  this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
109
112
  ProxyLogger.create();
110
113
  this.proxyLogger = ProxyLogger.getInstance();
111
114
  }
112
115
  async setup() {
113
- const context = await this.snapshotManager.setup();
114
- await context.aztecNode.setConfig({
116
+ this.logger.info('Setting up subsystems from fresh');
117
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
118
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
119
+ this.context = await setup(0, {
120
+ ...this.setupOptions,
121
+ fundSponsoredFPC: true,
122
+ skipAccountDeployment: true,
123
+ l1ContractsArgs: this.setupOptions,
124
+ txPublicSetupAllowListExtend: [
125
+ ...this.setupOptions.txPublicSetupAllowListExtend ?? [],
126
+ ...tokenAllowList
127
+ ]
128
+ });
129
+ await this.applyBaseSetup();
130
+ await this.context.aztecNodeService.setConfig({
115
131
  feeRecipient: this.sequencerAddress,
116
132
  coinbase: this.coinbase
117
133
  });
118
- const rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
119
- this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
134
+ const rollupContract = RollupContract.getFromConfig(this.context.config);
135
+ this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
120
136
  return this;
121
137
  }
122
138
  async teardown() {
123
139
  await this.chainMonitor.stop();
124
- await this.snapshotManager.teardown();
140
+ await this.userWallet?.stop();
141
+ await teardown(this.context);
125
142
  }
126
143
  async mintAndBridgeFeeJuice(address) {
127
144
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(address);
128
145
  const { claimSecret: secret, messageLeafIndex: index } = claim;
129
146
  await this.feeJuiceContract.methods.claim(address, claim.claimAmount, secret, index).send({
130
147
  from: this.adminAddress
131
- }).wait();
148
+ });
132
149
  }
133
150
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
134
- const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
135
- from: this.adminAddress
151
+ const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
152
+ from: address
136
153
  });
137
154
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
138
- const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
139
- from: this.adminAddress
155
+ const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
156
+ from: address
140
157
  });
141
158
  expect(balanceAfter).toEqual(balanceBefore + amount);
142
159
  }
@@ -154,113 +171,87 @@ export class ClientFlowsBenchmark {
154
171
  throw new Error(`Unknown account type: ${type}`);
155
172
  }
156
173
  }
157
- async applyBaseSnapshots() {
158
- await this.applyInitialAccountsSnapshot();
159
- await this.applySetupFeeJuiceSnapshot();
174
+ async applyBaseSetup() {
175
+ await this.applyInitialAccounts();
176
+ await this.applySetupFeeJuice();
160
177
  }
161
- async applyInitialAccountsSnapshot() {
162
- await this.snapshotManager.snapshot('initial_accounts', deployAccounts(2, this.logger), async ({ deployedAccounts: [{ address: adminAddress }, { address: sequencerAddress }] }, { wallet, aztecNode, cheatCodes })=>{
163
- this.adminWallet = wallet;
164
- this.aztecNode = aztecNode;
165
- this.cheatCodes = cheatCodes;
166
- this.adminAddress = adminAddress;
167
- this.sequencerAddress = sequencerAddress;
168
- const canonicalFeeJuice = await getCanonicalFeeJuice();
169
- this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
170
- this.coinbase = EthAddress.random();
171
- const userPXEConfig = getPXEConfig();
172
- const userPXEConfigWithContracts = {
173
- ...userPXEConfig,
174
- proverEnabled: this.realProofs
175
- };
176
- this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
177
- loggers: {
178
- prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
179
- }
180
- });
178
+ async applyInitialAccounts() {
179
+ this.logger.info('Applying initial accounts setup');
180
+ const { deployedAccounts } = await deployAccounts(2, this.logger)({
181
+ wallet: this.context.wallet,
182
+ initialFundedAccounts: this.context.initialFundedAccounts
181
183
  });
182
- }
183
- async applySetupFeeJuiceSnapshot() {
184
- await this.snapshotManager.snapshot('setup_fee_juice', async ()=>{}, async (_data, context)=>{
185
- this.context = context;
186
- this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
187
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
188
- aztecNode: context.aztecNode,
189
- aztecNodeAdmin: context.aztecNode,
190
- l1Client: context.deployL1ContractsValues.l1Client,
191
- wallet: this.adminWallet,
192
- logger: this.logger
193
- });
184
+ const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
185
+ this.adminWallet = this.context.wallet;
186
+ this.aztecNode = this.context.aztecNodeService;
187
+ this.cheatCodes = this.context.cheatCodes;
188
+ this.adminAddress = adminAddress;
189
+ this.sequencerAddress = sequencerAddress;
190
+ const canonicalFeeJuice = await getCanonicalFeeJuice();
191
+ this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
192
+ this.coinbase = EthAddress.random();
193
+ const userPXEConfig = getPXEConfig();
194
+ const userPXEConfigWithContracts = {
195
+ ...userPXEConfig,
196
+ proverEnabled: this.realProofs
197
+ };
198
+ this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
199
+ loggers: {
200
+ prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
201
+ }
194
202
  });
195
203
  }
196
- async applyDeployBananaTokenSnapshot() {
197
- await this.snapshotManager.snapshot('deploy_banana_token', async ()=>{
198
- const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
199
- from: this.adminAddress
200
- }).wait();
201
- this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
202
- return {
203
- bananaCoinAddress: bananaCoin.address,
204
- bananaCoinInstance
205
- };
206
- }, ({ bananaCoinAddress, bananaCoinInstance })=>{
207
- this.bananaCoin = BananaCoin.at(bananaCoinAddress, this.adminWallet);
208
- this.bananaCoinInstance = bananaCoinInstance;
209
- return Promise.resolve();
204
+ async applySetupFeeJuice() {
205
+ this.logger.info('Applying fee juice setup');
206
+ this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
207
+ this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
208
+ aztecNode: this.context.aztecNodeService,
209
+ aztecNodeAdmin: this.context.aztecNodeService,
210
+ l1Client: this.context.deployL1ContractsValues.l1Client,
211
+ wallet: this.adminWallet,
212
+ logger: this.logger
210
213
  });
211
214
  }
212
- async applyDeployCandyBarTokenSnapshot() {
213
- await this.snapshotManager.snapshot('deploy_candy_bar_token', async ()=>{
214
- const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
215
- from: this.adminAddress
216
- }).wait();
217
- this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
218
- return {
219
- candyBarCoinAddress: candyBarCoin.address,
220
- candyBarCoinInstance
221
- };
222
- }, ({ candyBarCoinAddress, candyBarCoinInstance })=>{
223
- this.candyBarCoin = TokenContract.at(candyBarCoinAddress, this.adminWallet);
224
- this.candyBarCoinInstance = candyBarCoinInstance;
225
- return Promise.resolve();
215
+ async applyDeployBananaToken() {
216
+ this.logger.info('Applying banana token deployment');
217
+ const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
218
+ from: this.adminAddress
226
219
  });
220
+ this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
221
+ this.bananaCoin = bananaCoin;
222
+ this.bananaCoinInstance = bananaCoinInstance;
227
223
  }
228
- async applyFPCSetupSnapshot() {
229
- await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
230
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
231
- expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
232
- const bananaCoin = this.bananaCoin;
233
- const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
234
- from: this.adminAddress
235
- }).wait();
236
- this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
237
- await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
238
- return {
239
- bananaFPCAddress: bananaFPC.address,
240
- bananaFPCInstance
241
- };
242
- }, (data)=>{
243
- this.bananaFPC = FPCContract.at(data.bananaFPCAddress, this.adminWallet);
244
- this.bananaFPCInstance = data.bananaFPCInstance;
245
- return Promise.resolve();
224
+ async applyDeployCandyBarToken() {
225
+ this.logger.info('Applying candy bar token deployment');
226
+ const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
227
+ from: this.adminAddress
246
228
  });
229
+ this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
230
+ this.candyBarCoin = candyBarCoin;
231
+ this.candyBarCoinInstance = candyBarCoinInstance;
247
232
  }
248
- async applyDeploySponsoredFPCSnapshot() {
249
- await this.snapshotManager.snapshot('deploy_sponsored_fpc', async ()=>{
250
- const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
251
- this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
252
- return {
253
- sponsoredFPCAddress: sponsoredFPCInstance.address,
254
- sponsoredFPCInstance
255
- };
256
- }, ({ sponsoredFPCAddress, sponsoredFPCInstance })=>{
257
- this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
258
- this.sponsoredFPCInstance = sponsoredFPCInstance;
259
- return Promise.resolve();
233
+ async applyFPCSetup() {
234
+ this.logger.info('Applying FPC setup');
235
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
236
+ expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
237
+ const bananaCoin = this.bananaCoin;
238
+ const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
239
+ from: this.adminAddress
260
240
  });
241
+ this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
242
+ await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
243
+ this.bananaFPC = bananaFPC;
244
+ this.bananaFPCInstance = bananaFPCInstance;
245
+ }
246
+ async applyDeploySponsoredFPC() {
247
+ this.logger.info('Applying sponsored FPC deployment');
248
+ const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
249
+ this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
250
+ this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
251
+ this.sponsoredFPCInstance = sponsoredFPCInstance;
261
252
  }
262
253
  async createCrossChainTestHarness(owner) {
263
- const l1Client = createExtendedL1Client(this.context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
254
+ const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
264
255
  const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
265
256
  'Underlying',
266
257
  'UND',
@@ -278,44 +269,35 @@ export class ClientFlowsBenchmark {
278
269
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
279
270
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
280
271
  await behchysDeployMethod.send({
281
- from: AztecAddress.ZERO,
272
+ from: NO_FROM,
282
273
  fee: {
283
274
  paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim)
284
275
  }
285
- }).wait();
276
+ });
286
277
  // Register benchy on the user's Wallet, where we're going to be interacting from
287
278
  const accountManager = await this.userWallet.createAccount({
288
279
  secret: benchysAccount.getSecretKey(),
289
- salt: new Fr(benchysAccount.salt),
280
+ salt: new Fr(benchysAccountManager.getInstance().salt),
290
281
  contract: benchysAccountManager.getAccountContract()
291
282
  });
292
283
  return accountManager.address;
293
284
  }
294
- async applyDeployAmmSnapshot() {
295
- await this.snapshotManager.snapshot('deploy_amm', async ()=>{
296
- const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
297
- from: this.adminAddress
298
- }).wait();
299
- const { contract: amm, instance: ammInstance } = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send({
300
- from: this.adminAddress
301
- }).wait();
302
- this.logger.info(`AMM deployed at ${amm.address}`);
303
- await liquidityToken.methods.set_minter(amm.address, true).send({
304
- from: this.adminAddress
305
- }).wait();
306
- return {
307
- ammAddress: amm.address,
308
- ammInstance,
309
- liquidityTokenAddress: liquidityToken.address,
310
- liquidityTokenInstance
311
- };
312
- }, ({ ammAddress, ammInstance, liquidityTokenAddress, liquidityTokenInstance })=>{
313
- this.liquidityToken = TokenContract.at(liquidityTokenAddress, this.adminWallet);
314
- this.liquidityTokenInstance = liquidityTokenInstance;
315
- this.amm = AMMContract.at(ammAddress, this.adminWallet);
316
- this.ammInstance = ammInstance;
317
- return Promise.resolve();
285
+ async applyDeployAmm() {
286
+ this.logger.info('Applying AMM deployment');
287
+ const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
288
+ from: this.adminAddress
289
+ });
290
+ const { contract: amm, instance: ammInstance } = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send({
291
+ from: this.adminAddress
292
+ });
293
+ this.logger.info(`AMM deployed at ${amm.address}`);
294
+ await liquidityToken.methods.set_minter(amm.address, true).send({
295
+ from: this.adminAddress
318
296
  });
297
+ this.liquidityToken = liquidityToken;
298
+ this.liquidityTokenInstance = liquidityTokenInstance;
299
+ this.amm = amm;
300
+ this.ammInstance = ammInstance;
319
301
  }
320
302
  async getBridgedFeeJuicePaymentMethodForWallet(_wallet, sender) {
321
303
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(sender);
@@ -324,8 +306,8 @@ export class ClientFlowsBenchmark {
324
306
  async getPrivateFPCPaymentMethodForWallet(wallet, sender) {
325
307
  // The private fee paying method assembled on the app side requires knowledge of the maximum
326
308
  // fee the user is willing to pay
327
- const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1.5);
328
- const gasSettings = GasSettings.default({
309
+ const maxFeesPerGas = await getPaddedMaxFeesPerGas(this.aztecNode);
310
+ const gasSettings = GasSettings.fallback({
329
311
  maxFeesPerGas
330
312
  });
331
313
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
@@ -4,11 +4,11 @@ export type ClientFlowConfig = {
4
4
  feePaymentMethods: BenchmarkingFeePaymentMethod[];
5
5
  recursions?: number[];
6
6
  };
7
- type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm';
7
+ type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm' | 'storageProof';
8
8
  export type ClientFlowsConfig = {
9
9
  [key in ClientFlows]: ClientFlowConfig;
10
10
  };
11
11
  export declare const KEY_FLOWS_CONFIG: ClientFlowsConfig;
12
12
  export declare const FULL_FLOWS_CONFIG: ClientFlowsConfig;
13
13
  export {};
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLENBQUM7SUFDbEQsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDdkIsQ0FBQztBQUVGLEtBQUssV0FBVyxHQUFHLG9CQUFvQixHQUFHLGFBQWEsR0FBRyxXQUFXLEdBQUcsVUFBVSxHQUFHLEtBQUssQ0FBQztBQUUzRixNQUFNLE1BQU0saUJBQWlCLEdBQUc7S0FDN0IsR0FBRyxJQUFJLFdBQVcsR0FBRyxnQkFBZ0I7Q0FDdkMsQ0FBQztBQUVGLGVBQU8sTUFBTSxnQkFBZ0IsRUFBRSxpQkFzQjlCLENBQUM7QUFFRixlQUFPLE1BQU0saUJBQWlCLEVBQUUsaUJBc0IvQixDQUFDIn0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLENBQUM7SUFDbEQsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDdkIsQ0FBQztBQUVGLEtBQUssV0FBVyxHQUFHLG9CQUFvQixHQUFHLGFBQWEsR0FBRyxXQUFXLEdBQUcsVUFBVSxHQUFHLEtBQUssR0FBRyxjQUFjLENBQUM7QUFFNUcsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0tBQzdCLEdBQUcsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCO0NBQ3ZDLENBQUM7QUFFRixlQUFPLE1BQU0sZ0JBQWdCLEVBQUUsaUJBMEI5QixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQixFQUFFLGlCQTBCL0IsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;AAE3F,MAAM,MAAM,iBAAiB,GAAG;KAC7B,GAAG,IAAI,WAAW,GAAG,gBAAgB;CACvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBAsB9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAsB/B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,cAAc,CAAC;AAE5G,MAAM,MAAM,iBAAiB,GAAG;KAC7B,GAAG,IAAI,WAAW,GAAG,gBAAgB;CACvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBA0B9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBA0B/B,CAAC"}
@@ -45,6 +45,14 @@ export const KEY_FLOWS_CONFIG = {
45
45
  0,
46
46
  1
47
47
  ]
48
+ },
49
+ storageProof: {
50
+ accounts: [
51
+ 'ecdsar1'
52
+ ],
53
+ feePaymentMethods: [
54
+ 'sponsored_fpc'
55
+ ]
48
56
  }
49
57
  };
50
58
  export const FULL_FLOWS_CONFIG = {
@@ -102,5 +110,15 @@ export const FULL_FLOWS_CONFIG = {
102
110
  1,
103
111
  2
104
112
  ]
113
+ },
114
+ storageProof: {
115
+ accounts: [
116
+ 'ecdsar1',
117
+ 'schnorr'
118
+ ],
119
+ feePaymentMethods: [
120
+ 'sponsored_fpc',
121
+ 'private_fpc'
122
+ ]
105
123
  }
106
124
  };
@@ -17,7 +17,9 @@ async function main() {
17
17
  logger.info(`Flows in ${ivcFolder}: \n${flows.map((flowName)=>`\t- ${flowName}`).join('\n')}`);
18
18
  const simulator = new WASMSimulator();
19
19
  const log = proxyLogger.createLogger('bb:prover');
20
- const prover = new BBBundlePrivateKernelProver(simulator, log);
20
+ const prover = new BBBundlePrivateKernelProver(simulator, {
21
+ logger: log
22
+ });
21
23
  const userLog = createLogger('chonk_flows:data_processor');
22
24
  for (const flow of flows){
23
25
  userLog.info(`Processing flow ${flow}`);
@@ -1,23 +1,24 @@
1
- import { type SentTx, type WaitOpts } from '@aztec/aztec.js/contracts';
1
+ import { type WaitOpts } from '@aztec/aztec.js/contracts';
2
2
  import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
3
- import type { MetricsType } from '@aztec/telemetry-client';
3
+ import type { TxHash } from '@aztec/stdlib/tx';
4
+ import type { MetricDefinition } from '@aztec/telemetry-client';
4
5
  import type { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
5
6
  import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
6
7
  /**
7
8
  * Setup for benchmarks. Initializes a remote node with a single account and deploys a benchmark contract.
8
9
  */
9
10
  export declare function benchmarkSetup(opts: Partial<SetupOptions> & {
10
- /** What metrics to export */ metrics: (MetricsType | MetricFilter)[];
11
+ /** What metrics to export */ metrics: (MetricDefinition | MetricFilter)[];
11
12
  /** Where to output the benchmark data (defaults to BENCH_OUTPUT or bench.json) */
12
13
  benchOutput?: string;
13
14
  }): Promise<{
14
15
  telemetry: BenchmarkTelemetryClient;
15
16
  context: EndToEndContext;
16
17
  contract: BenchmarkingContract;
17
- sequencer: import("../../../sequencer-client/dest/index.js").SequencerClient;
18
+ sequencer: import("@aztec/sequencer-client").SequencerClient;
18
19
  }>;
19
20
  type MetricFilter = {
20
- source: MetricsType;
21
+ source: MetricDefinition;
21
22
  transform: (value: number) => number;
22
23
  name: string;
23
24
  unit?: string;
@@ -38,7 +39,7 @@ export type GithubActionBenchmarkResult = {
38
39
  * @param heavyPublicCompute - Whether the transactions include heavy public compute (like a big sha256).
39
40
  * @returns Array of sent txs.
40
41
  */
41
- export declare function sendTxs(txCount: number, context: EndToEndContext, contract: BenchmarkingContract, heavyPublicCompute?: boolean): SentTx[];
42
- export declare function waitTxs(txs: SentTx[], context: EndToEndContext, txWaitOpts?: WaitOpts): Promise<void>;
42
+ export declare function sendTxs(txCount: number, context: EndToEndContext, contract: BenchmarkingContract, heavyPublicCompute?: boolean): Promise<TxHash[]>;
43
+ export declare function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts): Promise<void>;
43
44
  export {};
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZW5jaC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsS0FBSyxNQUFNLEVBQUUsS0FBSyxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBNEMsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUt4SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQUV0Rjs7R0FFRztBQUNILHdCQUFzQixjQUFjLENBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUc7SUFDNUIsNkJBQTZCLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUM7SUFDdEUsa0ZBQWtGO0lBQ2xGLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN0Qjs7Ozs7R0F5QkY7QUFFRCxLQUFLLFlBQVksR0FBRztJQUNsQixNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQ3BCLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDO0lBQ3JDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBR0YsTUFBTSxNQUFNLDJCQUEyQixHQUFHO0lBQ3hDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ2QsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNoQixDQUFDO0FBNkRGOzs7Ozs7OztHQVFHO0FBQ0gsd0JBQWdCLE9BQU8sQ0FDckIsT0FBTyxFQUFFLE1BQU0sRUFDZixPQUFPLEVBQUUsZUFBZSxFQUN4QixRQUFRLEVBQUUsb0JBQW9CLEVBQzlCLGtCQUFrQixHQUFFLE9BQWUsR0FDbEMsTUFBTSxFQUFFLENBTVY7QUFFRCx3QkFBc0IsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsQ0FBQyxFQUFFLFFBQVEsaUJBSTNGIn0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZW5jaC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLEtBQUssUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBNEMsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU14SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQUV0Rjs7R0FFRztBQUNILHdCQUFzQixjQUFjLENBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUc7SUFDNUIsNkJBQTZCLENBQUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxrRkFBa0Y7SUFDbEYsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3RCOzs7OztHQXlCRjtBQUVELEtBQUssWUFBWSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztJQUN6QixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUdGLE1BQU0sTUFBTSwyQkFBMkIsR0FBRztJQUN4QyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNmLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQW9FRjs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixPQUFPLENBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGVBQWUsRUFDeEIsUUFBUSxFQUFFLG9CQUFvQixFQUM5QixrQkFBa0IsR0FBRSxPQUFlLEdBQ2xDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQVduQjtBQUVELHdCQUFzQixPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEVBQUUsUUFBUSxpQkFJM0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAEtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACtE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAyBF;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA6DF;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,MAAM,EAAE,CAMV;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAEtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,CAAC;IAC3E,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAyBF;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoEF;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F"}
@@ -1,22 +1,26 @@
1
- import { BatchCall } from '@aztec/aztec.js/contracts';
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { BatchCall, NO_WAIT } from '@aztec/aztec.js/contracts';
3
+ import { waitForTx } from '@aztec/aztec.js/node';
2
4
  import { mean, stdDev, times } from '@aztec/foundation/collection';
3
5
  import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
4
6
  import { mkdirSync, writeFileSync } from 'fs';
5
7
  import path from 'path';
8
+ import { PIPELINING_SETUP_OPTS } from '../fixtures/fixtures.js';
6
9
  import { setup } from '../fixtures/utils.js';
7
10
  /**
8
11
  * Setup for benchmarks. Initializes a remote node with a single account and deploys a benchmark contract.
9
12
  */ export async function benchmarkSetup(opts) {
10
13
  const context = await setup(1, {
14
+ ...PIPELINING_SETUP_OPTS,
11
15
  ...opts,
12
16
  telemetryConfig: {
13
17
  benchmark: true
14
18
  }
15
19
  });
16
20
  const defaultAccountAddress = context.accounts[0];
17
- const contract = await BenchmarkingContract.deploy(context.wallet).send({
21
+ const { contract } = await BenchmarkingContract.deploy(context.wallet).send({
18
22
  from: defaultAccountAddress
19
- }).deployed();
23
+ });
20
24
  context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
21
25
  const sequencer = context.aztecNode.getSequencer();
22
26
  const telemetry = context.telemetryClient;
@@ -45,17 +49,20 @@ import { setup } from '../fixtures/utils.js';
45
49
  sequencer
46
50
  };
47
51
  }
52
+ function isMetricDefinition(f) {
53
+ return 'description' in f;
54
+ }
48
55
  function formatMetricsForGithubBenchmarkAction(data, filter) {
49
- const allFilters = filter.map((f)=>typeof f === 'string' ? {
50
- name: f,
56
+ const allFilters = filter.map((f)=>isMetricDefinition(f) ? {
57
+ name: f.name,
51
58
  source: f,
52
59
  transform: (x)=>x,
53
- unit: undefined
60
+ unit: f.unit
54
61
  } : f);
55
62
  return data.flatMap((meter)=>{
56
- return meter.metrics.filter((metric)=>allFilters.map((f)=>f.source).includes(metric.name)).map((metric)=>[
63
+ return meter.metrics.filter((metric)=>allFilters.map((f)=>f.source.name).includes(metric.name)).map((metric)=>[
57
64
  metric,
58
- allFilters.find((f)=>f.source === metric.name)
65
+ allFilters.find((f)=>f.source.name === metric.name)
59
66
  ]).map(([metric, filter])=>({
60
67
  name: `${meter.name}/${filter.name}`,
61
68
  unit: filter.unit ?? metric.unit ?? 'unknown',
@@ -91,16 +98,19 @@ function getMetricValues(points) {
91
98
  * @param contract - Benchmarking contract.
92
99
  * @param heavyPublicCompute - Whether the transactions include heavy public compute (like a big sha256).
93
100
  * @returns A BatchCall instance.
94
- */ function makeCall(index, context, contract, heavyPublicCompute) {
95
- const [owner] = context.accounts;
101
+ */ async function makeCall(index, context, contract, heavyPublicCompute) {
96
102
  if (heavyPublicCompute) {
97
103
  return new BatchCall(context.wallet, [
98
104
  contract.methods.sha256_hash_1024(randomBytesAsBigInts(1024))
99
105
  ]);
100
106
  } else {
107
+ // We use random address for the new note owner because we can emit at most UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN
108
+ // logs for a given sender-recipient-contract tuple.
109
+ const ownerOfNewNote = await AztecAddress.random();
110
+ const [ownerOfBalance] = context.accounts;
101
111
  return new BatchCall(context.wallet, [
102
- contract.methods.create_note(owner, index + 1),
103
- contract.methods.increment_balance(owner, index + 1)
112
+ contract.methods.create_note(ownerOfNewNote, index + 1),
113
+ contract.methods.increment_balance(ownerOfBalance, index + 1)
104
114
  ]);
105
115
  }
106
116
  }
@@ -112,19 +122,23 @@ function getMetricValues(points) {
112
122
  * @param contract - Target contract.
113
123
  * @param heavyPublicCompute - Whether the transactions include heavy public compute (like a big sha256).
114
124
  * @returns Array of sent txs.
115
- */ export function sendTxs(txCount, context, contract, heavyPublicCompute = false) {
116
- const calls = times(txCount, (index)=>makeCall(index, context, contract, heavyPublicCompute));
125
+ */ export async function sendTxs(txCount, context, contract, heavyPublicCompute = false) {
126
+ const calls = await Promise.all(times(txCount, (index)=>makeCall(index, context, contract, heavyPublicCompute)));
117
127
  context.logger.info(`Creating ${txCount} txs`);
118
128
  const [from] = context.accounts;
119
129
  context.logger.info(`Sending ${txCount} txs`);
120
- return calls.map((call)=>call.send({
121
- from
122
- }));
130
+ return Promise.all(calls.map(async (call)=>{
131
+ const { txHash } = await call.send({
132
+ from,
133
+ wait: NO_WAIT
134
+ });
135
+ return txHash;
136
+ }));
123
137
  }
124
138
  export async function waitTxs(txs, context, txWaitOpts) {
125
139
  context.logger.info(`Awaiting ${txs.length} txs to be mined`);
126
- await Promise.all(txs.map((tx)=>tx.wait(txWaitOpts)));
127
- context.logger.info(`All ${txs.length} txs have been mined`);
140
+ await Promise.all(txs.map((txHash)=>waitForTx(context.aztecNode, txHash, txWaitOpts)));
141
+ context.logger.info(`${txs.length} txs have been mined`);
128
142
  }
129
143
  function randomBytesAsBigInts(length) {
130
144
  return [