@aztec/end-to-end 0.0.1-commit.2f68f620 → 0.0.1-commit.321f6a9

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 (274) hide show
  1. package/README.md +215 -27
  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 +18 -40
  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 +22 -39
  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 +1 -1
  25. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  26. package/dest/bench/client_flows/benchmark.js +3 -1
  27. package/dest/bench/client_flows/client_flows_benchmark.d.ts +4 -4
  28. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  29. package/dest/bench/client_flows/client_flows_benchmark.js +31 -19
  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 +95 -6
  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/e2e_prover_test.d.ts +12 -9
  40. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  41. package/dest/fixtures/e2e_prover_test.js +48 -28
  42. package/dest/fixtures/fixtures.d.ts +19 -10
  43. package/dest/fixtures/fixtures.d.ts.map +1 -1
  44. package/dest/fixtures/fixtures.js +26 -11
  45. package/dest/fixtures/ha_setup.d.ts +3 -3
  46. package/dest/fixtures/ha_setup.d.ts.map +1 -1
  47. package/dest/fixtures/ha_setup.js +4 -1
  48. package/dest/fixtures/index.d.ts +2 -1
  49. package/dest/fixtures/index.d.ts.map +1 -1
  50. package/dest/fixtures/index.js +1 -0
  51. package/dest/fixtures/setup.d.ts +48 -42
  52. package/dest/fixtures/setup.d.ts.map +1 -1
  53. package/dest/fixtures/setup.js +194 -229
  54. package/dest/fixtures/setup_p2p_test.d.ts +1 -1
  55. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  56. package/dest/fixtures/setup_p2p_test.js +3 -3
  57. package/dest/fixtures/standard_contracts_genesis.d.ts +16 -0
  58. package/dest/fixtures/standard_contracts_genesis.d.ts.map +1 -0
  59. package/dest/fixtures/standard_contracts_genesis.js +25 -0
  60. package/dest/fixtures/timing.d.ts +42 -0
  61. package/dest/fixtures/timing.d.ts.map +1 -0
  62. package/dest/fixtures/timing.js +72 -0
  63. package/dest/fixtures/token_utils.d.ts +22 -4
  64. package/dest/fixtures/token_utils.d.ts.map +1 -1
  65. package/dest/fixtures/token_utils.js +21 -1
  66. package/dest/fixtures/utils.d.ts +2 -2
  67. package/dest/fixtures/utils.d.ts.map +1 -1
  68. package/dest/fixtures/utils.js +1 -1
  69. package/dest/fixtures/wait_helpers.d.ts +135 -0
  70. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  71. package/dest/fixtures/wait_helpers.js +154 -0
  72. package/dest/forward-compatibility/wallet_service.js +3 -3
  73. package/dest/multi-node/block-production/setup.d.ts +97 -0
  74. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  75. package/dest/multi-node/block-production/setup.js +158 -0
  76. package/dest/multi-node/governance/setup.d.ts +67 -0
  77. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  78. package/dest/multi-node/governance/setup.js +126 -0
  79. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  80. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  81. package/dest/multi-node/multi_node_test_context.js +347 -0
  82. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  83. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  84. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  85. package/dest/multi-node/slashing/setup.d.ts +167 -0
  86. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  87. package/dest/multi-node/slashing/setup.js +275 -0
  88. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +10 -2
  89. package/dest/p2p/p2p_network.d.ts.map +1 -0
  90. package/dest/{e2e_p2p → p2p}/p2p_network.js +41 -16
  91. package/dest/p2p/reqresp/utils.d.ts +19 -0
  92. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  93. package/dest/{e2e_p2p → p2p}/reqresp/utils.js +4 -17
  94. package/dest/p2p/shared.d.ts +72 -0
  95. package/dest/p2p/shared.d.ts.map +1 -0
  96. package/dest/p2p/shared.js +212 -0
  97. package/dest/shared/cross_chain_test_harness.d.ts +3 -3
  98. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  99. package/dest/shared/cross_chain_test_harness.js +24 -16
  100. package/dest/shared/gas_portal_test_harness.d.ts +1 -1
  101. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  102. package/dest/shared/gas_portal_test_harness.js +8 -5
  103. package/dest/shared/submit-transactions.d.ts +1 -1
  104. package/dest/shared/submit-transactions.d.ts.map +1 -1
  105. package/dest/shared/submit-transactions.js +12 -5
  106. package/dest/shared/timing_env.d.js +5 -0
  107. package/dest/shared/timing_env.js +365 -0
  108. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  109. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  110. package/dest/shared/uniswap_l1_l2.js +1 -6
  111. package/dest/shared/wait_for_l1_to_l2_message.js +1 -1
  112. package/dest/simulators/lending_simulator.js +1 -1
  113. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  114. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  115. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  116. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  117. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  118. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  119. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  120. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  121. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +17 -4
  122. package/dest/single-node/fees/fees_test.d.ts +95 -0
  123. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  124. package/dest/{e2e_fees → single-node/fees}/fees_test.js +126 -60
  125. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  126. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  127. package/dest/single-node/l1-reorgs/setup.js +57 -0
  128. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  129. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  130. package/dest/single-node/partial-proofs/setup.js +5 -0
  131. package/dest/single-node/proving/setup.d.ts +5 -0
  132. package/dest/single-node/proving/setup.d.ts.map +1 -0
  133. package/dest/single-node/proving/setup.js +5 -0
  134. package/dest/single-node/recovery/setup.d.ts +5 -0
  135. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  136. package/dest/single-node/recovery/setup.js +5 -0
  137. package/dest/single-node/setup.d.ts +49 -0
  138. package/dest/single-node/setup.d.ts.map +1 -0
  139. package/dest/single-node/setup.js +56 -0
  140. package/dest/single-node/single_node_test_context.d.ts +374 -0
  141. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  142. package/dest/single-node/single_node_test_context.js +847 -0
  143. package/dest/spartan/setup_test_wallets.d.ts +1 -1
  144. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  145. package/dest/spartan/setup_test_wallets.js +19 -9
  146. package/dest/spartan/tx_metrics.d.ts +10 -1
  147. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  148. package/dest/spartan/tx_metrics.js +32 -0
  149. package/dest/test-wallet/test_wallet.d.ts +23 -3
  150. package/dest/test-wallet/test_wallet.d.ts.map +1 -1
  151. package/dest/test-wallet/test_wallet.js +56 -9
  152. package/dest/test-wallet/utils.d.ts +36 -1
  153. package/dest/test-wallet/utils.d.ts.map +1 -1
  154. package/dest/test-wallet/utils.js +64 -4
  155. package/dest/test-wallet/wallet_worker_script.js +5 -2
  156. package/dest/test-wallet/worker_wallet.d.ts +5 -5
  157. package/dest/test-wallet/worker_wallet.d.ts.map +1 -1
  158. package/dest/test-wallet/worker_wallet.js +5 -3
  159. package/dest/test-wallet/worker_wallet_schema.d.ts +3 -159
  160. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
  161. package/dest/test-wallet/worker_wallet_schema.js +2 -1
  162. package/package.json +41 -41
  163. package/src/automine/README.md +60 -0
  164. package/src/automine/automine_test_context.ts +153 -0
  165. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  166. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  167. package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +20 -57
  168. package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +24 -57
  169. package/src/automine/token/token_test_helpers.ts +138 -0
  170. package/src/bench/client_flows/benchmark.ts +3 -1
  171. package/src/bench/client_flows/client_flows_benchmark.ts +45 -26
  172. package/src/bench/client_flows/data_extractor.ts +1 -0
  173. package/src/bench/utils.ts +109 -6
  174. package/src/composed/ha/ha_full_setup.ts +466 -0
  175. package/src/fixtures/e2e_prover_test.ts +60 -47
  176. package/src/fixtures/fixtures.ts +28 -11
  177. package/src/fixtures/ha_setup.ts +7 -3
  178. package/src/fixtures/index.ts +1 -0
  179. package/src/fixtures/setup.ts +245 -290
  180. package/src/fixtures/setup_p2p_test.ts +3 -3
  181. package/src/fixtures/standard_contracts_genesis.ts +28 -0
  182. package/src/fixtures/timing.ts +97 -0
  183. package/src/fixtures/token_utils.ts +39 -4
  184. package/src/fixtures/utils.ts +0 -3
  185. package/src/fixtures/wait_helpers.ts +333 -0
  186. package/src/forward-compatibility/wallet_service.ts +6 -4
  187. package/src/guides/up_quick_start.sh +5 -0
  188. package/src/infra/README.md +12 -0
  189. package/src/multi-node/README.md +96 -0
  190. package/src/multi-node/block-production/setup.ts +272 -0
  191. package/src/multi-node/governance/setup.ts +172 -0
  192. package/src/multi-node/multi_node_test_context.ts +447 -0
  193. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  194. package/src/multi-node/slashing/setup.ts +433 -0
  195. package/src/p2p/README.md +78 -0
  196. package/src/{e2e_p2p → p2p}/p2p_network.ts +40 -13
  197. package/src/{e2e_p2p → p2p}/reqresp/utils.ts +5 -16
  198. package/src/p2p/shared.ts +329 -0
  199. package/src/shared/cross_chain_test_harness.ts +22 -13
  200. package/src/shared/gas_portal_test_harness.ts +13 -5
  201. package/src/shared/submit-transactions.ts +13 -5
  202. package/src/shared/timing_env.d.mts +39 -0
  203. package/src/shared/timing_env.mjs +363 -0
  204. package/src/shared/uniswap_l1_l2.ts +1 -8
  205. package/src/shared/wait_for_l1_to_l2_message.ts +1 -1
  206. package/src/simulators/lending_simulator.ts +1 -1
  207. package/src/single-node/README.md +66 -0
  208. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  209. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  210. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +19 -5
  211. package/src/{e2e_fees → single-node/fees}/fees_test.ts +143 -70
  212. package/src/single-node/l1-reorgs/setup.ts +93 -0
  213. package/src/single-node/partial-proofs/setup.ts +8 -0
  214. package/src/single-node/proving/setup.ts +15 -0
  215. package/src/single-node/recovery/setup.ts +8 -0
  216. package/src/single-node/setup.ts +63 -0
  217. package/src/single-node/single_node_test_context.ts +1058 -0
  218. package/src/spartan/setup_test_wallets.ts +24 -9
  219. package/src/spartan/tx_metrics.ts +26 -0
  220. package/src/test-wallet/test_wallet.ts +60 -10
  221. package/src/test-wallet/utils.ts +102 -5
  222. package/src/test-wallet/wallet_worker_script.ts +6 -3
  223. package/src/test-wallet/worker_wallet.ts +10 -12
  224. package/src/test-wallet/worker_wallet_schema.ts +3 -2
  225. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -56
  226. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  227. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -58
  228. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  229. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -161
  230. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
  231. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  232. package/dest/e2e_deploy_contract/deploy_test.js +0 -51
  233. package/dest/e2e_epochs/epochs_test.d.ts +0 -125
  234. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  235. package/dest/e2e_epochs/epochs_test.js +0 -460
  236. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  237. package/dest/e2e_fees/fees_test.d.ts +0 -91
  238. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  239. package/dest/e2e_l1_publisher/write_json.d.ts +0 -11
  240. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  241. package/dest/e2e_l1_publisher/write_json.js +0 -56
  242. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  243. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  244. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
  245. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  246. package/dest/e2e_nested_contract/nested_contract_test.js +0 -55
  247. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  248. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  249. package/dest/e2e_p2p/inactivity_slash_test.js +0 -137
  250. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  251. package/dest/e2e_p2p/reqresp/utils.d.ts +0 -22
  252. package/dest/e2e_p2p/reqresp/utils.d.ts.map +0 -1
  253. package/dest/e2e_p2p/shared.d.ts +0 -75
  254. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  255. package/dest/e2e_p2p/shared.js +0 -217
  256. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +0 -2
  257. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +0 -1
  258. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +0 -1
  259. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -44
  260. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  261. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -231
  262. package/src/e2e_deploy_contract/deploy_test.ts +0 -86
  263. package/src/e2e_epochs/epochs_test.ts +0 -575
  264. package/src/e2e_l1_publisher/write_json.ts +0 -77
  265. package/src/e2e_nested_contract/nested_contract_test.ts +0 -77
  266. package/src/e2e_p2p/inactivity_slash_test.ts +0 -180
  267. package/src/e2e_p2p/shared.ts +0 -332
  268. /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.js +0 -0
  269. /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.js +0 -0
  270. /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
  271. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof.json +0 -0
  272. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.ts +0 -0
  273. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.ts +0 -0
  274. /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
@@ -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
+ }
@@ -73,4 +73,4 @@ export declare function convertProfileToGHBenchmark(benchmark: ClientFlowBenchma
73
73
  export declare function expectedExecutionSteps(apps: number): number;
74
74
  export declare function captureProfile(label: string, interaction: ContractFunctionInteraction | DeployMethod, opts: Omit<ProfileInteractionOptions & DeployOptions, 'profileMode'>, expectedSteps?: number): Promise<import("@aztec/stdlib/tx").TxProfileResult>;
75
75
  export {};
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2htYXJrLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2JlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFDbEIsS0FBSyx5QkFBeUIsRUFDL0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFNMUIsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJL0QsUUFBQSxNQUFNLFFBQVEsb0ZBQXFGLENBQUM7QUFDcEcsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLEdBQUc7SUFDaEIsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUNmLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQztDQUNYLENBQUM7QUFFRixRQUFBLE1BQU0sVUFBVSwwS0FhTixDQUFDO0FBRVgsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTVDLEtBQUssZUFBZSxHQUFHO0tBQ3BCLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTTtDQUN4QixDQUFDO0FBRUYscUJBQWEsV0FBVztJQUN0QixPQUFP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
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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"}
@@ -254,7 +254,9 @@ export function convertProfileToGHBenchmark(benchmark) {
254
254
  * not match this formula.
255
255
  */ export function expectedExecutionSteps(apps) {
256
256
  const kernels = Math.ceil(apps / MAX_APPS_PER_KERNEL);
257
- return apps + kernels + 1 /* final reset */ + 1 /* tail */ + 1 /* hiding */ ;
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 */ ;
258
260
  }
259
261
  export async function captureProfile(label, interaction, opts, expectedSteps) {
260
262
  // Make sure the proxy logger starts from a clean slate
@@ -12,7 +12,7 @@ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
12
12
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
13
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;
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2Zsb3dzX2JlbmNobWFyay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JlbmNoL2NsaWVudF9mbG93cy9jbGllbnRfZmxvd3NfYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBR2pGLE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTVGLE9BQU8sS0FB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
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2Zsb3dzX2JlbmNobWFyay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JlbmNoL2NsaWVudF9mbG93cy9jbGllbnRfZmxvd3NfYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBR2pGLE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUk3RyxPQUFP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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":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,KAAK,gBAAgB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChH,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAiC,MAAM,sBAAsB,CAAC;AAGjF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAE5F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,IAAI,UAAU,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAI7G,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAU1E,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAmB,MAAM,yBAAyB,CAAC;AAGnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAuC,MAAM,aAAa,CAAC;AAI1F,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAChD,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;AACrH,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;AAE/G,qBAAa,oBAAoB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAG,SAAS,CAAC;IACtB,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,EAAG,eAAe,CAAC;IAC1B,YAAY,EAAG,YAAY,CAAC;IAC5B,yBAAyB,EAAG,sBAAsB,CAAC;IACnD,WAAW,EAAG,UAAU,CAAC;IAGzB,YAAY,EAAG,YAAY,CAAC;IAG5B,gBAAgB,EAAG,YAAY,CAAC;IAChC,QAAQ,EAAG,UAAU,CAAC;IAGtB,gBAAgB,EAAG,gBAAgB,CAAC;IAEpC,UAAU,EAAG,UAAU,CAAC;IACxB,kBAAkB,EAAG,2BAA2B,CAAC;IACjD,SAAS,EAAG,WAAW,CAAC;IACxB,iBAAiB,EAAG,2BAA2B,CAAC;IAEhD,YAAY,EAAG,iBAAiB,CAAC;IACjC,oBAAoB,EAAG,2BAA2B,CAAC;IAEnD,GAAG,EAAG,WAAW,CAAC;IAClB,WAAW,EAAG,2BAA2B,CAAC;IAE1C,cAAc,EAAG,iBAAiB,CAAC;IACnC,sBAAsB,EAAG,2BAA2B,CAAC;IAErD,YAAY,EAAG,oBAAoB,CAAC;IACpC,oBAAoB,EAAG,2BAA2B,CAAC;IAGnD,UAAU,EAAG,UAAU,CAAC;IAExB,UAAU,UAAyD;IAKnE,cAAc,EAAE,MAAM,CAAC,4BAA4B,EAAE;QAAE,SAAS,EAAE,sBAAsB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAyB9G;IAEK,MAAM,EAAE,iBAAiB,CAAC;IAEjC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAqD;IAEzE,YAAY,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,GAAE,OAAO,CAAC,YAAY,GAAG,0BAA0B,CAAM,EAMnG;IAEK,KAAK,kBAmBV;IAEK,QAAQ,kBAIb;IAEK,qBAAqB,CAAC,OAAO,EAAE,YAAY,iBAMhD;IAED,sFAAsF;IAChF,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,iBAW7D;IAED,gCAAgC,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,GAAG,SAAS,4DAc/E;IAEY,cAAc,kBAG1B;IAEK,oBAAoB,kBAuCzB;IAEK,kBAAkB,kBAmBvB;IAEK,sBAAsB,kBAc3B;IAEK,wBAAwB,kBAc7B;IAEY,aAAa,kBAoBzB;IAEK,uBAAuB,kBAM5B;IAEY,2BAA2B,CAAC,KAAK,EAAE,YAAY,kCAsB3D;IAEY,4CAA4C,CAAC,WAAW,EAAE,WAAW,yBAgBjF;IAEY,cAAc,kBAuB1B;IAEY,wCAAwC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,2CAG1F;IAEY,mCAAmC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,oCAOpF;IAEM,qCAAqC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,sCAElF;CACF"}
@@ -9,6 +9,7 @@ import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
9
9
  import { ChainMonitor } from '@aztec/ethereum/test';
10
10
  import { randomBytes } from '@aztec/foundation/crypto/random';
11
11
  import { Fr } from '@aztec/foundation/curves/bn254';
12
+ import { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
12
13
  import { EthAddress } from '@aztec/foundation/eth-address';
13
14
  import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
14
15
  import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
@@ -16,14 +17,14 @@ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
16
17
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
17
18
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
18
19
  import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
19
- import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
20
+ import { TestTokenContract as BananaCoin, TestTokenContract } from '@aztec/noir-test-contracts.js/TestToken';
20
21
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
21
22
  import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
22
23
  import { getPXEConfig } from '@aztec/pxe/server';
23
- import { GasSettings } from '@aztec/stdlib/gas';
24
- import { deriveSigningKey } from '@aztec/stdlib/keys';
25
- import { AUTOMINE_E2E_OPTS, MNEMONIC, getPaddedMaxFeesPerGas } from '../../fixtures/fixtures.js';
26
- import { deployAccounts, setup, teardown } from '../../fixtures/setup.js';
24
+ import { Gas, GasSettings } from '@aztec/stdlib/gas';
25
+ import { AppTaggingSecretKind } from '@aztec/stdlib/logs';
26
+ import { AUTOMINE_E2E_OPTS, L1_DIRECT_WRITE_ACCOUNT_INDEX, MNEMONIC, getPaddedMaxFeesPerGas } from '../../fixtures/fixtures.js';
27
+ import { setup, teardown } from '../../fixtures/setup.js';
27
28
  import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
28
29
  import { setupSponsoredFPC } from '../../fixtures/utils.js';
29
30
  import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
@@ -115,11 +116,11 @@ export class ClientFlowsBenchmark {
115
116
  async setup() {
116
117
  this.logger.info('Setting up subsystems from fresh');
117
118
  // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
118
- const tokenAllowList = await getTokenAllowedSetupFunctions();
119
- this.context = await setup(0, {
119
+ // BananaCoin is the codegen'd TestToken here, so the allowlist must key on its class, not canonical Token's.
120
+ const tokenAllowList = await getTokenAllowedSetupFunctions(BananaCoin.artifact);
121
+ this.context = await setup(2, {
120
122
  ...this.setupOptions,
121
123
  fundSponsoredFPC: true,
122
- skipAccountDeployment: true,
123
124
  l1ContractsArgs: this.setupOptions,
124
125
  txPublicSetupAllowListExtend: [
125
126
  ...this.setupOptions.txPublicSetupAllowListExtend ?? [],
@@ -162,7 +163,7 @@ export class ClientFlowsBenchmark {
162
163
  const salt = Fr.random();
163
164
  let benchysPrivateSigningKey;
164
165
  if (type === 'schnorr') {
165
- benchysPrivateSigningKey = deriveSigningKey(benchysSecret);
166
+ benchysPrivateSigningKey = GrumpkinScalar.random();
166
167
  return wallet.createSchnorrAccount(benchysSecret, salt, benchysPrivateSigningKey);
167
168
  } else if (type === 'ecdsar1') {
168
169
  benchysPrivateSigningKey = randomBytes(32);
@@ -177,11 +178,7 @@ export class ClientFlowsBenchmark {
177
178
  }
178
179
  async applyInitialAccounts() {
179
180
  this.logger.info('Applying initial accounts setup');
180
- const { deployedAccounts } = await deployAccounts(2, this.logger)({
181
- wallet: this.context.wallet,
182
- initialFundedAccounts: this.context.initialFundedAccounts
183
- });
184
- const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
181
+ const [adminAddress, sequencerAddress] = this.context.accounts;
185
182
  this.adminWallet = this.context.wallet;
186
183
  this.aztecNode = this.context.aztecNodeService;
187
184
  this.cheatCodes = this.context.cheatCodes;
@@ -198,6 +195,18 @@ export class ClientFlowsBenchmark {
198
195
  this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
199
196
  loggers: {
200
197
  prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
198
+ },
199
+ // The benchmark measures steady-state app cost, not first-send discovery cost. Reproduce the pre-handshake-default
200
+ // behavior of unconstrained delivery: derive the tagging secret from the (sender, recipient) key pair via ECDH
201
+ // instead of taking the current default (a non-interactive handshake, which injects two extra private app
202
+ // executions and a nullifier per cold chain). Constrained delivery is unaffected: the Noir circuit rejects
203
+ // address-derived for constrained, so the hook falls through to a handshake there.
204
+ hooks: {
205
+ resolveTaggingSecretStrategy: ({ deliveryMode })=>Promise.resolve(deliveryMode === AppTaggingSecretKind.UNCONSTRAINED ? {
206
+ type: 'address-derived'
207
+ } : {
208
+ type: 'non-interactive-handshake'
209
+ })
201
210
  }
202
211
  });
203
212
  }
@@ -207,7 +216,9 @@ export class ClientFlowsBenchmark {
207
216
  this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
208
217
  aztecNode: this.context.aztecNodeService,
209
218
  aztecNodeAdmin: this.context.aztecNodeService,
210
- l1Client: this.context.deployL1ContractsValues.l1Client,
219
+ // Bridge from a dedicated L1 account so its direct writes don't race the sequencer publisher's
220
+ // txs on the deployer account (see L1_DIRECT_WRITE_ACCOUNT_INDEX).
221
+ l1Client: createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC, undefined, undefined, L1_DIRECT_WRITE_ACCOUNT_INDEX),
211
222
  wallet: this.adminWallet,
212
223
  logger: this.logger
213
224
  });
@@ -223,7 +234,7 @@ export class ClientFlowsBenchmark {
223
234
  }
224
235
  async applyDeployCandyBarToken() {
225
236
  this.logger.info('Applying candy bar token deployment');
226
- const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
237
+ const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TestTokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
227
238
  from: this.adminAddress
228
239
  });
229
240
  this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
@@ -264,7 +275,6 @@ export class ClientFlowsBenchmark {
264
275
  }
265
276
  async createAndFundBenchmarkingAccountOnUserWallet(accountType) {
266
277
  const benchysAccountManager = await this.createBenchmarkingAccountManager(this.adminWallet, accountType);
267
- const benchysAccount = await benchysAccountManager.getAccount();
268
278
  const benchysAddress = benchysAccountManager.address;
269
279
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
270
280
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
@@ -276,7 +286,7 @@ export class ClientFlowsBenchmark {
276
286
  });
277
287
  // Register benchy on the user's Wallet, where we're going to be interacting from
278
288
  const accountManager = await this.userWallet.createAccount({
279
- secret: benchysAccount.getSecretKey(),
289
+ secret: benchysAccountManager.getSecretKey(),
280
290
  salt: new Fr(benchysAccountManager.getInstance().salt),
281
291
  contract: benchysAccountManager.getAccountContract()
282
292
  });
@@ -284,7 +294,7 @@ export class ClientFlowsBenchmark {
284
294
  }
285
295
  async applyDeployAmm() {
286
296
  this.logger.info('Applying AMM deployment');
287
- const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
297
+ const { contract: liquidityToken, instance: liquidityTokenInstance } = await TestTokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
288
298
  from: this.adminAddress
289
299
  });
290
300
  const { contract: amm, instance: ammInstance } = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send({
@@ -307,7 +317,9 @@ export class ClientFlowsBenchmark {
307
317
  // The private fee paying method assembled on the app side requires knowledge of the maximum
308
318
  // fee the user is willing to pay
309
319
  const maxFeesPerGas = await getPaddedMaxFeesPerGas(this.aztecNode);
320
+ const gasLimits = Gas.from((await this.aztecNode.getNodeInfo()).txsLimits.gas);
310
321
  const gasSettings = GasSettings.fallback({
322
+ gasLimits,
311
323
  maxFeesPerGas
312
324
  });
313
325
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
@@ -43,6 +43,7 @@ async function main() {
43
43
  // TODO(AD) do we still want to take this from witness.json?
44
44
  witness: witnessStack[i],
45
45
  vk: stepsFromFile[i].vk,
46
+ kind: stepsFromFile[i].kind,
46
47
  timings: {
47
48
  witgen: step.timings.witgen,
48
49
  gateCount: step.timings.gateCount
@@ -5,7 +5,7 @@ import type { MetricDefinition } from '@aztec/telemetry-client';
5
5
  import type { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
6
6
  import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
7
7
  /**
8
- * Setup for benchmarks. Initializes a remote node with a single account and deploys a benchmark contract.
8
+ * Setup for benchmarks. Initializes a remote node with a funded hardcoded account and deploys a benchmark contract.
9
9
  */
10
10
  export declare function benchmarkSetup(opts: Partial<SetupOptions> & {
11
11
  /** What metrics to export */ metrics: (MetricDefinition | MetricFilter)[];
@@ -13,7 +13,7 @@ export declare function benchmarkSetup(opts: Partial<SetupOptions> & {
13
13
  benchOutput?: string;
14
14
  }): Promise<{
15
15
  telemetry: BenchmarkTelemetryClient;
16
- context: EndToEndContext;
16
+ context: EndToEndContext<unknown>;
17
17
  contract: BenchmarkingContract;
18
18
  sequencer: import("@aztec/sequencer-client").SequencerClient;
19
19
  }>;
@@ -42,4 +42,4 @@ export type GithubActionBenchmarkResult = {
42
42
  export declare function sendTxs(txCount: number, context: EndToEndContext, contract: BenchmarkingContract, heavyPublicCompute?: boolean): Promise<TxHash[]>;
43
43
  export declare function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts): Promise<void>;
44
44
  export {};
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZW5jaC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLEtBQUssUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDbEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBNEMsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU14SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQUV0Rjs7R0FFRztBQUNILHdCQUFzQixjQUFjLENBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUc7SUFDNUIsNkJBQTZCLENBQUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxrRkFBa0Y7SUFDbEYsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3RCOzs7OztHQXlCRjtBQUVELEtBQUssWUFBWSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztJQUN6QixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUdGLE1BQU0sTUFBTSwyQkFBMkIsR0FBRztJQUN4QyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNmLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQW9FRjs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixPQUFPLENBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGVBQWUsRUFDeEIsUUFBUSxFQUFFLG9CQUFvQixFQUM5QixrQkFBa0IsR0FBRSxPQUFlLEdBQ2xDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQVduQjtBQUVELHdCQUFzQixPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEVBQUUsUUFBUSxpQkFJM0YifQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZW5jaC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLEtBQUssUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBNEMsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU14SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQU90Rjs7R0FFRztBQUNILHdCQUFzQixjQUFjLENBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUc7SUFDNUIsNkJBQTZCLENBQUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxrRkFBa0Y7SUFDbEYsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3RCOzs7OztHQWlDRjtBQVVELEtBQUssWUFBWSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztJQUN6QixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUdGLE1BQU0sTUFBTSwyQkFBMkIsR0FBRztJQUN4QyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNmLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQW9FRjs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixPQUFPLENBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGVBQWUsRUFDeEIsUUFBUSxFQUFFLG9CQUFvQixFQUM5QixrQkFBa0IsR0FBRSxPQUFlLEdBQ2xDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQVduQjtBQUVELHdCQUFzQixPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEVBQUUsUUFBUSxpQkFJM0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAEtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,CAAC;IAC3E,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAyBF;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoEF;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAI9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAOtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,CAAC;IAC3E,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAiCF;AAUD,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoEF;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F"}
@@ -1,14 +1,20 @@
1
1
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { BatchCall, NO_WAIT } from '@aztec/aztec.js/contracts';
3
3
  import { waitForTx } from '@aztec/aztec.js/node';
4
+ import { SlotNumber } from '@aztec/foundation/branded-types';
4
5
  import { mean, stdDev, times } from '@aztec/foundation/collection';
5
6
  import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
7
+ import { SequencerState } from '@aztec/sequencer-client';
6
8
  import { mkdirSync, writeFileSync } from 'fs';
7
9
  import path from 'path';
8
10
  import { PIPELINING_SETUP_OPTS } from '../fixtures/fixtures.js';
9
11
  import { setup } from '../fixtures/utils.js';
12
+ const MAX_BENCH_WAIT_BLOCKS = 6;
13
+ const BENCH_FINAL_WAIT_TIMEOUT_SECONDS = 10;
14
+ const SEQUENCER_IDLE_TIMEOUT_MS = 60_000;
15
+ const DEFAULT_L1_PUBLISHING_TIME_SECONDS = 12;
10
16
  /**
11
- * Setup for benchmarks. Initializes a remote node with a single account and deploys a benchmark contract.
17
+ * Setup for benchmarks. Initializes a remote node with a funded hardcoded account and deploys a benchmark contract.
12
18
  */ export async function benchmarkSetup(opts) {
13
19
  const context = await setup(1, {
14
20
  ...PIPELINING_SETUP_OPTS,
@@ -17,12 +23,19 @@ import { setup } from '../fixtures/utils.js';
17
23
  benchmark: true
18
24
  }
19
25
  });
20
- const defaultAccountAddress = context.accounts[0];
21
- const { contract } = await BenchmarkingContract.deploy(context.wallet).send({
22
- from: defaultAccountAddress
26
+ const [defaultAccountAddress] = context.accounts;
27
+ const sequencer = getSequencerClient(context);
28
+ await waitForSequencerIdle(sequencer.getSequencer());
29
+ const deployment = BenchmarkingContract.deploy(context.wallet);
30
+ const { txHash } = await deployment.send({
31
+ from: defaultAccountAddress,
32
+ wait: NO_WAIT
23
33
  });
34
+ await waitTxs([
35
+ txHash
36
+ ], context);
37
+ const contract = await deployment.register();
24
38
  context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
25
- const sequencer = context.aztecNode.getSequencer();
26
39
  const telemetry = context.telemetryClient;
27
40
  context.logger.warn(`Cleared benchmark data points from setup`);
28
41
  telemetry.clear();
@@ -49,6 +62,13 @@ import { setup } from '../fixtures/utils.js';
49
62
  sequencer
50
63
  };
51
64
  }
65
+ function getSequencerClient(context) {
66
+ const sequencer = context.aztecNode.getSequencer();
67
+ if (!sequencer) {
68
+ throw new Error('Benchmark setup requires a local sequencer');
69
+ }
70
+ return sequencer;
71
+ }
52
72
  function isMetricDefinition(f) {
53
73
  return 'description' in f;
54
74
  }
@@ -137,9 +157,78 @@ function getMetricValues(points) {
137
157
  }
138
158
  export async function waitTxs(txs, context, txWaitOpts) {
139
159
  context.logger.info(`Awaiting ${txs.length} txs to be mined`);
140
- await Promise.all(txs.map((txHash)=>waitForTx(context.aztecNode, txHash, txWaitOpts)));
160
+ await waitTxsWithBlockMining(txs, context, txWaitOpts);
141
161
  context.logger.info(`${txs.length} txs have been mined`);
142
162
  }
163
+ async function waitTxsWithBlockMining(txs, context, txWaitOpts) {
164
+ const sequencer = getSequencerClient(context).getSequencer();
165
+ for(let attempt = 0; attempt <= MAX_BENCH_WAIT_BLOCKS; attempt++){
166
+ if (await haveAllTxsMined(txs, context, txWaitOpts)) {
167
+ await waitForSequencerIdle(sequencer);
168
+ return;
169
+ }
170
+ await waitForSequencerIdle(sequencer);
171
+ context.logger.info('Mining next benchmark block while waiting for txs', {
172
+ attempt,
173
+ txs: txs.length
174
+ });
175
+ await mineNextBenchmarkBlock(context, sequencer);
176
+ }
177
+ await Promise.all(txs.map((txHash)=>waitForTx(context.aztecNode, txHash, {
178
+ ...txWaitOpts,
179
+ timeout: txWaitOpts?.timeout ?? BENCH_FINAL_WAIT_TIMEOUT_SECONDS
180
+ })));
181
+ }
182
+ async function haveAllTxsMined(txs, context, txWaitOpts) {
183
+ const receipts = await Promise.all(txs.map((txHash)=>context.aztecNode.getTxReceipt(txHash)));
184
+ for (const receipt of receipts){
185
+ if (receipt.isDropped()) {
186
+ throw new Error(`Transaction ${receipt.txHash.toString()} was dropped. Reason: ${receipt.error ?? 'unknown'}`);
187
+ }
188
+ if (!receipt.isMined()) {
189
+ return false;
190
+ }
191
+ if (!receipt.hasExecutionSucceeded() && !txWaitOpts?.dontThrowOnRevert) {
192
+ throw new Error(`Transaction ${receipt.txHash.toString()} reverted: ${receipt.executionResult}. Reason: ${receipt.error ?? 'unknown'}`);
193
+ }
194
+ }
195
+ return true;
196
+ }
197
+ async function mineNextBenchmarkBlock(context, sequencer) {
198
+ const l1PublishingTime = BigInt(context.config.l1PublishingTime ?? DEFAULT_L1_PUBLISHING_TIME_SECONDS);
199
+ const currentTimestamp = BigInt(await context.cheatCodes.eth.lastBlockTimestamp());
200
+ let targetSlot = SlotNumber(await context.cheatCodes.rollup.getSlot() + 1);
201
+ let targetTimestamp = await context.cheatCodes.rollup.getTimestampForSlot(targetSlot);
202
+ while(targetTimestamp - l1PublishingTime - 1n <= currentTimestamp){
203
+ targetSlot = SlotNumber(targetSlot + 1);
204
+ targetTimestamp = await context.cheatCodes.rollup.getTimestampForSlot(targetSlot);
205
+ }
206
+ const triggerTimestamp = targetTimestamp - l1PublishingTime - 1n;
207
+ await context.cheatCodes.eth.warp(triggerTimestamp, {
208
+ resetBlockInterval: true
209
+ });
210
+ await context.aztecNode.mineBlock();
211
+ await waitForSequencerIdle(sequencer);
212
+ }
213
+ function waitForSequencerIdle(sequencer, timeout = SEQUENCER_IDLE_TIMEOUT_MS) {
214
+ if (sequencer.status().state === SequencerState.IDLE) {
215
+ return Promise.resolve();
216
+ }
217
+ return new Promise((resolve, reject)=>{
218
+ const timer = setTimeout(()=>{
219
+ sequencer.off('state-changed', handler);
220
+ reject(new Error('Timeout waiting for sequencer IDLE state'));
221
+ }, timeout);
222
+ const handler = (args)=>{
223
+ if (args.newState === SequencerState.IDLE) {
224
+ clearTimeout(timer);
225
+ sequencer.off('state-changed', handler);
226
+ resolve();
227
+ }
228
+ };
229
+ sequencer.on('state-changed', handler);
230
+ });
231
+ }
143
232
  function randomBytesAsBigInts(length) {
144
233
  return [
145
234
  ...Array(length)
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Shared setup for the docker-compose HA full suite.
3
+ *
4
+ * Stands up the complete HA cluster used by `e2e_ha_full.parallel.test.ts` and
5
+ * `e2e_ha_distribute_work.test.ts`: a bootstrap RPC/P2P node plus NODE_COUNT in-proc
6
+ * `AztecNodeService` HA peers that share one PostgreSQL slashing-protection DB and a Web3Signer keystore.
7
+ * Requires the docker-compose HA suite (run_test.sh ha): live Postgres (DATABASE_URL) and Web3Signer
8
+ * sidecar.
9
+ *
10
+ * The suite is split across two files because the "distribute work" test kills nodes as it runs, leaving
11
+ * the cluster unusable; giving it its own file (its own cluster) removes the previous "must run last"
12
+ * ordering contract without changing what any test asserts.
13
+ */
14
+ import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
15
+ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
16
+ import type { Logger } from '@aztec/aztec.js/log';
17
+ import { type AztecNode } from '@aztec/aztec.js/node';
18
+ import { GovernanceProposerContract } from '@aztec/ethereum/contracts';
19
+ import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-aztec-l1-contracts';
20
+ import type { TestDateProvider } from '@aztec/foundation/timer';
21
+ import { TestContract } from '@aztec/noir-test-contracts.js/Test';
22
+ import { TxHash, type TxReceipt } from '@aztec/stdlib/tx';
23
+ import type { GenesisData } from '@aztec/stdlib/world-state';
24
+ import { Pool } from 'pg';
25
+ import { type HADatabaseConfig } from '../../fixtures/ha_setup.js';
26
+ import type { TestWallet } from '../../test-wallet/test_wallet.js';
27
+ export declare const NODE_COUNT = 5;
28
+ export declare const VALIDATOR_COUNT = 4;
29
+ export declare const COMMITTEE_SIZE = 4;
30
+ export declare function registerTestContract(wallet: TestWallet): Promise<TestContract>;
31
+ export declare function submitTriggerTx(wallet: TestWallet, testContract: TestContract, from: AztecAddress): Promise<TxHash>;
32
+ export declare function waitForTriggerTx(node: AztecNode, txHash: TxHash): Promise<TxReceipt>;
33
+ /**
34
+ * Owns the full HA cluster lifecycle and the shared helpers the two HA test files drive it with. Each
35
+ * test file constructs one instance and calls {@link setup} in `beforeAll` / {@link teardown} in
36
+ * `afterAll`; state fields are populated by {@link setup} and read directly by the tests.
37
+ */
38
+ export declare class HaFullTestContext {
39
+ logger: Logger;
40
+ wallet: TestWallet;
41
+ ownerAddress: AztecAddress;
42
+ testContract: TestContract;
43
+ aztecNode: AztecNode;
44
+ config: AztecNodeConfig;
45
+ accounts: AztecAddress[];
46
+ dateProvider: TestDateProvider;
47
+ genesis: GenesisData | undefined;
48
+ haNodePools: Pool[];
49
+ haNodeServices: AztecNodeService[];
50
+ haKeystoreDirs: string[];
51
+ mainPool: Pool;
52
+ databaseConfig: HADatabaseConfig;
53
+ attesterPrivateKeys: `0x${string}`[];
54
+ attesterAddresses: string[];
55
+ publisherPrivateKeys: `0x${string}`[];
56
+ publisherAddresses: string[];
57
+ web3SignerUrl: string;
58
+ deployL1ContractsValues: DeployAztecL1ContractsReturnType;
59
+ governanceProposer: GovernanceProposerContract;
60
+ /** Per-node initial keystore JSON (all 4 attesters, node's own publisher) for restore after reload test */
61
+ initialKeystoreJsons: string[];
62
+ private teardownBootstrap;
63
+ private haSequencersStarted;
64
+ private readonly stoppedHANodeIndexes;
65
+ getSignatureContext: () => {
66
+ chainId: number;
67
+ rollupAddress: EthAddress;
68
+ };
69
+ startHASequencers: () => Promise<void>;
70
+ sendTriggerTx: () => Promise<TxReceipt>;
71
+ stopHANode: (nodeIndex: number) => Promise<void>;
72
+ setup(): Promise<void>;
73
+ teardown(): Promise<void>;
74
+ /** Clean up database state between tests. */
75
+ resetDutiesTable(): Promise<void>;
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFfZnVsbF9zZXR1cC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvc2VkL2hhL2hhX2Z1bGxfc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLGdCQUFnQixFQUEwQixNQUFNLG1CQUFtQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUlsRyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssU0FBUyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFNN0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQztBQUcxQixPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFNdEIsTUFBTSw0QkFBNEIsQ0FBQztBQVFwQyxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxlQUFPLE1BQU0sVUFBVSxJQUFJLENBQUM7QUFDNUIsZUFBTyxNQUFNLGVBQWUsSUFBSSxDQUFDO0FBQ2pDLGVBQU8sTUFBTSxjQUFjLElBQUksQ0FBQztBQVVoQyx3QkFBc0Isb0JBQW9CLENBQUMsTUFBTSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBVXBGO0FBRUQsd0JBQXNCLGVBQWUsQ0FDbkMsTUFBTSxFQUFFLFVBQVUsRUFDbEIsWUFBWSxFQUFFLFlBQVksRUFDMUIsSUFBSSxFQUFFLFlBQVksR0FDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUdqQjtBQUVELHdCQUFzQixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQU0xRjtBQUVEOzs7O0dBSUc7QUFDSCxxQkFBYSxpQkFBaUI7SUFDNUIsTUFBTSxFQUFHLE1BQU0sQ0FBQztJQUNoQixNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLFlBQVksRUFBRyxZQUFZLENBQUM7SUFDNUIsWUFBWSxFQUFHLFlBQVksQ0FBQztJQUM1QixTQUFTLEVBQUcsU0FBUyxDQUFDO0lBQ3RCLE1BQU0sRUFBRyxlQUFlLENBQUM7SUFDekIsUUFBUSxFQUFHLFlBQVksRUFBRSxDQUFDO0lBQzFCLFlBQVksRUFBRyxnQkFBZ0IsQ0FBQztJQUNoQyxPQUFPLEVBQUUsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUVqQyxXQUFXLEVBQUcsSUFBSSxFQUFFLENBQUM7SUFDckIsY0FBYyxFQUFHLGdCQUFnQixFQUFFLENBQUM7SUFDcEMsY0FBYyxFQUFHLE1BQU0sRUFBRSxDQUFDO0lBQzFCLFFBQVEsRUFBRyxJQUFJLENBQUM7SUFDaEIsY0FBYyxFQUFHLGdCQUFnQixDQUFDO0lBQ2xDLG1CQUFtQixFQUFHLEtBQUssTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUN0QyxpQkFBaUIsRUFBRyxNQUFNLEVBQUUsQ0FBQztJQUM3QixvQkFBb0IsRUFBRyxLQUFLLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDdkMsa0JBQWtCLEVBQUcsTUFBTSxFQUFFLENBQUM7SUFDOUIsYUFBYSxFQUFHLE1BQU0sQ0FBQztJQUN2Qix1QkFBdUIsRUFBRyxnQ0FBZ0MsQ0FBQztJQUMzRCxrQkFBa0IsRUFBRywwQkFBMEIsQ0FBQztJQUNoRCwyR0FBMkc7SUFDM0csb0JBQW9CLEVBQUcsTUFBTSxFQUFFLENBQUM7SUFFaEMsT0FBTyxDQUFDLGlCQUFpQixDQUF1QztJQUNoRSxPQUFPLENBQUMsbUJBQW1CLENBQVM7SUFDcEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBcUI7SUFFMUQsbUJBQW1COzs7TUFHaEI7SUFFSCxpQkFBaUIsc0JBYWY7SUFFRixhQUFhLDJCQUlYO0lBRUYsVUFBVSx1Q0FRUjtJQUVJLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBc08zQjtJQUVLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBdUQ5QjtJQUVELDZDQUE2QztJQUN2QyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBT3RDO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ha_full_setup.d.ts","sourceRoot":"","sources":["../../../src/composed/ha/ha_full_setup.ts"],"names":[],"mappings":"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"}