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

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 (410) hide show
  1. package/README.md +217 -14
  2. package/dest/automine/automine_test_context.d.ts +85 -0
  3. package/dest/automine/automine_test_context.d.ts.map +1 -0
  4. package/dest/automine/automine_test_context.js +98 -0
  5. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
  6. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  7. package/dest/automine/contracts/fixtures/storage_proof_fetcher.js +184 -0
  8. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts +18 -0
  9. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
  10. package/dest/automine/contracts/fixtures/storage_proof_fixture.js +120 -0
  11. package/dest/automine/delivery/onchain_delivery_harness.d.ts +17 -0
  12. package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
  13. package/dest/automine/delivery/onchain_delivery_harness.js +123 -0
  14. package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
  15. package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
  16. package/dest/automine/token/blacklist_token_contract_test.js +166 -0
  17. package/dest/automine/token/token_contract_test.d.ts +40 -0
  18. package/dest/automine/token/token_contract_test.d.ts.map +1 -0
  19. package/dest/automine/token/token_contract_test.js +119 -0
  20. package/dest/automine/token/token_test_helpers.d.ts +73 -0
  21. package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
  22. package/dest/automine/token/token_test_helpers.js +97 -0
  23. package/dest/bench/client_flows/benchmark.d.ts +17 -2
  24. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  25. package/dest/bench/client_flows/benchmark.js +40 -1
  26. package/dest/bench/client_flows/client_flows_benchmark.d.ts +26 -20
  27. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  28. package/dest/bench/client_flows/client_flows_benchmark.js +159 -140
  29. package/dest/bench/client_flows/config.d.ts +2 -2
  30. package/dest/bench/client_flows/config.d.ts.map +1 -1
  31. package/dest/bench/client_flows/config.js +18 -0
  32. package/dest/bench/client_flows/data_extractor.d.ts +1 -1
  33. package/dest/bench/client_flows/data_extractor.js +8 -27
  34. package/dest/bench/utils.d.ts +10 -9
  35. package/dest/bench/utils.d.ts.map +1 -1
  36. package/dest/bench/utils.js +126 -23
  37. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  38. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  39. package/dest/composed/ha/ha_full_setup.js +383 -0
  40. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  41. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  42. package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +1 -1
  43. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  44. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  45. package/dest/fixtures/authwit_proxy.js +34 -0
  46. package/dest/fixtures/e2e_prover_test.d.ts +27 -29
  47. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  48. package/dest/fixtures/e2e_prover_test.js +156 -156
  49. package/dest/fixtures/elu_monitor.d.ts +21 -0
  50. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  51. package/dest/fixtures/elu_monitor.js +102 -0
  52. package/dest/fixtures/fixtures.d.ts +83 -3
  53. package/dest/fixtures/fixtures.d.ts.map +1 -1
  54. package/dest/fixtures/fixtures.js +86 -3
  55. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  56. package/dest/fixtures/get_acvm_config.js +1 -1
  57. package/dest/fixtures/get_bb_config.d.ts +1 -1
  58. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  59. package/dest/fixtures/get_bb_config.js +5 -5
  60. package/dest/fixtures/ha_setup.d.ts +71 -0
  61. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  62. package/dest/fixtures/ha_setup.js +119 -0
  63. package/dest/fixtures/index.d.ts +3 -1
  64. package/dest/fixtures/index.d.ts.map +1 -1
  65. package/dest/fixtures/index.js +2 -0
  66. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  67. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  68. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  69. package/dest/fixtures/logging.d.ts +1 -1
  70. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  71. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  72. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  73. package/dest/fixtures/setup.d.ts +269 -0
  74. package/dest/fixtures/setup.d.ts.map +1 -0
  75. package/dest/fixtures/setup.js +688 -0
  76. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  77. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  78. package/dest/fixtures/setup_p2p_test.js +60 -41
  79. package/dest/fixtures/timing.d.ts +42 -0
  80. package/dest/fixtures/timing.d.ts.map +1 -0
  81. package/dest/fixtures/timing.js +72 -0
  82. package/dest/fixtures/token_utils.d.ts +26 -5
  83. package/dest/fixtures/token_utils.d.ts.map +1 -1
  84. package/dest/fixtures/token_utils.js +33 -9
  85. package/dest/fixtures/utils.d.ts +5 -192
  86. package/dest/fixtures/utils.d.ts.map +1 -1
  87. package/dest/fixtures/utils.js +4 -648
  88. package/dest/fixtures/wait_helpers.d.ts +135 -0
  89. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  90. package/dest/fixtures/wait_helpers.js +154 -0
  91. package/dest/fixtures/web3signer.d.ts +1 -1
  92. package/dest/fixtures/web3signer.js +1 -1
  93. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  94. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  95. package/dest/fixtures/with_telemetry_utils.js +2 -2
  96. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  97. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  98. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  99. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  100. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  101. package/dest/forward-compatibility/wallet_service.js +109 -0
  102. package/dest/index.d.ts +1 -1
  103. package/dest/install_legacy_contracts.d.cts +10 -0
  104. package/dest/install_legacy_contracts.d.cts.map +1 -0
  105. package/dest/legacy-jest-resolver.d.cts +3 -0
  106. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  107. package/dest/multi-node/block-production/setup.d.ts +97 -0
  108. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  109. package/dest/multi-node/block-production/setup.js +158 -0
  110. package/dest/multi-node/governance/setup.d.ts +67 -0
  111. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  112. package/dest/multi-node/governance/setup.js +126 -0
  113. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  114. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  115. package/dest/multi-node/multi_node_test_context.js +347 -0
  116. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  117. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  118. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  119. package/dest/multi-node/slashing/setup.d.ts +167 -0
  120. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  121. package/dest/multi-node/slashing/setup.js +275 -0
  122. package/dest/p2p/p2p_network.d.ts +325 -0
  123. package/dest/p2p/p2p_network.d.ts.map +1 -0
  124. package/dest/p2p/p2p_network.js +389 -0
  125. package/dest/p2p/reqresp/utils.d.ts +19 -0
  126. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  127. package/dest/p2p/reqresp/utils.js +193 -0
  128. package/dest/p2p/shared.d.ts +72 -0
  129. package/dest/p2p/shared.d.ts.map +1 -0
  130. package/dest/p2p/shared.js +212 -0
  131. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  132. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  133. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  134. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  135. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  136. package/dest/quality_of_service/prometheus_client.js +67 -0
  137. package/dest/shared/cross_chain_test_harness.d.ts +11 -8
  138. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  139. package/dest/shared/cross_chain_test_harness.js +45 -40
  140. package/dest/shared/gas_portal_test_harness.d.ts +9 -6
  141. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  142. package/dest/shared/gas_portal_test_harness.js +28 -16
  143. package/dest/shared/index.d.ts +3 -2
  144. package/dest/shared/index.d.ts.map +1 -1
  145. package/dest/shared/index.js +1 -0
  146. package/dest/shared/jest_setup.d.ts +1 -1
  147. package/dest/shared/jest_setup.js +41 -1
  148. package/dest/shared/mock_state_view.d.ts +86 -0
  149. package/dest/shared/mock_state_view.d.ts.map +1 -0
  150. package/dest/shared/mock_state_view.js +186 -0
  151. package/dest/shared/submit-transactions.d.ts +4 -4
  152. package/dest/shared/submit-transactions.d.ts.map +1 -1
  153. package/dest/shared/submit-transactions.js +19 -14
  154. package/dest/shared/timing_env.d.js +5 -0
  155. package/dest/shared/timing_env.js +365 -0
  156. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  157. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  158. package/dest/shared/uniswap_l1_l2.js +86 -54
  159. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  160. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  161. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  162. package/dest/simulators/index.d.ts +1 -1
  163. package/dest/simulators/lending_simulator.d.ts +11 -4
  164. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  165. package/dest/simulators/lending_simulator.js +33 -19
  166. package/dest/simulators/token_simulator.d.ts +1 -1
  167. package/dest/simulators/token_simulator.d.ts.map +1 -1
  168. package/dest/simulators/token_simulator.js +3 -24
  169. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  170. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  171. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  172. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  173. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  174. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  175. package/dest/single-node/fees/bridging_race.notest.d.ts +2 -0
  176. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  177. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +21 -10
  178. package/dest/single-node/fees/fees_test.d.ts +93 -0
  179. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  180. package/dest/single-node/fees/fees_test.js +274 -0
  181. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  182. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  183. package/dest/single-node/l1-reorgs/setup.js +57 -0
  184. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  185. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  186. package/dest/single-node/partial-proofs/setup.js +5 -0
  187. package/dest/single-node/proving/setup.d.ts +5 -0
  188. package/dest/single-node/proving/setup.d.ts.map +1 -0
  189. package/dest/single-node/proving/setup.js +5 -0
  190. package/dest/single-node/recovery/setup.d.ts +5 -0
  191. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  192. package/dest/single-node/recovery/setup.js +5 -0
  193. package/dest/single-node/setup.d.ts +49 -0
  194. package/dest/single-node/setup.d.ts.map +1 -0
  195. package/dest/single-node/setup.js +56 -0
  196. package/dest/single-node/single_node_test_context.d.ts +360 -0
  197. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  198. package/dest/single-node/single_node_test_context.js +833 -0
  199. package/dest/spartan/setup_test_wallets.d.ts +18 -6
  200. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  201. package/dest/spartan/setup_test_wallets.js +169 -30
  202. package/dest/spartan/tx_metrics.d.ts +111 -0
  203. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  204. package/dest/spartan/tx_metrics.js +507 -0
  205. package/dest/spartan/utils/bot.d.ts +28 -0
  206. package/dest/spartan/utils/bot.d.ts.map +1 -0
  207. package/dest/spartan/utils/bot.js +142 -0
  208. package/dest/spartan/utils/chaos.d.ts +79 -0
  209. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  210. package/dest/spartan/utils/chaos.js +142 -0
  211. package/dest/spartan/utils/clients.d.ts +39 -0
  212. package/dest/spartan/utils/clients.d.ts.map +1 -0
  213. package/dest/spartan/utils/clients.js +90 -0
  214. package/dest/spartan/utils/config.d.ts +19 -0
  215. package/dest/spartan/utils/config.d.ts.map +1 -0
  216. package/dest/spartan/utils/config.js +23 -0
  217. package/dest/spartan/utils/health.d.ts +63 -0
  218. package/dest/spartan/utils/health.d.ts.map +1 -0
  219. package/dest/spartan/utils/health.js +202 -0
  220. package/dest/spartan/utils/helm.d.ts +15 -0
  221. package/dest/spartan/utils/helm.d.ts.map +1 -0
  222. package/dest/spartan/utils/helm.js +47 -0
  223. package/dest/spartan/utils/index.d.ts +11 -0
  224. package/dest/spartan/utils/index.d.ts.map +1 -0
  225. package/dest/spartan/utils/index.js +22 -0
  226. package/dest/spartan/utils/k8s.d.ts +128 -0
  227. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  228. package/dest/spartan/utils/k8s.js +381 -0
  229. package/dest/spartan/utils/nodes.d.ts +40 -0
  230. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  231. package/dest/spartan/utils/nodes.js +461 -0
  232. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  233. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  234. package/dest/spartan/utils/pod_logs.js +74 -0
  235. package/dest/spartan/utils/scripts.d.ts +30 -0
  236. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  237. package/dest/spartan/utils/scripts.js +81 -0
  238. package/dest/spartan/utils.d.ts +2 -218
  239. package/dest/spartan/utils.d.ts.map +1 -1
  240. package/dest/spartan/utils.js +1 -749
  241. package/dest/test-wallet/test_wallet.d.ts +105 -0
  242. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  243. package/dest/test-wallet/test_wallet.js +323 -0
  244. package/dest/test-wallet/utils.d.ts +76 -0
  245. package/dest/test-wallet/utils.d.ts.map +1 -0
  246. package/dest/test-wallet/utils.js +126 -0
  247. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  248. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  249. package/dest/test-wallet/wallet_worker_script.js +56 -0
  250. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  251. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  252. package/dest/test-wallet/worker_wallet.js +155 -0
  253. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  254. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  255. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  256. package/package.json +57 -47
  257. package/src/automine/README.md +60 -0
  258. package/src/automine/automine_test_context.ts +153 -0
  259. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  260. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  261. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  262. package/src/automine/delivery/onchain_delivery_harness.ts +177 -0
  263. package/src/automine/token/blacklist_token_contract_test.ts +208 -0
  264. package/src/automine/token/token_contract_test.ts +146 -0
  265. package/src/automine/token/token_test_helpers.ts +138 -0
  266. package/src/bench/client_flows/benchmark.ts +45 -2
  267. package/src/bench/client_flows/client_flows_benchmark.ts +227 -211
  268. package/src/bench/client_flows/config.ts +9 -1
  269. package/src/bench/client_flows/data_extractor.ts +7 -28
  270. package/src/bench/utils.ts +144 -25
  271. package/src/composed/ha/ha_full_setup.ts +466 -0
  272. package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +1 -1
  273. package/src/fixtures/authwit_proxy.ts +54 -0
  274. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  275. package/src/fixtures/e2e_prover_test.ts +175 -214
  276. package/src/fixtures/elu_monitor.ts +126 -0
  277. package/src/fixtures/fixtures.ts +110 -5
  278. package/src/fixtures/get_acvm_config.ts +1 -1
  279. package/src/fixtures/get_bb_config.ts +7 -6
  280. package/src/fixtures/ha_setup.ts +192 -0
  281. package/src/fixtures/index.ts +2 -0
  282. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  283. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  284. package/src/fixtures/setup.ts +987 -0
  285. package/src/fixtures/setup_p2p_test.ts +72 -58
  286. package/src/fixtures/timing.ts +97 -0
  287. package/src/fixtures/token_utils.ts +47 -11
  288. package/src/fixtures/utils.ts +26 -947
  289. package/src/fixtures/wait_helpers.ts +333 -0
  290. package/src/fixtures/web3signer.ts +1 -1
  291. package/src/fixtures/with_telemetry_utils.ts +2 -2
  292. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  293. package/src/forward-compatibility/wallet_service.ts +106 -0
  294. package/src/guides/up_quick_start.sh +8 -5
  295. package/src/infra/README.md +12 -0
  296. package/src/install_legacy_contracts.cjs +75 -0
  297. package/src/legacy-jest-resolver.cjs +112 -0
  298. package/src/multi-node/README.md +95 -0
  299. package/src/multi-node/block-production/setup.ts +272 -0
  300. package/src/multi-node/governance/setup.ts +172 -0
  301. package/src/multi-node/multi_node_test_context.ts +447 -0
  302. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  303. package/src/multi-node/slashing/setup.ts +433 -0
  304. package/src/p2p/README.md +78 -0
  305. package/src/p2p/p2p_network.ts +542 -0
  306. package/src/p2p/reqresp/utils.ts +263 -0
  307. package/src/p2p/shared.ts +329 -0
  308. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  309. package/src/quality_of_service/prometheus_client.ts +113 -0
  310. package/src/shared/cross_chain_test_harness.ts +51 -43
  311. package/src/shared/gas_portal_test_harness.ts +36 -18
  312. package/src/shared/index.ts +2 -1
  313. package/src/shared/jest_setup.ts +51 -1
  314. package/src/shared/mock_state_view.ts +188 -0
  315. package/src/shared/submit-transactions.ts +22 -19
  316. package/src/shared/timing_env.d.mts +39 -0
  317. package/src/shared/timing_env.mjs +363 -0
  318. package/src/shared/uniswap_l1_l2.ts +136 -115
  319. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  320. package/src/simulators/lending_simulator.ts +40 -20
  321. package/src/simulators/token_simulator.ts +6 -30
  322. package/src/single-node/README.md +60 -0
  323. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  324. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  325. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +23 -15
  326. package/src/single-node/fees/fees_test.ts +368 -0
  327. package/src/single-node/l1-reorgs/setup.ts +93 -0
  328. package/src/single-node/partial-proofs/setup.ts +8 -0
  329. package/src/single-node/proving/setup.ts +15 -0
  330. package/src/single-node/recovery/setup.ts +8 -0
  331. package/src/single-node/setup.ts +63 -0
  332. package/src/single-node/single_node_test_context.ts +1041 -0
  333. package/src/spartan/DEVELOP.md +7 -0
  334. package/src/spartan/setup_test_wallets.ts +243 -32
  335. package/src/spartan/tx_metrics.ts +460 -0
  336. package/src/spartan/utils/bot.ts +188 -0
  337. package/src/spartan/utils/chaos.ts +253 -0
  338. package/src/spartan/utils/clients.ts +100 -0
  339. package/src/spartan/utils/config.ts +29 -0
  340. package/src/spartan/utils/health.ts +255 -0
  341. package/src/spartan/utils/helm.ts +84 -0
  342. package/src/spartan/utils/index.ts +71 -0
  343. package/src/spartan/utils/k8s.ts +535 -0
  344. package/src/spartan/utils/nodes.ts +543 -0
  345. package/src/spartan/utils/pod_logs.ts +99 -0
  346. package/src/spartan/utils/scripts.ts +99 -0
  347. package/src/spartan/utils.ts +1 -942
  348. package/src/test-wallet/test_wallet.ts +429 -0
  349. package/src/test-wallet/utils.ts +205 -0
  350. package/src/test-wallet/wallet_worker_script.ts +66 -0
  351. package/src/test-wallet/worker_wallet.ts +214 -0
  352. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  353. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -54
  354. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  355. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +0 -185
  356. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -41
  357. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  358. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -107
  359. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
  360. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  361. package/dest/e2e_deploy_contract/deploy_test.js +0 -45
  362. package/dest/e2e_epochs/epochs_test.d.ts +0 -92
  363. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  364. package/dest/e2e_epochs/epochs_test.js +0 -336
  365. package/dest/e2e_fees/bridging_race.notest.d.ts +0 -2
  366. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  367. package/dest/e2e_fees/fees_test.d.ts +0 -84
  368. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  369. package/dest/e2e_fees/fees_test.js +0 -260
  370. package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
  371. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  372. package/dest/e2e_l1_publisher/write_json.js +0 -57
  373. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  374. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  375. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -29
  376. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  377. package/dest/e2e_nested_contract/nested_contract_test.js +0 -63
  378. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  379. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  380. package/dest/e2e_p2p/inactivity_slash_test.js +0 -135
  381. package/dest/e2e_p2p/p2p_network.d.ts +0 -108
  382. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  383. package/dest/e2e_p2p/p2p_network.js +0 -318
  384. package/dest/e2e_p2p/shared.d.ts +0 -46
  385. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  386. package/dest/e2e_p2p/shared.js +0 -183
  387. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -35
  388. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  389. package/dest/e2e_token_contract/token_contract_test.js +0 -126
  390. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  391. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  392. package/dest/fixtures/setup_l1_contracts.js +0 -17
  393. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  394. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  395. package/dest/fixtures/snapshot_manager.js +0 -505
  396. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  397. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  398. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +0 -256
  399. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -178
  400. package/src/e2e_deploy_contract/deploy_test.ts +0 -78
  401. package/src/e2e_epochs/epochs_test.ts +0 -437
  402. package/src/e2e_fees/fees_test.ts +0 -378
  403. package/src/e2e_l1_publisher/write_json.ts +0 -76
  404. package/src/e2e_nested_contract/nested_contract_test.ts +0 -95
  405. package/src/e2e_p2p/inactivity_slash_test.ts +0 -178
  406. package/src/e2e_p2p/p2p_network.ts +0 -472
  407. package/src/e2e_p2p/shared.ts +0 -282
  408. package/src/e2e_token_contract/token_contract_test.ts +0 -167
  409. package/src/fixtures/setup_l1_contracts.ts +0 -26
  410. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -1,59 +1,63 @@
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 { type DeployL1ContractsArgs, RollupContract, createExtendedL1Client, deployL1Contract } from '@aztec/ethereum';
8
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
9
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
10
+ import { RollupContract } from '@aztec/ethereum/contracts';
11
+ import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
12
+ import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
9
13
  import { ChainMonitor } from '@aztec/ethereum/test';
10
- import { randomBytes } from '@aztec/foundation/crypto';
14
+ import { randomBytes } from '@aztec/foundation/crypto/random';
15
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
16
  import { EthAddress } from '@aztec/foundation/eth-address';
12
- import { Fr } from '@aztec/foundation/fields';
13
17
  import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
14
18
  import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
15
19
  import { AMMContract } from '@aztec/noir-contracts.js/AMM';
16
20
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
17
21
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
18
22
  import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
19
- import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
23
+ import { TestTokenContract as BananaCoin, TestTokenContract } from '@aztec/noir-test-contracts.js/TestToken';
20
24
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
21
25
  import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
22
26
  import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
23
- import { GasSettings } from '@aztec/stdlib/gas';
27
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
28
+ import { Gas, GasSettings } from '@aztec/stdlib/gas';
24
29
  import { deriveSigningKey } from '@aztec/stdlib/keys';
25
- import { TestWallet } from '@aztec/test-wallet/server';
30
+ import { AppTaggingSecretKind } from '@aztec/stdlib/logs';
26
31
 
27
- import { MNEMONIC } from '../../fixtures/fixtures.js';
28
32
  import {
29
- type ISnapshotManager,
30
- type SubsystemsContext,
31
- createSnapshotManager,
32
- deployAccounts,
33
- } from '../../fixtures/snapshot_manager.js';
33
+ AUTOMINE_E2E_OPTS,
34
+ L1_DIRECT_WRITE_ACCOUNT_INDEX,
35
+ MNEMONIC,
36
+ getPaddedMaxFeesPerGas,
37
+ } from '../../fixtures/fixtures.js';
38
+ import { type EndToEndContext, type SetupOptions, setup, teardown } from '../../fixtures/setup.js';
34
39
  import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
35
- import { type SetupOptions, setupSponsoredFPC } from '../../fixtures/utils.js';
40
+ import { setupSponsoredFPC } from '../../fixtures/utils.js';
36
41
  import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
37
42
  import {
38
43
  FeeJuicePortalTestingHarnessFactory,
39
44
  type GasBridgingTestHarness,
40
45
  } from '../../shared/gas_portal_test_harness.js';
46
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
41
47
  import { ProxyLogger } from './benchmark.js';
42
48
  import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
43
49
 
44
- const { E2E_DATA_PATH: dataPath, BENCHMARK_CONFIG } = process.env;
50
+ const { BENCHMARK_CONFIG } = process.env;
45
51
 
46
52
  export type AccountType = 'ecdsar1' | 'schnorr';
47
53
  export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
48
54
  export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
49
55
 
50
56
  export class ClientFlowsBenchmark {
51
- private snapshotManager: ISnapshotManager;
52
-
53
57
  public logger: Logger;
54
58
  public aztecNode!: AztecNode;
55
59
  public cheatCodes!: CheatCodes;
56
- public context!: SubsystemsContext;
60
+ public context!: EndToEndContext;
57
61
  public chainMonitor!: ChainMonitor;
58
62
  public feeJuiceBridgeTestHarness!: GasBridgingTestHarness;
59
63
  public adminWallet!: TestWallet;
@@ -69,79 +73,95 @@ export class ClientFlowsBenchmark {
69
73
  public feeJuiceContract!: FeeJuiceContract;
70
74
  // Asset in which fees are paid via FPC
71
75
  public bananaCoin!: BananaCoin;
76
+ public bananaCoinInstance!: ContractInstanceWithAddress;
72
77
  public bananaFPC!: FPCContract;
78
+ public bananaFPCInstance!: ContractInstanceWithAddress;
73
79
  // Random asset we want to trade
74
- public candyBarCoin!: TokenContract;
80
+ public candyBarCoin!: TestTokenContract;
81
+ public candyBarCoinInstance!: ContractInstanceWithAddress;
75
82
  // AMM contract
76
83
  public amm!: AMMContract;
84
+ public ammInstance!: ContractInstanceWithAddress;
77
85
  // Liquidity token for AMM
78
- public liquidityToken!: TokenContract;
86
+ public liquidityToken!: TestTokenContract;
87
+ public liquidityTokenInstance!: ContractInstanceWithAddress;
79
88
  // Sponsored FPC contract
80
89
  public sponsoredFPC!: SponsoredFPCContract;
90
+ public sponsoredFPCInstance!: ContractInstanceWithAddress;
81
91
 
82
92
  // PXE and Wallet used by the benchmarking user. It can be set up with client-side proving enabled
83
93
  public userWallet!: TestWallet;
84
94
 
85
95
  public realProofs = ['true', '1'].includes(process.env.REAL_PROOFS ?? '');
86
96
 
87
- public paymentMethods: Record<BenchmarkingFeePaymentMethod, { forWallet: FeePaymentMethodGetter; circuits: number }> =
88
- {
89
- // eslint-disable-next-line camelcase
90
- bridged_fee_juice: {
91
- forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
92
- circuits: 2, // FeeJuice claim + kernel inner
93
- },
94
- // eslint-disable-next-line camelcase
95
- private_fpc: {
96
- forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
97
- circuits:
98
- 2 + // FPC entrypoint + kernel inner
99
- 2 + // BananaCoin transfer_to_public + kernel inner
100
- 2 + // Account verify_private_authwit + kernel inner
101
- 2, // BananaCoin prepare_private_balance_increase + kernel inner
102
- },
103
- // eslint-disable-next-line camelcase
104
- sponsored_fpc: {
105
- forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
106
- circuits: 2, // Sponsored FPC sponsor_unconditionally + kernel inner
107
- },
108
- // eslint-disable-next-line camelcase
109
- fee_juice: {
110
- forWallet: () => Promise.resolve(undefined),
111
- circuits: 0,
112
- },
113
- };
97
+ // `apps` is the number of private function calls contributed by this payment method.
98
+ // Each app produces one execution step at proving time; the orchestrator additionally produces
99
+ // one kernel step per batch of N apps (see `expectedExecutionSteps` in `benchmark.ts`).
100
+ public paymentMethods: Record<BenchmarkingFeePaymentMethod, { forWallet: FeePaymentMethodGetter; apps: number }> = {
101
+ // eslint-disable-next-line camelcase
102
+ bridged_fee_juice: {
103
+ forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
104
+ apps: 1, // FeeJuice claim
105
+ },
106
+ // eslint-disable-next-line camelcase
107
+ private_fpc: {
108
+ forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
109
+ apps:
110
+ 1 + // FPC entrypoint
111
+ 1 + // BananaCoin transfer_to_public
112
+ 1 + // Account verify_private_authwit
113
+ 1, // BananaCoin prepare_private_balance_increase
114
+ },
115
+ // eslint-disable-next-line camelcase
116
+ sponsored_fpc: {
117
+ forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
118
+ apps: 1, // Sponsored FPC sponsor_unconditionally
119
+ },
120
+ // eslint-disable-next-line camelcase
121
+ fee_juice: {
122
+ forWallet: () => Promise.resolve(undefined),
123
+ apps: 0,
124
+ },
125
+ };
114
126
 
115
127
  public config: ClientFlowsConfig;
116
128
 
117
129
  private proxyLogger: ProxyLogger;
130
+ private setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs>;
118
131
 
119
- constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployL1ContractsArgs> = {}) {
132
+ constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs> = {}) {
120
133
  this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
121
- this.snapshotManager = createSnapshotManager(
122
- `bench_client_flows${testName ? `/${testName}` : ''}`,
123
- dataPath,
124
- { startProverNode: true, ...setupOptions },
125
- { ...setupOptions },
126
- );
134
+ this.setupOptions = { ...AUTOMINE_E2E_OPTS, startProverNode: true, ...setupOptions };
127
135
  this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
128
136
  ProxyLogger.create();
129
137
  this.proxyLogger = ProxyLogger.getInstance();
130
138
  }
131
139
 
132
140
  async setup() {
133
- const context = await this.snapshotManager.setup();
134
- await context.aztecNode.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
141
+ this.logger.info('Setting up subsystems from fresh');
142
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
143
+ // BananaCoin is the codegen'd TestToken here, so the allowlist must key on its class, not canonical Token's.
144
+ const tokenAllowList = await getTokenAllowedSetupFunctions(BananaCoin.artifact);
145
+ this.context = await setup(2, {
146
+ ...this.setupOptions,
147
+ fundSponsoredFPC: true,
148
+ l1ContractsArgs: this.setupOptions,
149
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
150
+ });
151
+ await this.applyBaseSetup();
152
+
153
+ await this.context.aztecNodeService.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
135
154
 
136
- const rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
137
- this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
155
+ const rollupContract = RollupContract.getFromConfig(this.context.config);
156
+ this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
138
157
 
139
158
  return this;
140
159
  }
141
160
 
142
161
  async teardown() {
143
162
  await this.chainMonitor.stop();
144
- await this.snapshotManager.teardown();
163
+ await this.userWallet?.stop();
164
+ await teardown(this.context);
145
165
  }
146
166
 
147
167
  async mintAndBridgeFeeJuice(address: AztecAddress) {
@@ -149,21 +169,20 @@ export class ClientFlowsBenchmark {
149
169
  const { claimSecret: secret, messageLeafIndex: index } = claim;
150
170
  await this.feeJuiceContract.methods
151
171
  .claim(address, claim.claimAmount, secret, index)
152
- .send({ from: this.adminAddress })
153
- .wait();
172
+ .send({ from: this.adminAddress });
154
173
  }
155
174
 
156
175
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
157
176
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
158
- const balanceBefore = await this.bananaCoin.methods
177
+ const { result: balanceBefore } = await this.bananaCoin.methods
159
178
  .balance_of_private(address)
160
- .simulate({ from: this.adminAddress });
179
+ .simulate({ from: address });
161
180
 
162
181
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
163
182
 
164
- const balanceAfter = await this.bananaCoin.methods
183
+ const { result: balanceAfter } = await this.bananaCoin.methods
165
184
  .balance_of_private(address)
166
- .simulate({ from: this.adminAddress });
185
+ .simulate({ from: address });
167
186
  expect(balanceAfter).toEqual(balanceBefore + amount);
168
187
  }
169
188
 
@@ -183,137 +202,137 @@ export class ClientFlowsBenchmark {
183
202
  }
184
203
  }
185
204
 
186
- public async applyBaseSnapshots() {
187
- await this.applyInitialAccountsSnapshot();
188
- await this.applySetupFeeJuiceSnapshot();
205
+ public async applyBaseSetup() {
206
+ await this.applyInitialAccounts();
207
+ await this.applySetupFeeJuice();
189
208
  }
190
209
 
191
- async applyInitialAccountsSnapshot() {
192
- await this.snapshotManager.snapshot(
193
- 'initial_accounts',
194
- deployAccounts(2, this.logger),
195
- async (
196
- { deployedAccounts: [{ address: adminAddress }, { address: sequencerAddress }] },
197
- { wallet, aztecNode, cheatCodes },
198
- ) => {
199
- this.adminWallet = wallet;
200
- this.aztecNode = aztecNode;
201
- this.cheatCodes = cheatCodes;
202
-
203
- this.adminAddress = adminAddress;
204
- this.sequencerAddress = sequencerAddress;
205
-
206
- const canonicalFeeJuice = await getCanonicalFeeJuice();
207
- this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
208
- this.coinbase = EthAddress.random();
209
-
210
- const userPXEConfig = getPXEConfig();
211
- const userPXEConfigWithContracts = {
212
- ...userPXEConfig,
213
- proverEnabled: this.realProofs,
214
- } as PXEConfig;
215
-
216
- this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
217
- loggers: {
218
- prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
219
- },
220
- });
210
+ async applyInitialAccounts() {
211
+ this.logger.info('Applying initial accounts setup');
212
+ const [adminAddress, sequencerAddress] = this.context.accounts;
213
+
214
+ this.adminWallet = this.context.wallet;
215
+ this.aztecNode = this.context.aztecNodeService;
216
+ this.cheatCodes = this.context.cheatCodes;
217
+
218
+ this.adminAddress = adminAddress;
219
+ this.sequencerAddress = sequencerAddress;
220
+
221
+ const canonicalFeeJuice = await getCanonicalFeeJuice();
222
+ this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
223
+ this.coinbase = EthAddress.random();
224
+
225
+ const userPXEConfig = getPXEConfig();
226
+ const userPXEConfigWithContracts = {
227
+ ...userPXEConfig,
228
+ proverEnabled: this.realProofs,
229
+ } as PXEConfig;
230
+
231
+ this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
232
+ loggers: {
233
+ prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
221
234
  },
222
- );
235
+ // The benchmark measures steady-state app cost, not first-send discovery cost. Reproduce the pre-handshake-default
236
+ // behavior of unconstrained delivery: derive the tagging secret from the (sender, recipient) key pair via ECDH
237
+ // instead of taking the current default (a non-interactive handshake, which injects two extra private app
238
+ // executions and a nullifier per cold chain). Constrained delivery is unaffected: the Noir circuit rejects
239
+ // address-derived for constrained, so the hook falls through to a handshake there.
240
+ hooks: {
241
+ resolveTaggingSecretStrategy: ({ deliveryMode }) =>
242
+ Promise.resolve(
243
+ deliveryMode === AppTaggingSecretKind.UNCONSTRAINED
244
+ ? { type: 'address-derived' }
245
+ : { type: 'non-interactive-handshake' },
246
+ ),
247
+ },
248
+ });
223
249
  }
224
250
 
225
- async applySetupFeeJuiceSnapshot() {
226
- await this.snapshotManager.snapshot(
227
- 'setup_fee_juice',
228
- async () => {},
229
- async (_data, context) => {
230
- this.context = context;
231
-
232
- this.feeJuiceContract = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
233
-
234
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
235
- aztecNode: context.aztecNode,
236
- aztecNodeAdmin: context.aztecNode,
237
- l1Client: context.deployL1ContractsValues.l1Client,
238
- wallet: this.adminWallet,
239
- logger: this.logger,
240
- });
241
- },
242
- );
251
+ async applySetupFeeJuice() {
252
+ this.logger.info('Applying fee juice setup');
253
+ this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
254
+
255
+ this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
256
+ aztecNode: this.context.aztecNodeService,
257
+ aztecNodeAdmin: this.context.aztecNodeService,
258
+ // Bridge from a dedicated L1 account so its direct writes don't race the sequencer publisher's
259
+ // txs on the deployer account (see L1_DIRECT_WRITE_ACCOUNT_INDEX).
260
+ l1Client: createExtendedL1Client(
261
+ this.context.config.l1RpcUrls,
262
+ MNEMONIC,
263
+ undefined,
264
+ undefined,
265
+ L1_DIRECT_WRITE_ACCOUNT_INDEX,
266
+ ),
267
+ wallet: this.adminWallet,
268
+ logger: this.logger,
269
+ });
243
270
  }
244
271
 
245
- async applyDeployBananaTokenSnapshot() {
246
- await this.snapshotManager.snapshot(
247
- 'deploy_banana_token',
248
- async () => {
249
- const bananaCoin = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n)
250
- .send({ from: this.adminAddress })
251
- .deployed();
252
- this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
253
- return { bananaCoinAddress: bananaCoin.address };
254
- },
255
- async ({ bananaCoinAddress }) => {
256
- this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.adminWallet);
257
- },
258
- );
272
+ async applyDeployBananaToken() {
273
+ this.logger.info('Applying banana token deployment');
274
+ const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(
275
+ this.adminWallet,
276
+ this.adminAddress,
277
+ 'BC',
278
+ 'BC',
279
+ 18n,
280
+ ).send({
281
+ from: this.adminAddress,
282
+ });
283
+ this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
284
+ this.bananaCoin = bananaCoin;
285
+ this.bananaCoinInstance = bananaCoinInstance;
259
286
  }
260
287
 
261
- async applyDeployCandyBarTokenSnapshot() {
262
- await this.snapshotManager.snapshot(
263
- 'deploy_candy_bar_token',
264
- async () => {
265
- const candyBarCoin = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n)
266
- .send({ from: this.adminAddress })
267
- .deployed();
268
- this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
269
- return { candyBarCoinAddress: candyBarCoin.address };
270
- },
271
- async ({ candyBarCoinAddress }) => {
272
- this.candyBarCoin = await TokenContract.at(candyBarCoinAddress, this.adminWallet);
273
- },
274
- );
288
+ async applyDeployCandyBarToken() {
289
+ this.logger.info('Applying candy bar token deployment');
290
+ const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TestTokenContract.deploy(
291
+ this.adminWallet,
292
+ this.adminAddress,
293
+ 'CBC',
294
+ 'CBC',
295
+ 18n,
296
+ ).send({
297
+ from: this.adminAddress,
298
+ });
299
+ this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
300
+ this.candyBarCoin = candyBarCoin;
301
+ this.candyBarCoinInstance = candyBarCoinInstance;
275
302
  }
276
303
 
277
- public async applyFPCSetupSnapshot() {
278
- await this.snapshotManager.snapshot(
279
- 'fpc_setup',
280
- async context => {
281
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
282
- expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
304
+ public async applyFPCSetup() {
305
+ this.logger.info('Applying FPC setup');
306
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
307
+ expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
283
308
 
284
- const bananaCoin = this.bananaCoin;
285
- const bananaFPC = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress)
286
- .send({ from: this.adminAddress })
287
- .deployed();
309
+ const bananaCoin = this.bananaCoin;
310
+ const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(
311
+ this.adminWallet,
312
+ bananaCoin.address,
313
+ this.adminAddress,
314
+ ).send({
315
+ from: this.adminAddress,
316
+ });
288
317
 
289
- this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
318
+ this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
290
319
 
291
- await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
320
+ await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
292
321
 
293
- return { bananaFPCAddress: bananaFPC.address };
294
- },
295
- async data => {
296
- this.bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.adminWallet);
297
- },
298
- );
322
+ this.bananaFPC = bananaFPC;
323
+ this.bananaFPCInstance = bananaFPCInstance;
299
324
  }
300
325
 
301
- async applyDeploySponsoredFPCSnapshot() {
302
- await this.snapshotManager.snapshot(
303
- 'deploy_sponsored_fpc',
304
- async () => {
305
- const sponsoredFPC = await setupSponsoredFPC(this.adminWallet);
306
- this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
307
- return { sponsoredFPCAddress: sponsoredFPC.address };
308
- },
309
- async ({ sponsoredFPCAddress }) => {
310
- this.sponsoredFPC = await SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
311
- },
312
- );
326
+ async applyDeploySponsoredFPC() {
327
+ this.logger.info('Applying sponsored FPC deployment');
328
+ const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
329
+ this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
330
+ this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
331
+ this.sponsoredFPCInstance = sponsoredFPCInstance;
313
332
  }
314
333
 
315
334
  public async createCrossChainTestHarness(owner: AztecAddress) {
316
- const l1Client = createExtendedL1Client(this.context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
335
+ const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
317
336
 
318
337
  const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
319
338
  'Underlying',
@@ -338,49 +357,45 @@ export class ClientFlowsBenchmark {
338
357
 
339
358
  public async createAndFundBenchmarkingAccountOnUserWallet(accountType: AccountType) {
340
359
  const benchysAccountManager = await this.createBenchmarkingAccountManager(this.adminWallet, accountType);
341
- const benchysAccount = await benchysAccountManager.getAccount();
342
360
  const benchysAddress = benchysAccountManager.address;
343
361
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
344
362
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
345
- await behchysDeployMethod
346
- .send({
347
- from: AztecAddress.ZERO,
348
- fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
349
- })
350
- .wait();
363
+ await behchysDeployMethod.send({
364
+ from: NO_FROM,
365
+ fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
366
+ });
351
367
  // Register benchy on the user's Wallet, where we're going to be interacting from
352
368
  const accountManager = await this.userWallet.createAccount({
353
- secret: benchysAccount.getSecretKey(),
354
- salt: new Fr(benchysAccount.salt),
369
+ secret: benchysAccountManager.getSecretKey(),
370
+ salt: new Fr(benchysAccountManager.getInstance().salt),
355
371
  contract: benchysAccountManager.getAccountContract(),
356
372
  });
357
373
  return accountManager.address;
358
374
  }
359
375
 
360
- public async applyDeployAmmSnapshot() {
361
- await this.snapshotManager.snapshot(
362
- 'deploy_amm',
363
- async () => {
364
- const liquidityToken = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n)
365
- .send({ from: this.adminAddress })
366
- .deployed();
367
- const amm = await AMMContract.deploy(
368
- this.adminWallet,
369
- this.bananaCoin.address,
370
- this.candyBarCoin.address,
371
- liquidityToken.address,
372
- )
373
- .send({ from: this.adminAddress })
374
- .deployed();
375
- this.logger.info(`AMM deployed at ${amm.address}`);
376
- await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress }).wait();
377
- return { ammAddress: amm.address, liquidityTokenAddress: liquidityToken.address };
378
- },
379
- async ({ ammAddress, liquidityTokenAddress }) => {
380
- this.liquidityToken = await TokenContract.at(liquidityTokenAddress, this.adminWallet);
381
- this.amm = await AMMContract.at(ammAddress, this.adminWallet);
382
- },
383
- );
376
+ public async applyDeployAmm() {
377
+ this.logger.info('Applying AMM deployment');
378
+ const { contract: liquidityToken, instance: liquidityTokenInstance } = await TestTokenContract.deploy(
379
+ this.adminWallet,
380
+ this.adminAddress,
381
+ 'LPT',
382
+ 'LPT',
383
+ 18n,
384
+ ).send({
385
+ from: this.adminAddress,
386
+ });
387
+ const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
388
+ this.adminWallet,
389
+ this.bananaCoin.address,
390
+ this.candyBarCoin.address,
391
+ liquidityToken.address,
392
+ ).send({ from: this.adminAddress });
393
+ this.logger.info(`AMM deployed at ${amm.address}`);
394
+ await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
395
+ this.liquidityToken = liquidityToken;
396
+ this.liquidityTokenInstance = liquidityTokenInstance;
397
+ this.amm = amm;
398
+ this.ammInstance = ammInstance;
384
399
  }
385
400
 
386
401
  public async getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress) {
@@ -391,8 +406,9 @@ export class ClientFlowsBenchmark {
391
406
  public async getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress) {
392
407
  // The private fee paying method assembled on the app side requires knowledge of the maximum
393
408
  // fee the user is willing to pay
394
- const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1.5);
395
- const gasSettings = GasSettings.default({ maxFeesPerGas });
409
+ const maxFeesPerGas = await getPaddedMaxFeesPerGas(this.aztecNode);
410
+ const gasLimits = Gas.from((await this.aztecNode.getNodeInfo()).txsLimits.gas);
411
+ const gasSettings = GasSettings.fallback({ gasLimits, maxFeesPerGas });
396
412
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
397
413
  }
398
414
 
@@ -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
  };