@aztec/end-to-end 0.0.1-commit.f2ce05ee → 0.0.1-commit.f5a9928

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 (351) 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 +45 -48
  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 +43 -48
  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 -56
  30. package/dest/bench/utils.d.ts +3 -3
  31. package/dest/bench/utils.d.ts.map +1 -1
  32. package/dest/bench/utils.js +102 -8
  33. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  34. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  35. package/dest/composed/ha/ha_full_setup.js +383 -0
  36. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  37. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  38. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  39. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  40. package/dest/fixtures/authwit_proxy.js +34 -0
  41. package/dest/fixtures/e2e_prover_test.d.ts +18 -14
  42. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  43. package/dest/fixtures/e2e_prover_test.js +83 -74
  44. package/dest/fixtures/elu_monitor.d.ts +21 -0
  45. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  46. package/dest/fixtures/elu_monitor.js +102 -0
  47. package/dest/fixtures/fixtures.d.ts +83 -1
  48. package/dest/fixtures/fixtures.d.ts.map +1 -1
  49. package/dest/fixtures/fixtures.js +86 -0
  50. package/dest/fixtures/get_bb_config.d.ts +1 -1
  51. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  52. package/dest/fixtures/get_bb_config.js +5 -5
  53. package/dest/fixtures/ha_setup.d.ts +4 -4
  54. package/dest/fixtures/ha_setup.d.ts.map +1 -1
  55. package/dest/fixtures/ha_setup.js +8 -3
  56. package/dest/fixtures/index.d.ts +2 -1
  57. package/dest/fixtures/index.d.ts.map +1 -1
  58. package/dest/fixtures/index.js +1 -0
  59. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  60. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  61. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  62. package/dest/fixtures/setup.d.ts +120 -60
  63. package/dest/fixtures/setup.d.ts.map +1 -1
  64. package/dest/fixtures/setup.js +332 -327
  65. package/dest/fixtures/setup_p2p_test.d.ts +14 -7
  66. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  67. package/dest/fixtures/setup_p2p_test.js +21 -18
  68. package/dest/fixtures/standard_contracts_genesis.d.ts +16 -0
  69. package/dest/fixtures/standard_contracts_genesis.d.ts.map +1 -0
  70. package/dest/fixtures/standard_contracts_genesis.js +25 -0
  71. package/dest/fixtures/timing.d.ts +42 -0
  72. package/dest/fixtures/timing.d.ts.map +1 -0
  73. package/dest/fixtures/timing.js +72 -0
  74. package/dest/fixtures/token_utils.d.ts +22 -4
  75. package/dest/fixtures/token_utils.d.ts.map +1 -1
  76. package/dest/fixtures/token_utils.js +26 -8
  77. package/dest/fixtures/utils.d.ts +2 -2
  78. package/dest/fixtures/utils.d.ts.map +1 -1
  79. package/dest/fixtures/utils.js +1 -1
  80. package/dest/fixtures/wait_helpers.d.ts +135 -0
  81. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  82. package/dest/fixtures/wait_helpers.js +154 -0
  83. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  84. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  85. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  86. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  87. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  88. package/dest/forward-compatibility/wallet_service.js +109 -0
  89. package/dest/install_legacy_contracts.d.cts +13 -0
  90. package/dest/install_legacy_contracts.d.cts.map +1 -0
  91. package/dest/legacy-jest-resolver.d.cts +3 -0
  92. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  93. package/dest/multi-node/block-production/setup.d.ts +97 -0
  94. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  95. package/dest/multi-node/block-production/setup.js +158 -0
  96. package/dest/multi-node/governance/setup.d.ts +67 -0
  97. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  98. package/dest/multi-node/governance/setup.js +126 -0
  99. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  100. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  101. package/dest/multi-node/multi_node_test_context.js +347 -0
  102. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  103. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  104. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  105. package/dest/multi-node/slashing/setup.d.ts +167 -0
  106. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  107. package/dest/multi-node/slashing/setup.js +275 -0
  108. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +22 -12
  109. package/dest/p2p/p2p_network.d.ts.map +1 -0
  110. package/dest/{e2e_p2p → p2p}/p2p_network.js +98 -37
  111. package/dest/p2p/reqresp/utils.d.ts +19 -0
  112. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  113. package/dest/{e2e_p2p → p2p}/reqresp/utils.js +67 -27
  114. package/dest/p2p/shared.d.ts +72 -0
  115. package/dest/p2p/shared.d.ts.map +1 -0
  116. package/dest/p2p/shared.js +212 -0
  117. package/dest/shared/cross_chain_test_harness.d.ts +6 -4
  118. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  119. package/dest/shared/cross_chain_test_harness.js +44 -32
  120. package/dest/shared/gas_portal_test_harness.d.ts +8 -5
  121. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  122. package/dest/shared/gas_portal_test_harness.js +26 -14
  123. package/dest/shared/index.d.ts +2 -1
  124. package/dest/shared/index.d.ts.map +1 -1
  125. package/dest/shared/index.js +1 -0
  126. package/dest/shared/jest_setup.js +41 -1
  127. package/dest/shared/mock_state_view.d.ts +86 -0
  128. package/dest/shared/mock_state_view.d.ts.map +1 -0
  129. package/dest/shared/mock_state_view.js +186 -0
  130. package/dest/shared/submit-transactions.d.ts +2 -2
  131. package/dest/shared/submit-transactions.d.ts.map +1 -1
  132. package/dest/shared/submit-transactions.js +12 -5
  133. package/dest/shared/timing_env.d.js +5 -0
  134. package/dest/shared/timing_env.js +365 -0
  135. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  136. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  137. package/dest/shared/uniswap_l1_l2.js +55 -45
  138. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  139. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  140. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  141. package/dest/simulators/lending_simulator.d.ts +10 -3
  142. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  143. package/dest/simulators/lending_simulator.js +27 -15
  144. package/dest/simulators/token_simulator.d.ts +1 -1
  145. package/dest/simulators/token_simulator.d.ts.map +1 -1
  146. package/dest/simulators/token_simulator.js +3 -24
  147. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  148. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  149. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  150. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  151. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  152. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  153. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  154. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  155. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +17 -4
  156. package/dest/single-node/fees/fees_test.d.ts +95 -0
  157. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  158. package/dest/single-node/fees/fees_test.js +347 -0
  159. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  160. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  161. package/dest/single-node/l1-reorgs/setup.js +57 -0
  162. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  163. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  164. package/dest/single-node/partial-proofs/setup.js +5 -0
  165. package/dest/single-node/proving/setup.d.ts +5 -0
  166. package/dest/single-node/proving/setup.d.ts.map +1 -0
  167. package/dest/single-node/proving/setup.js +5 -0
  168. package/dest/single-node/recovery/setup.d.ts +5 -0
  169. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  170. package/dest/single-node/recovery/setup.js +5 -0
  171. package/dest/single-node/setup.d.ts +49 -0
  172. package/dest/single-node/setup.d.ts.map +1 -0
  173. package/dest/single-node/setup.js +56 -0
  174. package/dest/single-node/single_node_test_context.d.ts +374 -0
  175. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  176. package/dest/single-node/single_node_test_context.js +847 -0
  177. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  178. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  179. package/dest/spartan/setup_test_wallets.js +124 -47
  180. package/dest/spartan/tx_metrics.d.ts +27 -4
  181. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  182. package/dest/spartan/tx_metrics.js +106 -21
  183. package/dest/spartan/utils/bot.d.ts +3 -2
  184. package/dest/spartan/utils/bot.d.ts.map +1 -1
  185. package/dest/spartan/utils/bot.js +2 -1
  186. package/dest/spartan/utils/config.d.ts +10 -30
  187. package/dest/spartan/utils/config.d.ts.map +1 -1
  188. package/dest/spartan/utils/config.js +3 -1
  189. package/dest/spartan/utils/gossip_metrics.d.ts +9 -0
  190. package/dest/spartan/utils/gossip_metrics.d.ts.map +1 -0
  191. package/dest/spartan/utils/gossip_metrics.js +77 -0
  192. package/dest/spartan/utils/index.d.ts +5 -2
  193. package/dest/spartan/utils/index.d.ts.map +1 -1
  194. package/dest/spartan/utils/index.js +7 -1
  195. package/dest/spartan/utils/k8s.d.ts +3 -1
  196. package/dest/spartan/utils/k8s.d.ts.map +1 -1
  197. package/dest/spartan/utils/k8s.js +6 -0
  198. package/dest/spartan/utils/nodes.d.ts +4 -5
  199. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  200. package/dest/spartan/utils/nodes.js +11 -11
  201. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  202. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  203. package/dest/spartan/utils/pod_logs.js +74 -0
  204. package/dest/test-wallet/test_wallet.d.ts +105 -0
  205. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  206. package/dest/test-wallet/test_wallet.js +320 -0
  207. package/dest/test-wallet/utils.d.ts +76 -0
  208. package/dest/test-wallet/utils.d.ts.map +1 -0
  209. package/dest/test-wallet/utils.js +126 -0
  210. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  211. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  212. package/dest/test-wallet/wallet_worker_script.js +56 -0
  213. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  214. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  215. package/dest/test-wallet/worker_wallet.js +157 -0
  216. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  217. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  218. package/dest/test-wallet/worker_wallet_schema.js +23 -0
  219. package/package.json +51 -47
  220. package/src/automine/README.md +60 -0
  221. package/src/automine/automine_test_context.ts +153 -0
  222. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  223. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  224. package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +51 -61
  225. package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +50 -56
  226. package/src/automine/token/token_test_helpers.ts +138 -0
  227. package/src/bench/client_flows/benchmark.ts +21 -0
  228. package/src/bench/client_flows/client_flows_benchmark.ts +106 -72
  229. package/src/bench/utils.ts +117 -8
  230. package/src/composed/ha/ha_full_setup.ts +466 -0
  231. package/src/fixtures/authwit_proxy.ts +54 -0
  232. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  233. package/src/fixtures/e2e_prover_test.ts +101 -95
  234. package/src/fixtures/elu_monitor.ts +126 -0
  235. package/src/fixtures/fixtures.ts +110 -0
  236. package/src/fixtures/get_bb_config.ts +7 -6
  237. package/src/fixtures/ha_setup.ts +14 -6
  238. package/src/fixtures/index.ts +1 -0
  239. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  240. package/src/fixtures/setup.ts +436 -442
  241. package/src/fixtures/setup_p2p_test.ts +23 -27
  242. package/src/fixtures/standard_contracts_genesis.ts +28 -0
  243. package/src/fixtures/timing.ts +97 -0
  244. package/src/fixtures/token_utils.ts +42 -7
  245. package/src/fixtures/utils.ts +2 -3
  246. package/src/fixtures/wait_helpers.ts +333 -0
  247. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  248. package/src/forward-compatibility/wallet_service.ts +106 -0
  249. package/src/guides/up_quick_start.sh +7 -4
  250. package/src/infra/README.md +12 -0
  251. package/src/install_legacy_contracts.cjs +81 -0
  252. package/src/legacy-jest-resolver.cjs +98 -0
  253. package/src/multi-node/README.md +96 -0
  254. package/src/multi-node/block-production/setup.ts +272 -0
  255. package/src/multi-node/governance/setup.ts +172 -0
  256. package/src/multi-node/multi_node_test_context.ts +447 -0
  257. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  258. package/src/multi-node/slashing/setup.ts +433 -0
  259. package/src/p2p/README.md +78 -0
  260. package/src/{e2e_p2p → p2p}/p2p_network.ts +124 -53
  261. package/src/{e2e_p2p → p2p}/reqresp/utils.ts +86 -30
  262. package/src/p2p/shared.ts +329 -0
  263. package/src/shared/cross_chain_test_harness.ts +44 -21
  264. package/src/shared/gas_portal_test_harness.ts +33 -15
  265. package/src/shared/index.ts +1 -0
  266. package/src/shared/jest_setup.ts +51 -1
  267. package/src/shared/mock_state_view.ts +188 -0
  268. package/src/shared/submit-transactions.ts +15 -6
  269. package/src/shared/timing_env.d.mts +39 -0
  270. package/src/shared/timing_env.mjs +363 -0
  271. package/src/shared/uniswap_l1_l2.ts +99 -55
  272. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  273. package/src/simulators/lending_simulator.ts +33 -15
  274. package/src/simulators/token_simulator.ts +6 -30
  275. package/src/single-node/README.md +66 -0
  276. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  277. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  278. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +19 -5
  279. package/src/single-node/fees/fees_test.ts +437 -0
  280. package/src/single-node/l1-reorgs/setup.ts +93 -0
  281. package/src/single-node/partial-proofs/setup.ts +8 -0
  282. package/src/single-node/proving/setup.ts +15 -0
  283. package/src/single-node/recovery/setup.ts +8 -0
  284. package/src/single-node/setup.ts +63 -0
  285. package/src/single-node/single_node_test_context.ts +1058 -0
  286. package/src/spartan/setup_test_wallets.ts +168 -42
  287. package/src/spartan/tx_metrics.ts +108 -24
  288. package/src/spartan/utils/bot.ts +4 -1
  289. package/src/spartan/utils/config.ts +2 -0
  290. package/src/spartan/utils/gossip_metrics.ts +108 -0
  291. package/src/spartan/utils/index.ts +10 -0
  292. package/src/spartan/utils/k8s.ts +8 -0
  293. package/src/spartan/utils/nodes.ts +17 -12
  294. package/src/spartan/utils/pod_logs.ts +99 -0
  295. package/src/test-wallet/test_wallet.ts +426 -0
  296. package/src/test-wallet/utils.ts +205 -0
  297. package/src/test-wallet/wallet_worker_script.ts +66 -0
  298. package/src/test-wallet/worker_wallet.ts +216 -0
  299. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  300. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -53
  301. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  302. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
  303. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  304. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -129
  305. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
  306. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  307. package/dest/e2e_deploy_contract/deploy_test.js +0 -50
  308. package/dest/e2e_epochs/epochs_test.d.ts +0 -100
  309. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  310. package/dest/e2e_epochs/epochs_test.js +0 -362
  311. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  312. package/dest/e2e_fees/fees_test.d.ts +0 -88
  313. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  314. package/dest/e2e_fees/fees_test.js +0 -248
  315. package/dest/e2e_l1_publisher/write_json.d.ts +0 -11
  316. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  317. package/dest/e2e_l1_publisher/write_json.js +0 -56
  318. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  319. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  320. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
  321. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  322. package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
  323. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  324. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  325. package/dest/e2e_p2p/inactivity_slash_test.js +0 -136
  326. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  327. package/dest/e2e_p2p/reqresp/utils.d.ts +0 -22
  328. package/dest/e2e_p2p/reqresp/utils.d.ts.map +0 -1
  329. package/dest/e2e_p2p/shared.d.ts +0 -46
  330. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  331. package/dest/e2e_p2p/shared.js +0 -180
  332. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +0 -2
  333. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +0 -1
  334. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +0 -1
  335. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -42
  336. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  337. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -193
  338. package/src/e2e_deploy_contract/deploy_test.ts +0 -85
  339. package/src/e2e_epochs/epochs_test.ts +0 -478
  340. package/src/e2e_fees/fees_test.ts +0 -339
  341. package/src/e2e_l1_publisher/write_json.ts +0 -77
  342. package/src/e2e_nested_contract/nested_contract_test.ts +0 -73
  343. package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
  344. package/src/e2e_p2p/shared.ts +0 -289
  345. /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.js +0 -0
  346. /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.js +0 -0
  347. /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
  348. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof.json +0 -0
  349. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.ts +0 -0
  350. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.ts +0 -0
  351. /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
@@ -0,0 +1,141 @@
1
+ import { generateSchnorrAccounts } from '@aztec/accounts/testing';
2
+ import { NO_FROM } from '@aztec/aztec.js/account';
3
+ import { BlockNumber } from '@aztec/foundation/branded-types';
4
+ import { OnchainDeliveryTestContract } from '@aztec/noir-test-contracts.js/OnchainDeliveryTest';
5
+ import { jest } from '@jest/globals';
6
+ import { AUTOMINE_E2E_OPTS } from '../../fixtures/fixtures.js';
7
+ import { ensureHandshakeRegistryPublished, setup, setupPXEAndGetWallet } from '../../fixtures/setup.js';
8
+ const formatMode = (mode)=>typeof mode === 'string' ? mode : `${mode.events}->${mode.notes}`;
9
+ // Onchain private delivery has two orthogonal axes: the delivery MODE (constrained = nullifier-chained sequence;
10
+ // unconstrained = no nullifier, windowed scan) and the tagging-secret SOURCE, which the wallet's
11
+ // `resolveTaggingSecretStrategy` hook selects. This harness exercises (strategy, mode) cells end to end across two
12
+ // PXEs that share only a node: the sender PXE sends, the recipient PXE discovers purely from onchain logs plus the
13
+ // HandshakeRegistry.
14
+ //
15
+ // Cross-PXE is the meaningful setup: the recipient PXE holds no sender state, so a cell only "discovers" a message if
16
+ // the source truly reached it.
17
+ export function buildMessageDeliveryTest(opts) {
18
+ const { strategy, mode, senderHook, recipientRegistration, customRequestResponder, additionalTests } = opts;
19
+ const description = `${strategy} x ${formatMode(mode)}`;
20
+ describe(description, ()=>{
21
+ jest.setTimeout(300_000);
22
+ const eventValues = [
23
+ 10n,
24
+ 20n,
25
+ 30n
26
+ ];
27
+ const noteValues = [
28
+ 40n,
29
+ 50n,
30
+ 60n
31
+ ];
32
+ let aztecNode;
33
+ let walletSender;
34
+ let walletRecipient;
35
+ let sender;
36
+ let recipient;
37
+ let contractSender;
38
+ let teardownSender;
39
+ let teardownRecipient;
40
+ // Discovery results captured in beforeAll, so the assertions in the actual tests below stay pure.
41
+ // A failure during delivery fails beforeAll loudly instead of being swallowed as an expected red.
42
+ let discoveredEvents;
43
+ let readNotes;
44
+ const { events: eventMode, notes: noteMode } = typeof mode === 'string' ? {
45
+ events: mode,
46
+ notes: mode
47
+ } : mode;
48
+ const sendEvent = (value)=>eventMode === 'constrained' ? contractSender.methods.emit_event(recipient, value) : contractSender.methods.emit_event_unconstrained(recipient, value);
49
+ const sendNote = (value)=>noteMode === 'constrained' ? contractSender.methods.emit_note(recipient, value) : contractSender.methods.emit_note_unconstrained(recipient, value);
50
+ let additionallyFundedAccounts;
51
+ let recipientAccount;
52
+ let customRequestCount = 0;
53
+ beforeAll(async ()=>{
54
+ // The sender PXE holds the sender and carries this cell's tagging-secret-strategy hook. The recipient is funded
55
+ // at genesis here but created and deployed on the isolated recipient PXE below, so it carries no sender state
56
+ // from other cells.
57
+ ({ aztecNode, additionallyFundedAccounts, wallet: walletSender, accounts: [sender], teardown: teardownSender } = await setup(1, {
58
+ ...AUTOMINE_E2E_OPTS,
59
+ additionallyFundedAccounts: await generateSchnorrAccounts(1, 'schnorr'),
60
+ pxeCreationOptions: {
61
+ hooks: {
62
+ resolveTaggingSecretStrategy: senderHook,
63
+ resolveCustomRequest: async (request)=>{
64
+ if (!customRequestResponder) {
65
+ throw new Error('A custom request arrived but this test cell has no customRequestResponder configured');
66
+ }
67
+ if (!recipientAccount) {
68
+ throw new Error('A custom request arrived before the recipient wallet was created');
69
+ }
70
+ customRequestCount++;
71
+ const respond = customRequestResponder(walletRecipient, additionallyFundedAccounts[0], await recipientAccount.getCompleteAddress());
72
+ return respond(request);
73
+ }
74
+ }
75
+ }
76
+ }));
77
+ ({ wallet: walletRecipient, teardown: teardownRecipient } = await setupPXEAndGetWallet(aztecNode, aztecNode, {}, undefined, 'pxe-recipient'));
78
+ recipientAccount = await walletRecipient.createSchnorrAccount(additionallyFundedAccounts[0].secret, additionallyFundedAccounts[0].salt, additionallyFundedAccounts[0].signingKey);
79
+ await (await recipientAccount.getDeployMethod()).send({
80
+ from: NO_FROM
81
+ });
82
+ recipient = recipientAccount.address;
83
+ await ensureHandshakeRegistryPublished(walletSender, sender);
84
+ const { contract: deployed, instance } = await OnchainDeliveryTestContract.deploy(walletSender).send({
85
+ from: sender
86
+ });
87
+ contractSender = deployed;
88
+ await ensureHandshakeRegistryPublished(walletRecipient, recipient);
89
+ await walletRecipient.registerContract(instance, OnchainDeliveryTestContract.artifact);
90
+ await recipientRegistration?.(walletRecipient, recipient, sender);
91
+ // Constrained sends to one pair are strictly ordered, so deliver one tx at a time. The first send bootstraps the
92
+ // handshake (when the source is a handshake); the rest reuse it.
93
+ const blockNumbers = [];
94
+ for (const value of eventValues){
95
+ const { receipt } = await sendEvent(value).send({
96
+ from: sender
97
+ });
98
+ blockNumbers.push(receipt.blockNumber);
99
+ }
100
+ for (const value of noteValues){
101
+ await sendNote(value).send({
102
+ from: sender
103
+ });
104
+ }
105
+ await walletRecipient.sync();
106
+ const events = await walletRecipient.getPrivateEvents(OnchainDeliveryTestContract.events.DeliveryEvent, {
107
+ contractAddress: contractSender.address,
108
+ fromBlock: BlockNumber(Math.min(...blockNumbers)),
109
+ toBlock: BlockNumber(Math.max(...blockNumbers) + 1),
110
+ scopes: [
111
+ recipient
112
+ ]
113
+ });
114
+ discoveredEvents = events.map((e)=>e.event.value);
115
+ const contractRecipient = OnchainDeliveryTestContract.at(contractSender.address, walletRecipient);
116
+ const { result } = await contractRecipient.methods.get_note_values(recipient).simulate({
117
+ from: recipient
118
+ });
119
+ readNotes = result.storage.slice(0, Number(result.len));
120
+ });
121
+ afterAll(async ()=>{
122
+ await teardownRecipient();
123
+ await teardownSender();
124
+ });
125
+ it('the recipient PXE discovers the events delivered by the sender PXE', ()=>{
126
+ expect(discoveredEvents.length).toBe(eventValues.length);
127
+ for (const value of eventValues){
128
+ expect(discoveredEvents).toContainEqual(value);
129
+ }
130
+ });
131
+ it('the recipient PXE reads back the notes delivered by the sender PXE', ()=>{
132
+ expect(readNotes).toEqual(noteValues);
133
+ });
134
+ if (customRequestResponder) {
135
+ it('the custom request hook fires exactly once, on the send that bootstraps the tagging secret', ()=>{
136
+ expect(customRequestCount).toBe(1);
137
+ });
138
+ }
139
+ additionalTests?.();
140
+ });
141
+ }
@@ -0,0 +1,49 @@
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import type { TxHash } from '@aztec/aztec.js/tx';
4
+ import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
5
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
6
+ import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
7
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
8
+ import { AutomineTestContext, type AutomineTestOpts } from '../automine_test_context.js';
9
+ export declare class Role {
10
+ private isAdmin;
11
+ private isMinter;
12
+ private isBlacklisted;
13
+ withAdmin(): this;
14
+ withMinter(): this;
15
+ withBlacklisted(): this;
16
+ toNoirStruct(): {
17
+ is_admin: boolean;
18
+ is_minter: boolean;
19
+ is_blacklisted: boolean;
20
+ };
21
+ }
22
+ /**
23
+ * TokenBlacklist-domain harness over the automine topology: extends {@link AutomineTestContext} with a
24
+ * {@link TokenSimulator}, the {@link Role} helper, the TokenBlacklist deploy plus a bad-account and
25
+ * authwit proxy, and the role-change-delay warp. Base setup and mint run in {@link setup}.
26
+ */
27
+ export declare class BlacklistTokenContractTest extends AutomineTestContext {
28
+ static CHANGE_ROLES_DELAY: number;
29
+ asset: TokenBlacklistContract;
30
+ tokenSim: TokenSimulator;
31
+ badAccount: InvalidAccountContract;
32
+ authwitProxy: GenericProxyContract;
33
+ adminAddress: AztecAddress;
34
+ otherAddress: AztecAddress;
35
+ blacklistedAddress: AztecAddress;
36
+ private testName;
37
+ constructor(testName: string);
38
+ crossTimestampOfChange(): Promise<void>;
39
+ /**
40
+ * Applies base setup:
41
+ * 1. Add 3 accounts.
42
+ * 2. Publicly deploy accounts, deploy token contract and a "bad account".
43
+ */
44
+ applyBaseSetup(): Promise<void>;
45
+ setup(opts?: AutomineTestOpts): Promise<void>;
46
+ addPendingShieldNoteToPXE(contract: TokenBlacklistContract, recipient: AztecAddress, amount: bigint, secretHash: Fr, txHash: TxHash): Promise<void>;
47
+ applyMint(): Promise<void>;
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxhY2tsaXN0X3Rva2VuX2NvbnRyYWN0X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRvbWluZS90b2tlbi9ibGFja2xpc3RfdG9rZW5fY29udHJhY3RfdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVDLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBS3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXpGLHFCQUFhLElBQUk7SUFDZixPQUFPLENBQUMsT0FBTyxDQUFTO0lBQ3hCLE9BQU8sQ0FBQyxRQUFRLENBQVM7SUFDekIsT0FBTyxDQUFDLGFBQWEsQ0FBUztJQUU5QixTQUFTLFNBR1I7SUFFRCxVQUFVLFNBR1Q7SUFFRCxlQUFlLFNBR2Q7SUFFRCxZQUFZOzs7O01BSVg7Q0FDRjtBQUVEOzs7O0dBSUc7QUFDSCxxQkFBYSwwQkFBMkIsU0FBUSxtQkFBbUI7SUFFakUsTUFBTSxDQUFDLGtCQUFrQixTQUFTO0lBRWxDLEtBQUssRUFBRyxzQkFBc0IsQ0FBQztJQUMvQixRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLFVBQVUsRUFBRyxzQkFBc0IsQ0FBQztJQUNwQyxZQUFZLEVBQUcsb0JBQW9CLENBQUM7SUFFcEMsWUFBWSxFQUFHLFlBQVksQ0FBQztJQUM1QixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLGtCQUFrQixFQUFHLFlBQVksQ0FBQztJQUVsQyxPQUFPLENBQUMsUUFBUSxDQUFTO0lBRXpCLFlBQVksUUFBUSxFQUFFLE1BQU0sRUFHM0I7SUFFSyxzQkFBc0Isa0JBRTNCO0lBRUQ7Ozs7T0FJRztJQUNHLGNBQWMsa0JBZ0RuQjtJQUVjLEtBQUssQ0FBQyxJQUFJLEdBQUUsZ0JBQXFCLGlCQUsvQztJQUVLLHlCQUF5QixDQUM3QixRQUFRLEVBQUUsc0JBQXNCLEVBQ2hDLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsVUFBVSxFQUFFLEVBQUUsRUFDZCxNQUFNLEVBQUUsTUFBTSxpQkFjZjtJQUVLLFNBQVMsa0JBbURkO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blacklist_token_contract_test.d.ts","sourceRoot":"","sources":["../../../src/automine/token/blacklist_token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAKtF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEzF,qBAAa,IAAI;IACf,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAE9B,SAAS,SAGR;IAED,UAAU,SAGT;IAED,eAAe,SAGd;IAED,YAAY;;;;MAIX;CACF;AAED;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,mBAAmB;IAEjE,MAAM,CAAC,kBAAkB,SAAS;IAElC,KAAK,EAAG,sBAAsB,CAAC;IAC/B,QAAQ,EAAG,cAAc,CAAC;IAC1B,UAAU,EAAG,sBAAsB,CAAC;IACpC,YAAY,EAAG,oBAAoB,CAAC;IAEpC,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,kBAAkB,EAAG,YAAY,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,QAAQ,EAAE,MAAM,EAG3B;IAEK,sBAAsB,kBAE3B;IAED;;;;OAIG;IACG,cAAc,kBAgDnB;IAEc,KAAK,CAAC,IAAI,GAAE,gBAAqB,iBAK/C;IAEK,yBAAyB,CAC7B,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,EAAE,EACd,MAAM,EAAE,MAAM,iBAcf;IAEK,SAAS,kBAmDd;CACF"}
@@ -2,10 +2,12 @@ import { computeSecretHash } from '@aztec/aztec.js/crypto';
2
2
  import { Fr } from '@aztec/aztec.js/fields';
3
3
  import { createLogger } from '@aztec/aztec.js/log';
4
4
  import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
5
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
5
6
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
7
  import { jest } from '@jest/globals';
7
- import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
8
- import { TokenSimulator } from '../simulators/token_simulator.js';
8
+ import { ensureAuthRegistryPublished } from '../../fixtures/setup.js';
9
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
10
+ import { AutomineTestContext } from '../automine_test_context.js';
9
11
  export class Role {
10
12
  isAdmin = false;
11
13
  isMinter = false;
@@ -32,85 +34,80 @@ export class Role {
32
34
  };
33
35
  }
34
36
  }
35
- export class BlacklistTokenContractTest {
37
+ /**
38
+ * TokenBlacklist-domain harness over the automine topology: extends {@link AutomineTestContext} with a
39
+ * {@link TokenSimulator}, the {@link Role} helper, the TokenBlacklist deploy plus a bad-account and
40
+ * authwit proxy, and the role-change-delay warp. Base setup and mint run in {@link setup}.
41
+ */ export class BlacklistTokenContractTest extends AutomineTestContext {
36
42
  // This value MUST match the same value that we have in the contract
37
43
  static CHANGE_ROLES_DELAY = 86400;
38
- context;
39
- logger;
40
- wallet;
41
44
  asset;
42
45
  tokenSim;
43
46
  badAccount;
44
- cheatCodes;
45
- sequencer;
46
- aztecNode;
47
+ authwitProxy;
47
48
  adminAddress;
48
49
  otherAddress;
49
50
  blacklistedAddress;
51
+ testName;
50
52
  constructor(testName){
51
- this.logger = createLogger(`e2e:e2e_blacklist_token_contract:${testName}`);
53
+ super();
54
+ this.testName = testName;
52
55
  }
53
56
  async crossTimestampOfChange() {
54
- await this.cheatCodes.warpL2TimeAtLeastBy(this.sequencer, this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
57
+ await this.markProvenAndWarp(BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
55
58
  }
56
59
  /**
57
60
  * Applies base setup:
58
61
  * 1. Add 3 accounts.
59
62
  * 2. Publicly deploy accounts, deploy token contract and a "bad account".
60
63
  */ async applyBaseSetup() {
61
- // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
62
- jest.setTimeout(120_000);
63
- this.logger.info('Deploying 3 accounts');
64
- const { deployedAccounts } = await deployAccounts(3, this.logger)({
65
- wallet: this.context.wallet,
66
- initialFundedAccounts: this.context.initialFundedAccounts
67
- });
64
+ // Bumped from 2 min: pipelined cadence (~24s/dependent-tx) makes the 3-account deploy plus token/bad-account/
65
+ // proxy deploys exceed the original window.
66
+ jest.setTimeout(600_000);
68
67
  this.cheatCodes = this.context.cheatCodes;
69
68
  this.aztecNode = this.context.aztecNodeService;
70
69
  this.sequencer = this.context.sequencer;
71
70
  this.wallet = this.context.wallet;
72
- this.adminAddress = deployedAccounts[0].address;
73
- this.otherAddress = deployedAccounts[1].address;
74
- this.blacklistedAddress = deployedAccounts[2].address;
71
+ [this.adminAddress, this.otherAddress, this.blacklistedAddress] = this.context.accounts;
75
72
  this.logger.info('Setting up blacklist token contract');
76
- // Create the token contract state.
77
- this.logger.verbose(`Public deploy accounts...`);
78
- await publicDeployAccounts(this.wallet, [
79
- this.adminAddress,
80
- this.otherAddress,
81
- this.blacklistedAddress
82
- ]);
73
+ await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
83
74
  this.logger.verbose(`Deploying TokenContract...`);
84
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
75
+ ({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
85
76
  from: this.adminAddress
86
- });
77
+ }));
87
78
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
88
79
  this.logger.verbose(`Deploying bad account...`);
89
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
80
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
90
81
  from: this.adminAddress
91
- });
82
+ }));
92
83
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
84
+ // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
85
+ // (so their notes are in scope), but msg_sender in the target must differ from the note owner
86
+ // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
87
+ this.logger.verbose(`Deploying generic proxy...`);
88
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
89
+ from: this.adminAddress
90
+ }));
91
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
93
92
  await this.crossTimestampOfChange();
94
93
  this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
95
94
  this.adminAddress,
96
95
  this.otherAddress,
97
96
  this.blacklistedAddress
98
97
  ]);
99
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
98
+ expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
100
99
  from: this.adminAddress
101
- })).toEqual(new Role().withAdmin().toNoirStruct());
100
+ })).result).toEqual(new Role().withAdmin().toNoirStruct());
102
101
  }
103
- async setup() {
104
- this.logger.info('Setting up fresh context');
105
- this.context = await setup(0, {
106
- fundSponsoredFPC: true,
107
- skipAccountDeployment: true
102
+ async setup(opts = {}) {
103
+ await super.setup({
104
+ numberOfAccounts: 3,
105
+ ...opts
108
106
  });
107
+ // hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
108
+ this.logger = createLogger(`e2e:automine:blacklist:${this.testName}`);
109
109
  await this.applyBaseSetup();
110
110
  }
111
- async teardown() {
112
- await teardown(this.context);
113
- }
114
111
  async addPendingShieldNoteToPXE(contract, recipient, amount, secretHash, txHash) {
115
112
  const txEffects = await this.aztecNode.getTxEffect(txHash);
116
113
  await contract.methods.process_transparent_note(contract.address, amount, secretHash, txHash.hash, txEffects.data.noteHashes, txEffects.data.nullifiers[0], recipient).simulate({
@@ -130,9 +127,9 @@ export class BlacklistTokenContractTest {
130
127
  from: this.adminAddress
131
128
  });
132
129
  await this.crossTimestampOfChange();
133
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
130
+ expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
134
131
  from: this.adminAddress
135
- })).toEqual(adminMinterRole.toNoirStruct());
132
+ })).result).toEqual(adminMinterRole.toNoirStruct());
136
133
  this.logger.verbose(`Minting ${amount} publicly...`);
137
134
  await asset.methods.mint_public(this.adminAddress, amount).send({
138
135
  from: this.adminAddress
@@ -140,7 +137,7 @@ export class BlacklistTokenContractTest {
140
137
  this.logger.verbose(`Minting ${amount} privately...`);
141
138
  const secret = Fr.random();
142
139
  const secretHash = await computeSecretHash(secret);
143
- const receipt = await asset.methods.mint_private(amount, secretHash).send({
140
+ const { receipt } = await asset.methods.mint_private(amount, secretHash).send({
144
141
  from: this.adminAddress
145
142
  });
146
143
  await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
@@ -149,18 +146,18 @@ export class BlacklistTokenContractTest {
149
146
  });
150
147
  this.logger.verbose(`Minting complete.`);
151
148
  tokenSim.mintPublic(this.adminAddress, amount);
152
- const publicBalance = await asset.methods.balance_of_public(this.adminAddress).simulate({
149
+ const { result: publicBalance } = await asset.methods.balance_of_public(this.adminAddress).simulate({
153
150
  from: this.adminAddress
154
151
  });
155
152
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
156
153
  expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
157
154
  tokenSim.mintPrivate(this.adminAddress, amount);
158
- const privateBalance = await asset.methods.balance_of_private(this.adminAddress).simulate({
155
+ const { result: privateBalance } = await asset.methods.balance_of_private(this.adminAddress).simulate({
159
156
  from: this.adminAddress
160
157
  });
161
158
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
162
159
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
163
- const totalSupply = await asset.methods.total_supply().simulate({
160
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({
164
161
  from: this.adminAddress
165
162
  });
166
163
  this.logger.verbose(`Total supply: ${totalSupply}`);
@@ -0,0 +1,40 @@
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import type { AztecNode } from '@aztec/aztec.js/node';
3
+ import { TokenContract } from '@aztec/noir-contracts.js/Token';
4
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
5
+ import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
7
+ import { AutomineTestContext, type AutomineTestOpts } from '../automine_test_context.js';
8
+ /**
9
+ * Token-domain harness over the automine topology: extends {@link AutomineTestContext} with a
10
+ * {@link TokenSimulator}, the USDC Token deploy plus a bad-account and authwit proxy, and an optional
11
+ * mint. Base setup is opt-in via {@link applyBaseSnapshots} (run during `setup()`); {@link applyMint}
12
+ * is called explicitly after `setup()`.
13
+ */
14
+ export declare class TokenContractTest extends AutomineTestContext {
15
+ static TOKEN_NAME: string;
16
+ static TOKEN_SYMBOL: string;
17
+ static TOKEN_DECIMALS: bigint;
18
+ metricsPort?: number;
19
+ asset: TokenContract;
20
+ tokenSim: TokenSimulator;
21
+ node: AztecNode;
22
+ badAccount: InvalidAccountContract;
23
+ authwitProxy: GenericProxyContract;
24
+ adminAddress: AztecAddress;
25
+ otherAddress: AztecAddress;
26
+ account2Address: AztecAddress;
27
+ private shouldApplyBaseSetup;
28
+ private testName;
29
+ constructor(testName: string);
30
+ /**
31
+ * Registers that base setup should be applied during setup().
32
+ * Call this before setup() to deploy 3 accounts, publicly deploy accounts, token contract and a "bad account".
33
+ */
34
+ applyBaseSnapshots(): void;
35
+ private applyBaseSetup;
36
+ setup(opts?: AutomineTestOpts): Promise<void>;
37
+ /** Mints an initial public and private balance to the admin account. Call after {@link setup}. */
38
+ applyMint(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dG9taW5lL3Rva2VuL3Rva2VuX2NvbnRyYWN0X3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQU10RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEtBQUssZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl6Rjs7Ozs7R0FLRztBQUNILHFCQUFhLGlCQUFrQixTQUFRLG1CQUFtQjtJQUN4RCxNQUFNLENBQUMsVUFBVSxTQUFVO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLFNBQVM7SUFDNUIsTUFBTSxDQUFDLGNBQWMsU0FBTztJQUM1QixXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDckIsS0FBSyxFQUFHLGFBQWEsQ0FBQztJQUN0QixRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLElBQUksRUFBRyxTQUFTLENBQUM7SUFFakIsVUFBVSxFQUFHLHNCQUFzQixDQUFDO0lBQ3BDLFlBQVksRUFBRyxvQkFBb0IsQ0FBQztJQUNwQyxZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLFlBQVksRUFBRyxZQUFZLENBQUM7SUFDNUIsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBUztJQUV6QixZQUFZLFFBQVEsRUFBRSxNQUFNLEVBSTNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO1lBS2EsY0FBYztJQThDYixLQUFLLENBQUMsSUFBSSxHQUFFLGdCQUFxQixpQkFRL0M7SUFFRCxrR0FBa0c7SUFDNUYsU0FBUyxrQkE4QmQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../../src/automine/token/token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAMtF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAIzF;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,YAAY,EAAG,oBAAoB,CAAC;IACpC,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,eAAe,EAAG,YAAY,CAAC;IAE/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,QAAQ,EAAE,MAAM,EAI3B;IAED;;;OAGG;IACH,kBAAkB,SAEjB;YAKa,cAAc;IA8Cb,KAAK,CAAC,IAAI,GAAE,gBAAqB,iBAQ/C;IAED,kGAAkG;IAC5F,SAAS,kBA8Bd;CACF"}
@@ -1,30 +1,36 @@
1
1
  import { createLogger } from '@aztec/aztec.js/log';
2
2
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
3
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
3
4
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
4
5
  import { jest } from '@jest/globals';
5
- import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
6
- import { mintTokensToPrivate } from '../fixtures/token_utils.js';
7
- import { TokenSimulator } from '../simulators/token_simulator.js';
6
+ import { ensureAuthRegistryPublished } from '../../fixtures/setup.js';
7
+ import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
8
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
9
+ import { AutomineTestContext } from '../automine_test_context.js';
8
10
  const { METRICS_PORT: metricsPort } = process.env;
9
- export class TokenContractTest {
11
+ /**
12
+ * Token-domain harness over the automine topology: extends {@link AutomineTestContext} with a
13
+ * {@link TokenSimulator}, the USDC Token deploy plus a bad-account and authwit proxy, and an optional
14
+ * mint. Base setup is opt-in via {@link applyBaseSnapshots} (run during `setup()`); {@link applyMint}
15
+ * is called explicitly after `setup()`.
16
+ */ export class TokenContractTest extends AutomineTestContext {
10
17
  static TOKEN_NAME = 'USDC';
11
18
  static TOKEN_SYMBOL = 'USD';
12
19
  static TOKEN_DECIMALS = 18n;
13
- context;
14
- logger;
15
20
  metricsPort;
16
21
  asset;
17
22
  tokenSim;
18
23
  node;
19
24
  badAccount;
20
- wallet;
25
+ authwitProxy;
21
26
  adminAddress;
22
- account1Address;
27
+ otherAddress;
23
28
  account2Address;
24
29
  shouldApplyBaseSetup = false;
25
- shouldApplyMint = false;
30
+ testName;
26
31
  constructor(testName){
27
- this.logger = createLogger(`e2e:e2e_token_contract:${testName}`);
32
+ super();
33
+ this.testName = testName;
28
34
  this.metricsPort = metricsPort ? parseInt(metricsPort) : undefined;
29
35
  }
30
36
  /**
@@ -34,65 +40,54 @@ export class TokenContractTest {
34
40
  this.shouldApplyBaseSetup = true;
35
41
  }
36
42
  /**
37
- * Registers that mint should be applied during setup().
38
- * Call this before setup() to mint tokens to the admin account.
39
- */ applyMintSnapshot() {
40
- this.shouldApplyMint = true;
41
- }
42
- /**
43
43
  * Applies base setup: deploys 3 accounts, publicly deploys accounts, token contract and a "bad account".
44
44
  */ async applyBaseSetup() {
45
45
  // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
46
46
  jest.setTimeout(120_000);
47
- this.logger.info('Applying base setup - deploying 3 accounts');
48
- const { deployedAccounts } = await deployAccounts(3, this.logger)({
49
- wallet: this.context.wallet,
50
- initialFundedAccounts: this.context.initialFundedAccounts
51
- });
52
47
  this.node = this.context.aztecNodeService;
53
48
  this.wallet = this.context.wallet;
54
- [this.adminAddress, this.account1Address, this.account2Address] = deployedAccounts.map((acc)=>acc.address);
49
+ [this.adminAddress, this.otherAddress, this.account2Address] = this.context.accounts;
55
50
  this.logger.info('Applying base setup - deploying token contract');
56
- this.logger.verbose(`Public deploy accounts...`);
57
- await publicDeployAccounts(this.wallet, [
58
- this.adminAddress,
59
- this.account1Address
60
- ]);
51
+ await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
61
52
  this.logger.verbose(`Deploying TokenContract...`);
62
- this.asset = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
53
+ ({ contract: this.asset } = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
63
54
  from: this.adminAddress
64
- });
55
+ }));
65
56
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
66
57
  this.logger.verbose(`Deploying bad account...`);
67
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
58
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
68
59
  from: this.adminAddress
69
- });
60
+ }));
70
61
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
62
+ // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
63
+ // (so their notes are in scope), but msg_sender in the target must differ from the note owner
64
+ // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
65
+ this.logger.verbose(`Deploying generic proxy...`);
66
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
67
+ from: this.adminAddress
68
+ }));
69
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
71
70
  this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
72
71
  this.adminAddress,
73
- this.account1Address
72
+ this.otherAddress
74
73
  ]);
75
- expect(await this.asset.methods.get_admin().simulate({
74
+ expect((await this.asset.methods.get_admin().simulate({
76
75
  from: this.adminAddress
77
- })).toBe(this.adminAddress.toBigInt());
76
+ })).result).toBe(this.adminAddress.toBigInt());
78
77
  }
79
- async setup() {
80
- this.context = await setup(0, {
78
+ async setup(opts = {}) {
79
+ await super.setup({
80
+ numberOfAccounts: 3,
81
81
  metricsPort: this.metricsPort,
82
- fundSponsoredFPC: true,
83
- skipAccountDeployment: true
82
+ ...opts
84
83
  });
84
+ // hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
85
+ this.logger = createLogger(`e2e:automine:token:${this.testName}`);
85
86
  if (this.shouldApplyBaseSetup) {
86
87
  await this.applyBaseSetup();
87
88
  }
88
- if (this.shouldApplyMint) {
89
- await this.applyMint();
90
- }
91
- }
92
- async teardown() {
93
- await teardown(this.context);
94
89
  }
95
- async applyMint() {
90
+ /** Mints an initial public and private balance to the admin account. Call after {@link setup}. */ async applyMint() {
96
91
  this.logger.info('Applying mint setup');
97
92
  const { asset, adminAddress, tokenSim } = this;
98
93
  const amount = 10000n;
@@ -101,7 +96,7 @@ export class TokenContractTest {
101
96
  from: adminAddress
102
97
  });
103
98
  tokenSim.mintPublic(adminAddress, amount);
104
- const publicBalance = await asset.methods.balance_of_public(adminAddress).simulate({
99
+ const { result: publicBalance } = await asset.methods.balance_of_public(adminAddress).simulate({
105
100
  from: adminAddress
106
101
  });
107
102
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
@@ -109,12 +104,12 @@ export class TokenContractTest {
109
104
  this.logger.verbose(`Minting ${amount} privately...`);
110
105
  await mintTokensToPrivate(asset, adminAddress, adminAddress, amount);
111
106
  tokenSim.mintPrivate(adminAddress, amount);
112
- const privateBalance = await asset.methods.balance_of_private(adminAddress).simulate({
107
+ const { result: privateBalance } = await asset.methods.balance_of_private(adminAddress).simulate({
113
108
  from: adminAddress
114
109
  });
115
110
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
116
111
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(adminAddress));
117
- const totalSupply = await asset.methods.total_supply().simulate({
112
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({
118
113
  from: adminAddress
119
114
  });
120
115
  this.logger.verbose(`Total supply: ${totalSupply}`);