@aztec/end-to-end 0.0.1-commit.96dac018d → 0.0.1-commit.9a89641

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