@aztec/end-to-end 0.0.1-commit.c31f2472 → 0.0.1-commit.c52d6e7

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 (356) hide show
  1. package/README.md +229 -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/interactive_handshake_responder.d.ts +48 -0
  12. package/dest/automine/delivery/interactive_handshake_responder.d.ts.map +1 -0
  13. package/dest/automine/delivery/interactive_handshake_responder.js +76 -0
  14. package/dest/automine/delivery/onchain_delivery_harness.d.ts +19 -0
  15. package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
  16. package/dest/automine/delivery/onchain_delivery_harness.js +141 -0
  17. package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
  18. package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
  19. package/dest/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.js +45 -48
  20. package/dest/automine/token/token_contract_test.d.ts +40 -0
  21. package/dest/automine/token/token_contract_test.d.ts.map +1 -0
  22. package/dest/{e2e_token_contract → automine/token}/token_contract_test.js +43 -48
  23. package/dest/automine/token/token_test_helpers.d.ts +73 -0
  24. package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
  25. package/dest/automine/token/token_test_helpers.js +97 -0
  26. package/dest/bench/client_flows/benchmark.d.ts +15 -1
  27. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  28. package/dest/bench/client_flows/benchmark.js +19 -0
  29. package/dest/bench/client_flows/client_flows_benchmark.d.ts +7 -7
  30. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  31. package/dest/bench/client_flows/client_flows_benchmark.js +68 -62
  32. package/dest/bench/client_flows/config.d.ts +2 -2
  33. package/dest/bench/client_flows/config.d.ts.map +1 -1
  34. package/dest/bench/client_flows/config.js +18 -0
  35. package/dest/bench/client_flows/data_extractor.js +1 -0
  36. package/dest/bench/utils.d.ts +3 -3
  37. package/dest/bench/utils.d.ts.map +1 -1
  38. package/dest/bench/utils.js +102 -8
  39. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  40. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  41. package/dest/composed/ha/ha_full_setup.js +383 -0
  42. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  43. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  44. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  45. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  46. package/dest/fixtures/authwit_proxy.js +34 -0
  47. package/dest/fixtures/e2e_prover_test.d.ts +18 -14
  48. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  49. package/dest/fixtures/e2e_prover_test.js +83 -74
  50. package/dest/fixtures/elu_monitor.d.ts +21 -0
  51. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  52. package/dest/fixtures/elu_monitor.js +102 -0
  53. package/dest/fixtures/fixtures.d.ts +83 -1
  54. package/dest/fixtures/fixtures.d.ts.map +1 -1
  55. package/dest/fixtures/fixtures.js +86 -0
  56. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  57. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  58. package/dest/fixtures/get_acvm_config.js +2 -2
  59. package/dest/fixtures/get_bb_config.d.ts +1 -1
  60. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  61. package/dest/fixtures/get_bb_config.js +6 -6
  62. package/dest/fixtures/ha_setup.d.ts +71 -0
  63. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  64. package/dest/fixtures/ha_setup.js +119 -0
  65. package/dest/fixtures/index.d.ts +3 -1
  66. package/dest/fixtures/index.d.ts.map +1 -1
  67. package/dest/fixtures/index.js +2 -0
  68. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  69. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  70. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  71. package/dest/fixtures/setup.d.ts +120 -60
  72. package/dest/fixtures/setup.d.ts.map +1 -1
  73. package/dest/fixtures/setup.js +332 -327
  74. package/dest/fixtures/setup_p2p_test.d.ts +22 -10
  75. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  76. package/dest/fixtures/setup_p2p_test.js +26 -20
  77. package/dest/fixtures/standard_contracts_genesis.d.ts +16 -0
  78. package/dest/fixtures/standard_contracts_genesis.d.ts.map +1 -0
  79. package/dest/fixtures/standard_contracts_genesis.js +25 -0
  80. package/dest/fixtures/timing.d.ts +42 -0
  81. package/dest/fixtures/timing.d.ts.map +1 -0
  82. package/dest/fixtures/timing.js +72 -0
  83. package/dest/fixtures/token_utils.d.ts +22 -4
  84. package/dest/fixtures/token_utils.d.ts.map +1 -1
  85. package/dest/fixtures/token_utils.js +26 -8
  86. package/dest/fixtures/utils.d.ts +2 -2
  87. package/dest/fixtures/utils.d.ts.map +1 -1
  88. package/dest/fixtures/utils.js +1 -1
  89. package/dest/fixtures/wait_helpers.d.ts +135 -0
  90. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  91. package/dest/fixtures/wait_helpers.js +154 -0
  92. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  93. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  94. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  95. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  96. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  97. package/dest/forward-compatibility/wallet_service.js +109 -0
  98. package/dest/install_legacy_contracts.d.cts +10 -0
  99. package/dest/install_legacy_contracts.d.cts.map +1 -0
  100. package/dest/legacy-jest-resolver.d.cts +3 -0
  101. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  102. package/dest/multi-node/block-production/setup.d.ts +97 -0
  103. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  104. package/dest/multi-node/block-production/setup.js +158 -0
  105. package/dest/multi-node/governance/setup.d.ts +67 -0
  106. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  107. package/dest/multi-node/governance/setup.js +126 -0
  108. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  109. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  110. package/dest/multi-node/multi_node_test_context.js +347 -0
  111. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  112. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  113. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  114. package/dest/multi-node/slashing/setup.d.ts +167 -0
  115. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  116. package/dest/multi-node/slashing/setup.js +275 -0
  117. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +22 -12
  118. package/dest/p2p/p2p_network.d.ts.map +1 -0
  119. package/dest/{e2e_p2p → p2p}/p2p_network.js +98 -37
  120. package/dest/p2p/reqresp/utils.d.ts +19 -0
  121. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  122. package/dest/p2p/reqresp/utils.js +193 -0
  123. package/dest/p2p/shared.d.ts +72 -0
  124. package/dest/p2p/shared.d.ts.map +1 -0
  125. package/dest/p2p/shared.js +212 -0
  126. package/dest/shared/cross_chain_test_harness.d.ts +6 -4
  127. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  128. package/dest/shared/cross_chain_test_harness.js +44 -32
  129. package/dest/shared/gas_portal_test_harness.d.ts +9 -6
  130. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  131. package/dest/shared/gas_portal_test_harness.js +28 -17
  132. package/dest/shared/index.d.ts +2 -1
  133. package/dest/shared/index.d.ts.map +1 -1
  134. package/dest/shared/index.js +1 -0
  135. package/dest/shared/jest_setup.js +41 -1
  136. package/dest/shared/mock_state_view.d.ts +86 -0
  137. package/dest/shared/mock_state_view.d.ts.map +1 -0
  138. package/dest/shared/mock_state_view.js +186 -0
  139. package/dest/shared/submit-transactions.d.ts +2 -2
  140. package/dest/shared/submit-transactions.d.ts.map +1 -1
  141. package/dest/shared/submit-transactions.js +12 -5
  142. package/dest/shared/timing_env.d.js +5 -0
  143. package/dest/shared/timing_env.js +365 -0
  144. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  145. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  146. package/dest/shared/uniswap_l1_l2.js +56 -44
  147. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  148. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  149. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  150. package/dest/simulators/lending_simulator.d.ts +10 -3
  151. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  152. package/dest/simulators/lending_simulator.js +27 -15
  153. package/dest/simulators/token_simulator.d.ts +1 -1
  154. package/dest/simulators/token_simulator.d.ts.map +1 -1
  155. package/dest/simulators/token_simulator.js +3 -24
  156. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  157. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  158. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  159. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  160. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  161. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  162. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  163. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  164. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +17 -4
  165. package/dest/single-node/fees/fees_test.d.ts +95 -0
  166. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  167. package/dest/single-node/fees/fees_test.js +344 -0
  168. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  169. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  170. package/dest/single-node/l1-reorgs/setup.js +57 -0
  171. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  172. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  173. package/dest/single-node/partial-proofs/setup.js +5 -0
  174. package/dest/single-node/proving/setup.d.ts +5 -0
  175. package/dest/single-node/proving/setup.d.ts.map +1 -0
  176. package/dest/single-node/proving/setup.js +5 -0
  177. package/dest/single-node/recovery/setup.d.ts +5 -0
  178. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  179. package/dest/single-node/recovery/setup.js +5 -0
  180. package/dest/single-node/setup.d.ts +49 -0
  181. package/dest/single-node/setup.d.ts.map +1 -0
  182. package/dest/single-node/setup.js +56 -0
  183. package/dest/single-node/single_node_test_context.d.ts +374 -0
  184. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  185. package/dest/single-node/single_node_test_context.js +847 -0
  186. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  187. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  188. package/dest/spartan/setup_test_wallets.js +124 -47
  189. package/dest/spartan/tx_metrics.d.ts +27 -4
  190. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  191. package/dest/spartan/tx_metrics.js +106 -21
  192. package/dest/spartan/utils/bot.d.ts +3 -2
  193. package/dest/spartan/utils/bot.d.ts.map +1 -1
  194. package/dest/spartan/utils/bot.js +2 -1
  195. package/dest/spartan/utils/config.d.ts +11 -28
  196. package/dest/spartan/utils/config.d.ts.map +1 -1
  197. package/dest/spartan/utils/config.js +4 -1
  198. package/dest/spartan/utils/index.d.ts +6 -4
  199. package/dest/spartan/utils/index.d.ts.map +1 -1
  200. package/dest/spartan/utils/index.js +6 -2
  201. package/dest/spartan/utils/k8s.d.ts +31 -1
  202. package/dest/spartan/utils/k8s.d.ts.map +1 -1
  203. package/dest/spartan/utils/k8s.js +124 -0
  204. package/dest/spartan/utils/nodes.d.ts +14 -5
  205. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  206. package/dest/spartan/utils/nodes.js +204 -33
  207. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  208. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  209. package/dest/spartan/utils/pod_logs.js +74 -0
  210. package/dest/spartan/utils/scripts.d.ts +18 -4
  211. package/dest/spartan/utils/scripts.d.ts.map +1 -1
  212. package/dest/spartan/utils/scripts.js +19 -4
  213. package/dest/test-wallet/test_wallet.d.ts +105 -0
  214. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  215. package/dest/test-wallet/test_wallet.js +320 -0
  216. package/dest/test-wallet/utils.d.ts +76 -0
  217. package/dest/test-wallet/utils.d.ts.map +1 -0
  218. package/dest/test-wallet/utils.js +126 -0
  219. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  220. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  221. package/dest/test-wallet/wallet_worker_script.js +56 -0
  222. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  223. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  224. package/dest/test-wallet/worker_wallet.js +157 -0
  225. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  226. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  227. package/dest/test-wallet/worker_wallet_schema.js +23 -0
  228. package/package.json +53 -46
  229. package/src/automine/README.md +60 -0
  230. package/src/automine/automine_test_context.ts +153 -0
  231. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  232. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  233. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  234. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  235. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  236. package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +51 -61
  237. package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +50 -56
  238. package/src/automine/token/token_test_helpers.ts +138 -0
  239. package/src/bench/client_flows/benchmark.ts +21 -0
  240. package/src/bench/client_flows/client_flows_benchmark.ts +109 -78
  241. package/src/bench/client_flows/config.ts +9 -1
  242. package/src/bench/client_flows/data_extractor.ts +1 -0
  243. package/src/bench/utils.ts +117 -8
  244. package/src/composed/ha/ha_full_setup.ts +466 -0
  245. package/src/fixtures/authwit_proxy.ts +54 -0
  246. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  247. package/src/fixtures/e2e_prover_test.ts +101 -95
  248. package/src/fixtures/elu_monitor.ts +126 -0
  249. package/src/fixtures/fixtures.ts +110 -0
  250. package/src/fixtures/get_acvm_config.ts +2 -8
  251. package/src/fixtures/get_bb_config.ts +8 -8
  252. package/src/fixtures/ha_setup.ts +192 -0
  253. package/src/fixtures/index.ts +2 -0
  254. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  255. package/src/fixtures/setup.ts +436 -442
  256. package/src/fixtures/setup_p2p_test.ts +39 -34
  257. package/src/fixtures/standard_contracts_genesis.ts +28 -0
  258. package/src/fixtures/timing.ts +97 -0
  259. package/src/fixtures/token_utils.ts +42 -7
  260. package/src/fixtures/utils.ts +2 -3
  261. package/src/fixtures/wait_helpers.ts +333 -0
  262. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  263. package/src/forward-compatibility/wallet_service.ts +106 -0
  264. package/src/guides/up_quick_start.sh +7 -4
  265. package/src/infra/README.md +12 -0
  266. package/src/install_legacy_contracts.cjs +75 -0
  267. package/src/legacy-jest-resolver.cjs +112 -0
  268. package/src/multi-node/README.md +96 -0
  269. package/src/multi-node/block-production/setup.ts +272 -0
  270. package/src/multi-node/governance/setup.ts +172 -0
  271. package/src/multi-node/multi_node_test_context.ts +447 -0
  272. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  273. package/src/multi-node/slashing/setup.ts +433 -0
  274. package/src/p2p/README.md +78 -0
  275. package/src/{e2e_p2p → p2p}/p2p_network.ts +124 -53
  276. package/src/p2p/reqresp/utils.ts +263 -0
  277. package/src/p2p/shared.ts +329 -0
  278. package/src/shared/cross_chain_test_harness.ts +44 -21
  279. package/src/shared/gas_portal_test_harness.ts +35 -18
  280. package/src/shared/index.ts +1 -0
  281. package/src/shared/jest_setup.ts +51 -1
  282. package/src/shared/mock_state_view.ts +188 -0
  283. package/src/shared/submit-transactions.ts +15 -6
  284. package/src/shared/timing_env.d.mts +39 -0
  285. package/src/shared/timing_env.mjs +363 -0
  286. package/src/shared/uniswap_l1_l2.ts +98 -56
  287. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  288. package/src/simulators/lending_simulator.ts +33 -15
  289. package/src/simulators/token_simulator.ts +6 -30
  290. package/src/single-node/README.md +66 -0
  291. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  292. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  293. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +19 -5
  294. package/src/single-node/fees/fees_test.ts +434 -0
  295. package/src/single-node/l1-reorgs/setup.ts +93 -0
  296. package/src/single-node/partial-proofs/setup.ts +8 -0
  297. package/src/single-node/proving/setup.ts +15 -0
  298. package/src/single-node/recovery/setup.ts +8 -0
  299. package/src/single-node/setup.ts +63 -0
  300. package/src/single-node/single_node_test_context.ts +1058 -0
  301. package/src/spartan/setup_test_wallets.ts +168 -42
  302. package/src/spartan/tx_metrics.ts +108 -24
  303. package/src/spartan/utils/bot.ts +4 -1
  304. package/src/spartan/utils/config.ts +3 -0
  305. package/src/spartan/utils/index.ts +10 -1
  306. package/src/spartan/utils/k8s.ts +160 -0
  307. package/src/spartan/utils/nodes.ts +251 -31
  308. package/src/spartan/utils/pod_logs.ts +99 -0
  309. package/src/spartan/utils/scripts.ts +43 -7
  310. package/src/test-wallet/test_wallet.ts +426 -0
  311. package/src/test-wallet/utils.ts +205 -0
  312. package/src/test-wallet/wallet_worker_script.ts +66 -0
  313. package/src/test-wallet/worker_wallet.ts +216 -0
  314. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  315. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -53
  316. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  317. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
  318. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  319. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -128
  320. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
  321. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  322. package/dest/e2e_deploy_contract/deploy_test.js +0 -50
  323. package/dest/e2e_epochs/epochs_test.d.ts +0 -100
  324. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  325. package/dest/e2e_epochs/epochs_test.js +0 -361
  326. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  327. package/dest/e2e_fees/fees_test.d.ts +0 -88
  328. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  329. package/dest/e2e_fees/fees_test.js +0 -248
  330. package/dest/e2e_l1_publisher/write_json.d.ts +0 -11
  331. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  332. package/dest/e2e_l1_publisher/write_json.js +0 -56
  333. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  334. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  335. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
  336. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  337. package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
  338. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  339. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  340. package/dest/e2e_p2p/inactivity_slash_test.js +0 -136
  341. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  342. package/dest/e2e_p2p/shared.d.ts +0 -46
  343. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  344. package/dest/e2e_p2p/shared.js +0 -177
  345. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -42
  346. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  347. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -194
  348. package/src/e2e_deploy_contract/deploy_test.ts +0 -85
  349. package/src/e2e_epochs/epochs_test.ts +0 -477
  350. package/src/e2e_fees/fees_test.ts +0 -339
  351. package/src/e2e_l1_publisher/write_json.ts +0 -77
  352. package/src/e2e_nested_contract/nested_contract_test.ts +0 -73
  353. package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
  354. package/src/e2e_p2p/shared.ts +0 -288
  355. /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
  356. /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
@@ -0,0 +1,138 @@
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import type { ContractFunctionInteraction } from '@aztec/aztec.js/contracts';
3
+ import type { Logger } from '@aztec/aztec.js/log';
4
+ import type { Wallet } from '@aztec/aztec.js/wallet';
5
+ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
6
+ import type { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
7
+
8
+ import { sendThroughAuthwitProxy } from '../../fixtures/authwit_proxy.js';
9
+ import { DUPLICATE_NULLIFIER_ERROR } from '../../fixtures/fixtures.js';
10
+ import { type AnyTokenContract, mintTokensToPrivate } from '../../fixtures/token_utils.js';
11
+ import type { TestWallet } from '../../test-wallet/test_wallet.js';
12
+
13
+ /** Whether an amount / balance is read from the private or public balance of the token. */
14
+ export type BalanceKind = 'private' | 'public';
15
+
16
+ /** The invalid-authwit-nonce assertion the contract raises when `from == msg_sender` but nonce != 0. */
17
+ export const INVALID_AUTHWIT_NONCE_ERROR =
18
+ "Assertion failed: Invalid authwit nonce. When 'from' and 'msg_sender' are the same, 'authwit_nonce' must be zero";
19
+
20
+ /** Minimal token shape needed to read balances — satisfied structurally by Token/TestToken/TokenBlacklist. */
21
+ export interface BalanceReadable {
22
+ methods: {
23
+ balance_of_private(owner: AztecAddress): { simulate(opts: { from: AztecAddress }): Promise<{ result: bigint }> };
24
+ balance_of_public(owner: AztecAddress): { simulate(opts: { from: AztecAddress }): Promise<{ result: bigint }> };
25
+ };
26
+ }
27
+
28
+ /** Reads the private or public balance of an account, simulating from that account's own scope. */
29
+ export async function balanceOf(asset: BalanceReadable, kind: BalanceKind, account: AztecAddress): Promise<bigint> {
30
+ const interaction =
31
+ kind === 'private' ? asset.methods.balance_of_private(account) : asset.methods.balance_of_public(account);
32
+ return (await interaction.simulate({ from: account })).result;
33
+ }
34
+
35
+ /** Returns half of an account's balance, asserting it is non-zero so the operation under test is meaningful. */
36
+ export async function halfBalanceOf(asset: BalanceReadable, kind: BalanceKind, owner: AztecAddress): Promise<bigint> {
37
+ const amount = (await balanceOf(asset, kind, owner)) / 2n;
38
+ expect(amount).toBeGreaterThan(0n);
39
+ return amount;
40
+ }
41
+
42
+ /** Returns an amount just above an account's balance (balance + delta), asserting it is non-zero. */
43
+ export async function amountAboveBalance(
44
+ asset: BalanceReadable,
45
+ kind: BalanceKind,
46
+ owner: AztecAddress,
47
+ delta = 1n,
48
+ ): Promise<bigint> {
49
+ const amount = (await balanceOf(asset, kind, owner)) + delta;
50
+ expect(amount).toBeGreaterThan(0n);
51
+ return amount;
52
+ }
53
+
54
+ /**
55
+ * Grants a public authwit for `caller` to run `action` on behalf of `owner`, executes it from `caller`,
56
+ * then asserts a replay of the same call reverts as unauthorized (the authwit is single-use).
57
+ *
58
+ * `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
59
+ * their {@link TokenSimulator} to match the state change the executed action produced.
60
+ */
61
+ export async function assertPublicAuthwitReplayRejected(
62
+ wallet: TestWallet,
63
+ owner: AztecAddress,
64
+ action: ContractFunctionInteraction,
65
+ caller: AztecAddress,
66
+ onExecuted?: () => void,
67
+ ): Promise<void> {
68
+ const grant = await wallet.setPublicAuthWit(owner, { caller, action }, true);
69
+ await grant.send();
70
+
71
+ await action.send({ from: caller });
72
+ onExecuted?.();
73
+
74
+ await expect(action.simulate({ from: caller })).rejects.toThrow(/unauthorized/);
75
+ }
76
+
77
+ /**
78
+ * Creates a private authwit for `owner`, executes `action` through the authwit proxy (so `msg_sender`
79
+ * differs from the note owner), then asserts a replay reverts with a duplicate-nullifier error.
80
+ *
81
+ * `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
82
+ * their {@link TokenSimulator} to match the state change the executed action produced.
83
+ */
84
+ export async function assertAuthwitProxyReplayRejected(
85
+ proxy: GenericProxyContract,
86
+ wallet: TestWallet,
87
+ owner: AztecAddress,
88
+ action: ContractFunctionInteraction,
89
+ onExecuted?: () => void,
90
+ ): Promise<void> {
91
+ const witness = await wallet.createAuthWit(owner, { caller: proxy.address, action });
92
+
93
+ await sendThroughAuthwitProxy(proxy, action, { from: owner, authWitnesses: [witness] });
94
+ onExecuted?.();
95
+
96
+ await expect(sendThroughAuthwitProxy(proxy, action, { from: owner, authWitnesses: [witness] })).rejects.toThrow(
97
+ DUPLICATE_NULLIFIER_ERROR,
98
+ );
99
+ }
100
+
101
+ /**
102
+ * Deploys an {@link AMMContract} over three freshly deployed tokens (token0, token1, and the liquidity
103
+ * token), makes the AMM the liquidity token's minter, and mints `initialBalance` of token0 and token1 to
104
+ * each liquidity provider plus token0 to the swapper. `deploy` selects the token flavour (Token vs
105
+ * TestToken), so the concrete token type flows through to the caller.
106
+ */
107
+ export async function deployAmmWithTokens<T extends AnyTokenContract>(
108
+ wallet: Wallet,
109
+ admin: AztecAddress,
110
+ deploy: (wallet: Wallet, admin: AztecAddress, initialBalance: bigint, logger: Logger) => Promise<{ contract: T }>,
111
+ opts: { liquidityProviders: AztecAddress[]; swapper: AztecAddress; initialBalance: bigint; logger: Logger },
112
+ ): Promise<{ token0: T; token1: T; liquidityToken: T; amm: AMMContract }> {
113
+ const { liquidityProviders, swapper, initialBalance, logger } = opts;
114
+
115
+ const { contract: token0 } = await deploy(wallet, admin, 0n, logger);
116
+ const { contract: token1 } = await deploy(wallet, admin, 0n, logger);
117
+ const { contract: liquidityToken } = await deploy(wallet, admin, 0n, logger);
118
+
119
+ const { contract: amm } = await AMMContract.deploy(
120
+ wallet,
121
+ token0.address,
122
+ token1.address,
123
+ liquidityToken.address,
124
+ ).send({ from: admin });
125
+
126
+ // TODO(#9480): consider deploying the token by some factory when the AMM is deployed, and making the AMM be the
127
+ // minter there.
128
+ await liquidityToken.methods.set_minter(amm.address, true).send({ from: admin });
129
+
130
+ for (const lp of liquidityProviders) {
131
+ await mintTokensToPrivate(token0, admin, lp, initialBalance);
132
+ await mintTokensToPrivate(token1, admin, lp, initialBalance);
133
+ }
134
+ // Note that the swapper only holds token0, not token1.
135
+ await mintTokensToPrivate(token0, admin, swapper, initialBalance);
136
+
137
+ return { token0, token1, liquidityToken, amm };
138
+ }
@@ -5,6 +5,7 @@ import {
5
5
  type ProfileInteractionOptions,
6
6
  } from '@aztec/aztec.js/contracts';
7
7
  import type { Logger } from '@aztec/aztec.js/log';
8
+ import { MAX_APPS_PER_KERNEL } from '@aztec/constants';
8
9
  import { createLogger } from '@aztec/foundation/log';
9
10
  import { type PrivateExecutionStep, serializePrivateExecutionSteps } from '@aztec/stdlib/kernel';
10
11
  import type {
@@ -320,6 +321,26 @@ export function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): Git
320
321
  return benches;
321
322
  }
322
323
 
324
+ /**
325
+ * Computes the expected number of `PrivateExecutionStep` entries the orchestrator will produce
326
+ * for a tx with `apps` private function calls.
327
+ *
328
+ * Step layout: `apps` app circuits + kernel iterations + 1 final reset + 1 tail + 1 hiding kernel.
329
+ * Each kernel iteration absorbs up to `MAX_APPS_PER_KERNEL` apps via the `init_K` / `inner_K`
330
+ * variants, so the kernel count is `ceil(apps / MAX_APPS_PER_KERNEL)`.
331
+ *
332
+ * Caveat: this assumes no mid-flow reset is triggered, which would split a batch into two kernels
333
+ * separated by a reset. For the flows currently exercised in this benchmark suite that holds, but
334
+ * a future flow that grows large enough to overflow per-tx limits before consuming all apps will
335
+ * not match this formula.
336
+ */
337
+ export function expectedExecutionSteps(apps: number): number {
338
+ const kernels = Math.ceil(apps / MAX_APPS_PER_KERNEL);
339
+ // The final reset and tail are proved as a single circuit (reset_tail or reset_tail_to_public),
340
+ // so they share one execution step.
341
+ return apps + kernels + 1 /* reset+tail */ + 1 /* hiding */;
342
+ }
343
+
323
344
  export async function captureProfile(
324
345
  label: string,
325
346
  interaction: ContractFunctionInteraction | DeployMethod,
@@ -1,10 +1,12 @@
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';
7
+ import { FeeJuiceContract } from '@aztec/aztec.js/protocol';
6
8
  import type { Wallet } from '@aztec/aztec.js/wallet';
7
- import { CheatCodes } from '@aztec/aztec/testing';
9
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
8
10
  import { createExtendedL1Client } from '@aztec/ethereum/client';
9
11
  import { RollupContract } from '@aztec/ethereum/contracts';
10
12
  import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
@@ -12,24 +14,26 @@ import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
12
14
  import { ChainMonitor } from '@aztec/ethereum/test';
13
15
  import { randomBytes } from '@aztec/foundation/crypto/random';
14
16
  import { Fr } from '@aztec/foundation/curves/bn254';
17
+ import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
15
18
  import { EthAddress } from '@aztec/foundation/eth-address';
16
19
  import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
17
20
  import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
18
21
  import { AMMContract } from '@aztec/noir-contracts.js/AMM';
19
22
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
20
- import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
21
23
  import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
22
- import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
23
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
24
- import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
24
+ import { TestTokenContract as BananaCoin, TestTokenContract } from '@aztec/noir-test-contracts.js/TestToken';
25
25
  import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
26
26
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
27
- import { GasSettings } from '@aztec/stdlib/gas';
28
- import { deriveSigningKey } from '@aztec/stdlib/keys';
29
- import { TestWallet } from '@aztec/test-wallet/server';
27
+ import { Gas, GasSettings } from '@aztec/stdlib/gas';
28
+ import { AppTaggingSecretKind } from '@aztec/stdlib/logs';
30
29
 
31
- import { MNEMONIC } from '../../fixtures/fixtures.js';
32
- import { type EndToEndContext, type SetupOptions, deployAccounts, setup, teardown } from '../../fixtures/setup.js';
30
+ import {
31
+ AUTOMINE_E2E_OPTS,
32
+ L1_DIRECT_WRITE_ACCOUNT_INDEX,
33
+ MNEMONIC,
34
+ getPaddedMaxFeesPerGas,
35
+ } from '../../fixtures/fixtures.js';
36
+ import { type EndToEndContext, type SetupOptions, setup, teardown } from '../../fixtures/setup.js';
33
37
  import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
34
38
  import { setupSponsoredFPC } from '../../fixtures/utils.js';
35
39
  import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
@@ -37,6 +41,7 @@ import {
37
41
  FeeJuicePortalTestingHarnessFactory,
38
42
  type GasBridgingTestHarness,
39
43
  } from '../../shared/gas_portal_test_harness.js';
44
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
40
45
  import { ProxyLogger } from './benchmark.js';
41
46
  import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
42
47
 
@@ -70,13 +75,13 @@ export class ClientFlowsBenchmark {
70
75
  public bananaFPC!: FPCContract;
71
76
  public bananaFPCInstance!: ContractInstanceWithAddress;
72
77
  // Random asset we want to trade
73
- public candyBarCoin!: TokenContract;
78
+ public candyBarCoin!: TestTokenContract;
74
79
  public candyBarCoinInstance!: ContractInstanceWithAddress;
75
80
  // AMM contract
76
81
  public amm!: AMMContract;
77
82
  public ammInstance!: ContractInstanceWithAddress;
78
83
  // Liquidity token for AMM
79
- public liquidityToken!: TokenContract;
84
+ public liquidityToken!: TestTokenContract;
80
85
  public liquidityTokenInstance!: ContractInstanceWithAddress;
81
86
  // Sponsored FPC contract
82
87
  public sponsoredFPC!: SponsoredFPCContract;
@@ -87,33 +92,35 @@ export class ClientFlowsBenchmark {
87
92
 
88
93
  public realProofs = ['true', '1'].includes(process.env.REAL_PROOFS ?? '');
89
94
 
90
- public paymentMethods: Record<BenchmarkingFeePaymentMethod, { forWallet: FeePaymentMethodGetter; circuits: number }> =
91
- {
92
- // eslint-disable-next-line camelcase
93
- bridged_fee_juice: {
94
- forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
95
- circuits: 2, // FeeJuice claim + kernel inner
96
- },
97
- // eslint-disable-next-line camelcase
98
- private_fpc: {
99
- forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
100
- circuits:
101
- 2 + // FPC entrypoint + kernel inner
102
- 2 + // BananaCoin transfer_to_public + kernel inner
103
- 2 + // Account verify_private_authwit + kernel inner
104
- 2, // BananaCoin prepare_private_balance_increase + kernel inner
105
- },
106
- // eslint-disable-next-line camelcase
107
- sponsored_fpc: {
108
- forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
109
- circuits: 2, // Sponsored FPC sponsor_unconditionally + kernel inner
110
- },
111
- // eslint-disable-next-line camelcase
112
- fee_juice: {
113
- forWallet: () => Promise.resolve(undefined),
114
- circuits: 0,
115
- },
116
- };
95
+ // `apps` is the number of private function calls contributed by this payment method.
96
+ // Each app produces one execution step at proving time; the orchestrator additionally produces
97
+ // one kernel step per batch of N apps (see `expectedExecutionSteps` in `benchmark.ts`).
98
+ public paymentMethods: Record<BenchmarkingFeePaymentMethod, { forWallet: FeePaymentMethodGetter; apps: number }> = {
99
+ // eslint-disable-next-line camelcase
100
+ bridged_fee_juice: {
101
+ forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
102
+ apps: 1, // FeeJuice claim
103
+ },
104
+ // eslint-disable-next-line camelcase
105
+ private_fpc: {
106
+ forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
107
+ apps:
108
+ 1 + // FPC entrypoint
109
+ 1 + // BananaCoin transfer_to_public
110
+ 1 + // Account verify_private_authwit
111
+ 1, // BananaCoin prepare_private_balance_increase
112
+ },
113
+ // eslint-disable-next-line camelcase
114
+ sponsored_fpc: {
115
+ forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
116
+ apps: 1, // Sponsored FPC sponsor_unconditionally
117
+ },
118
+ // eslint-disable-next-line camelcase
119
+ fee_juice: {
120
+ forWallet: () => Promise.resolve(undefined),
121
+ apps: 0,
122
+ },
123
+ };
117
124
 
118
125
  public config: ClientFlowsConfig;
119
126
 
@@ -122,7 +129,7 @@ export class ClientFlowsBenchmark {
122
129
 
123
130
  constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs> = {}) {
124
131
  this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
125
- this.setupOptions = { startProverNode: true, ...setupOptions };
132
+ this.setupOptions = { ...AUTOMINE_E2E_OPTS, startProverNode: true, ...setupOptions };
126
133
  this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
127
134
  ProxyLogger.create();
128
135
  this.proxyLogger = ProxyLogger.getInstance();
@@ -130,24 +137,28 @@ export class ClientFlowsBenchmark {
130
137
 
131
138
  async setup() {
132
139
  this.logger.info('Setting up subsystems from fresh');
133
- this.context = await setup(0, {
140
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
141
+ // BananaCoin is the codegen'd TestToken here, so the allowlist must key on its class, not canonical Token's.
142
+ const tokenAllowList = await getTokenAllowedSetupFunctions(BananaCoin.artifact);
143
+ this.context = await setup(2, {
134
144
  ...this.setupOptions,
135
145
  fundSponsoredFPC: true,
136
- skipAccountDeployment: true,
137
146
  l1ContractsArgs: this.setupOptions,
147
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
138
148
  });
139
149
  await this.applyBaseSetup();
140
150
 
141
- await this.context.aztecNodeService!.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
151
+ await this.context.aztecNodeService.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
142
152
 
143
153
  const rollupContract = RollupContract.getFromConfig(this.context.config);
144
- this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider!, this.logger, 200).start();
154
+ this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
145
155
 
146
156
  return this;
147
157
  }
148
158
 
149
159
  async teardown() {
150
160
  await this.chainMonitor.stop();
161
+ await this.userWallet?.stop();
151
162
  await teardown(this.context);
152
163
  }
153
164
 
@@ -161,15 +172,15 @@ export class ClientFlowsBenchmark {
161
172
 
162
173
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
163
174
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
164
- const balanceBefore = await this.bananaCoin.methods
175
+ const { result: balanceBefore } = await this.bananaCoin.methods
165
176
  .balance_of_private(address)
166
- .simulate({ from: this.adminAddress });
177
+ .simulate({ from: address });
167
178
 
168
179
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
169
180
 
170
- const balanceAfter = await this.bananaCoin.methods
181
+ const { result: balanceAfter } = await this.bananaCoin.methods
171
182
  .balance_of_private(address)
172
- .simulate({ from: this.adminAddress });
183
+ .simulate({ from: address });
173
184
  expect(balanceAfter).toEqual(balanceBefore + amount);
174
185
  }
175
186
 
@@ -179,7 +190,7 @@ export class ClientFlowsBenchmark {
179
190
 
180
191
  let benchysPrivateSigningKey;
181
192
  if (type === 'schnorr') {
182
- benchysPrivateSigningKey = deriveSigningKey(benchysSecret);
193
+ benchysPrivateSigningKey = GrumpkinScalar.random();
183
194
  return wallet.createSchnorrAccount(benchysSecret, salt, benchysPrivateSigningKey);
184
195
  } else if (type === 'ecdsar1') {
185
196
  benchysPrivateSigningKey = randomBytes(32);
@@ -196,25 +207,16 @@ export class ClientFlowsBenchmark {
196
207
 
197
208
  async applyInitialAccounts() {
198
209
  this.logger.info('Applying initial accounts setup');
199
- const { deployedAccounts } = await deployAccounts(
200
- 2,
201
- this.logger,
202
- )({
203
- wallet: this.context.wallet,
204
- initialFundedAccounts: this.context.initialFundedAccounts,
205
- });
206
-
207
- const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
210
+ const [adminAddress, sequencerAddress] = this.context.accounts;
208
211
 
209
212
  this.adminWallet = this.context.wallet;
210
- this.aztecNode = this.context.aztecNodeService!;
213
+ this.aztecNode = this.context.aztecNodeService;
211
214
  this.cheatCodes = this.context.cheatCodes;
212
215
 
213
216
  this.adminAddress = adminAddress;
214
217
  this.sequencerAddress = sequencerAddress;
215
218
 
216
- const canonicalFeeJuice = await getCanonicalFeeJuice();
217
- this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
219
+ this.feeJuiceContract = FeeJuiceContract.withWallet(this.adminWallet);
218
220
  this.coinbase = EthAddress.random();
219
221
 
220
222
  const userPXEConfig = getPXEConfig();
@@ -227,17 +229,38 @@ export class ClientFlowsBenchmark {
227
229
  loggers: {
228
230
  prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
229
231
  },
232
+ // The benchmark measures steady-state app cost, not first-send discovery cost. Reproduce the pre-handshake-default
233
+ // behavior of unconstrained delivery: derive the tagging secret from the (sender, recipient) key pair via ECDH
234
+ // instead of taking the current default (a non-interactive handshake, which injects two extra private app
235
+ // executions and a nullifier per cold chain). Constrained delivery is unaffected: the Noir circuit rejects
236
+ // address-derived for constrained, so the hook falls through to a handshake there.
237
+ hooks: {
238
+ resolveTaggingSecretStrategy: ({ deliveryMode }) =>
239
+ Promise.resolve(
240
+ deliveryMode === AppTaggingSecretKind.UNCONSTRAINED
241
+ ? { type: 'address-derived' }
242
+ : { type: 'non-interactive-handshake' },
243
+ ),
244
+ },
230
245
  });
231
246
  }
232
247
 
233
248
  async applySetupFeeJuice() {
234
249
  this.logger.info('Applying fee juice setup');
235
- this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
250
+ this.feeJuiceContract = FeeJuiceContract.withWallet(this.adminWallet);
236
251
 
237
252
  this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
238
- aztecNode: this.context.aztecNodeService!,
239
- aztecNodeAdmin: this.context.aztecNodeService!,
240
- l1Client: this.context.deployL1ContractsValues.l1Client,
253
+ aztecNode: this.context.aztecNodeService,
254
+ aztecNodeAdmin: this.context.aztecNodeService,
255
+ // Bridge from a dedicated L1 account so its direct writes don't race the sequencer publisher's
256
+ // txs on the deployer account (see L1_DIRECT_WRITE_ACCOUNT_INDEX).
257
+ l1Client: createExtendedL1Client(
258
+ this.context.config.l1RpcUrls,
259
+ MNEMONIC,
260
+ undefined,
261
+ undefined,
262
+ L1_DIRECT_WRITE_ACCOUNT_INDEX,
263
+ ),
241
264
  wallet: this.adminWallet,
242
265
  logger: this.logger,
243
266
  });
@@ -251,7 +274,9 @@ export class ClientFlowsBenchmark {
251
274
  'BC',
252
275
  'BC',
253
276
  18n,
254
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
277
+ ).send({
278
+ from: this.adminAddress,
279
+ });
255
280
  this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
256
281
  this.bananaCoin = bananaCoin;
257
282
  this.bananaCoinInstance = bananaCoinInstance;
@@ -259,13 +284,15 @@ export class ClientFlowsBenchmark {
259
284
 
260
285
  async applyDeployCandyBarToken() {
261
286
  this.logger.info('Applying candy bar token deployment');
262
- const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(
287
+ const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TestTokenContract.deploy(
263
288
  this.adminWallet,
264
289
  this.adminAddress,
265
290
  'CBC',
266
291
  'CBC',
267
292
  18n,
268
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
293
+ ).send({
294
+ from: this.adminAddress,
295
+ });
269
296
  this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
270
297
  this.candyBarCoin = candyBarCoin;
271
298
  this.candyBarCoinInstance = candyBarCoinInstance;
@@ -281,7 +308,9 @@ export class ClientFlowsBenchmark {
281
308
  this.adminWallet,
282
309
  bananaCoin.address,
283
310
  this.adminAddress,
284
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
311
+ ).send({
312
+ from: this.adminAddress,
313
+ });
285
314
 
286
315
  this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
287
316
 
@@ -325,18 +354,17 @@ export class ClientFlowsBenchmark {
325
354
 
326
355
  public async createAndFundBenchmarkingAccountOnUserWallet(accountType: AccountType) {
327
356
  const benchysAccountManager = await this.createBenchmarkingAccountManager(this.adminWallet, accountType);
328
- const benchysAccount = await benchysAccountManager.getAccount();
329
357
  const benchysAddress = benchysAccountManager.address;
330
358
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
331
359
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
332
360
  await behchysDeployMethod.send({
333
- from: AztecAddress.ZERO,
361
+ from: NO_FROM,
334
362
  fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
335
363
  });
336
364
  // Register benchy on the user's Wallet, where we're going to be interacting from
337
365
  const accountManager = await this.userWallet.createAccount({
338
- secret: benchysAccount.getSecretKey(),
339
- salt: new Fr(benchysAccount.salt),
366
+ secret: benchysAccountManager.getSecretKey(),
367
+ salt: new Fr(benchysAccountManager.getInstance().salt),
340
368
  contract: benchysAccountManager.getAccountContract(),
341
369
  });
342
370
  return accountManager.address;
@@ -344,19 +372,21 @@ export class ClientFlowsBenchmark {
344
372
 
345
373
  public async applyDeployAmm() {
346
374
  this.logger.info('Applying AMM deployment');
347
- const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(
375
+ const { contract: liquidityToken, instance: liquidityTokenInstance } = await TestTokenContract.deploy(
348
376
  this.adminWallet,
349
377
  this.adminAddress,
350
378
  'LPT',
351
379
  'LPT',
352
380
  18n,
353
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
381
+ ).send({
382
+ from: this.adminAddress,
383
+ });
354
384
  const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
355
385
  this.adminWallet,
356
386
  this.bananaCoin.address,
357
387
  this.candyBarCoin.address,
358
388
  liquidityToken.address,
359
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
389
+ ).send({ from: this.adminAddress });
360
390
  this.logger.info(`AMM deployed at ${amm.address}`);
361
391
  await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
362
392
  this.liquidityToken = liquidityToken;
@@ -373,8 +403,9 @@ export class ClientFlowsBenchmark {
373
403
  public async getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress) {
374
404
  // The private fee paying method assembled on the app side requires knowledge of the maximum
375
405
  // fee the user is willing to pay
376
- const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
377
- const gasSettings = GasSettings.default({ maxFeesPerGas });
406
+ const maxFeesPerGas = await getPaddedMaxFeesPerGas(this.aztecNode);
407
+ const gasLimits = Gas.from((await this.aztecNode.getNodeInfo()).txsLimits.gas);
408
+ const gasSettings = GasSettings.fallback({ gasLimits, maxFeesPerGas });
378
409
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
379
410
  }
380
411
 
@@ -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
  };
@@ -51,6 +51,7 @@ async function main() {
51
51
  // TODO(AD) do we still want to take this from witness.json?
52
52
  witness: witnessStack[i],
53
53
  vk: stepsFromFile[i].vk,
54
+ kind: stepsFromFile[i].kind,
54
55
  timings: {
55
56
  witgen: step.timings.witgen,
56
57
  gateCount: step.timings.gateCount,