@aztec/end-to-end 0.0.1-commit.4d79d1f2d → 0.0.1-commit.4d9804df

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 (343) hide show
  1. package/README.md +217 -14
  2. package/dest/automine/automine_test_context.d.ts +85 -0
  3. package/dest/automine/automine_test_context.d.ts.map +1 -0
  4. package/dest/automine/automine_test_context.js +98 -0
  5. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
  6. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  7. package/dest/{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 +39 -52
  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 +37 -52
  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 +5 -5
  28. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  29. package/dest/bench/client_flows/client_flows_benchmark.js +62 -53
  30. package/dest/bench/client_flows/data_extractor.js +1 -0
  31. package/dest/bench/utils.d.ts +3 -3
  32. package/dest/bench/utils.d.ts.map +1 -1
  33. package/dest/bench/utils.js +102 -8
  34. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  35. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  36. package/dest/composed/ha/ha_full_setup.js +383 -0
  37. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  38. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  39. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  40. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  41. package/dest/fixtures/authwit_proxy.js +34 -0
  42. package/dest/fixtures/e2e_prover_test.d.ts +17 -13
  43. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  44. package/dest/fixtures/e2e_prover_test.js +82 -74
  45. package/dest/fixtures/elu_monitor.d.ts +21 -0
  46. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  47. package/dest/fixtures/elu_monitor.js +102 -0
  48. package/dest/fixtures/fixtures.d.ts +83 -1
  49. package/dest/fixtures/fixtures.d.ts.map +1 -1
  50. package/dest/fixtures/fixtures.js +86 -0
  51. package/dest/fixtures/get_bb_config.d.ts +1 -1
  52. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  53. package/dest/fixtures/get_bb_config.js +5 -5
  54. package/dest/fixtures/ha_setup.d.ts +4 -4
  55. package/dest/fixtures/ha_setup.d.ts.map +1 -1
  56. package/dest/fixtures/ha_setup.js +8 -3
  57. package/dest/fixtures/index.d.ts +2 -1
  58. package/dest/fixtures/index.d.ts.map +1 -1
  59. package/dest/fixtures/index.js +1 -0
  60. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  61. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  62. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  63. package/dest/fixtures/setup.d.ts +99 -48
  64. package/dest/fixtures/setup.d.ts.map +1 -1
  65. package/dest/fixtures/setup.js +319 -262
  66. package/dest/fixtures/setup_p2p_test.d.ts +14 -7
  67. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  68. package/dest/fixtures/setup_p2p_test.js +21 -18
  69. package/dest/fixtures/timing.d.ts +42 -0
  70. package/dest/fixtures/timing.d.ts.map +1 -0
  71. package/dest/fixtures/timing.js +72 -0
  72. package/dest/fixtures/token_utils.d.ts +22 -4
  73. package/dest/fixtures/token_utils.d.ts.map +1 -1
  74. package/dest/fixtures/token_utils.js +26 -8
  75. package/dest/fixtures/utils.d.ts +2 -2
  76. package/dest/fixtures/utils.d.ts.map +1 -1
  77. package/dest/fixtures/utils.js +1 -1
  78. package/dest/fixtures/wait_helpers.d.ts +135 -0
  79. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  80. package/dest/fixtures/wait_helpers.js +154 -0
  81. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  82. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  83. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  84. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  85. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  86. package/dest/forward-compatibility/wallet_service.js +109 -0
  87. package/dest/install_legacy_contracts.d.cts +10 -0
  88. package/dest/install_legacy_contracts.d.cts.map +1 -0
  89. package/dest/legacy-jest-resolver.d.cts +3 -0
  90. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  91. package/dest/multi-node/block-production/setup.d.ts +97 -0
  92. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  93. package/dest/multi-node/block-production/setup.js +158 -0
  94. package/dest/multi-node/governance/setup.d.ts +67 -0
  95. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  96. package/dest/multi-node/governance/setup.js +126 -0
  97. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  98. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  99. package/dest/multi-node/multi_node_test_context.js +347 -0
  100. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  101. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  102. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  103. package/dest/multi-node/slashing/setup.d.ts +167 -0
  104. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  105. package/dest/multi-node/slashing/setup.js +275 -0
  106. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +21 -11
  107. package/dest/p2p/p2p_network.d.ts.map +1 -0
  108. package/dest/{e2e_p2p → p2p}/p2p_network.js +97 -37
  109. package/dest/p2p/reqresp/utils.d.ts +19 -0
  110. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  111. package/dest/{e2e_p2p → p2p}/reqresp/utils.js +67 -27
  112. package/dest/p2p/shared.d.ts +72 -0
  113. package/dest/p2p/shared.d.ts.map +1 -0
  114. package/dest/p2p/shared.js +212 -0
  115. package/dest/shared/cross_chain_test_harness.d.ts +6 -4
  116. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  117. package/dest/shared/cross_chain_test_harness.js +36 -31
  118. package/dest/shared/gas_portal_test_harness.d.ts +8 -5
  119. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  120. package/dest/shared/gas_portal_test_harness.js +26 -14
  121. package/dest/shared/index.d.ts +2 -1
  122. package/dest/shared/index.d.ts.map +1 -1
  123. package/dest/shared/index.js +1 -0
  124. package/dest/shared/jest_setup.js +41 -1
  125. package/dest/shared/mock_state_view.d.ts +86 -0
  126. package/dest/shared/mock_state_view.d.ts.map +1 -0
  127. package/dest/shared/mock_state_view.js +186 -0
  128. package/dest/shared/submit-transactions.d.ts +1 -1
  129. package/dest/shared/submit-transactions.d.ts.map +1 -1
  130. package/dest/shared/submit-transactions.js +12 -5
  131. package/dest/shared/timing_env.d.js +5 -0
  132. package/dest/shared/timing_env.js +365 -0
  133. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  134. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  135. package/dest/shared/uniswap_l1_l2.js +55 -45
  136. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  137. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  138. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  139. package/dest/simulators/lending_simulator.d.ts +10 -3
  140. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  141. package/dest/simulators/lending_simulator.js +27 -15
  142. package/dest/simulators/token_simulator.d.ts +1 -1
  143. package/dest/simulators/token_simulator.d.ts.map +1 -1
  144. package/dest/simulators/token_simulator.js +2 -2
  145. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  146. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  147. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  148. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  149. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  150. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  151. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  152. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  153. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +17 -4
  154. package/dest/single-node/fees/fees_test.d.ts +93 -0
  155. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  156. package/dest/{e2e_fees → single-node/fees}/fees_test.js +89 -63
  157. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  158. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  159. package/dest/single-node/l1-reorgs/setup.js +57 -0
  160. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  161. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  162. package/dest/single-node/partial-proofs/setup.js +5 -0
  163. package/dest/single-node/proving/setup.d.ts +5 -0
  164. package/dest/single-node/proving/setup.d.ts.map +1 -0
  165. package/dest/single-node/proving/setup.js +5 -0
  166. package/dest/single-node/recovery/setup.d.ts +5 -0
  167. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  168. package/dest/single-node/recovery/setup.js +5 -0
  169. package/dest/single-node/setup.d.ts +49 -0
  170. package/dest/single-node/setup.d.ts.map +1 -0
  171. package/dest/single-node/setup.js +56 -0
  172. package/dest/single-node/single_node_test_context.d.ts +360 -0
  173. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  174. package/dest/single-node/single_node_test_context.js +833 -0
  175. package/dest/spartan/setup_test_wallets.d.ts +11 -2
  176. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  177. package/dest/spartan/setup_test_wallets.js +121 -46
  178. package/dest/spartan/tx_metrics.d.ts +27 -4
  179. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  180. package/dest/spartan/tx_metrics.js +106 -21
  181. package/dest/spartan/utils/bot.d.ts +3 -2
  182. package/dest/spartan/utils/bot.d.ts.map +1 -1
  183. package/dest/spartan/utils/bot.js +2 -1
  184. package/dest/spartan/utils/config.d.ts +10 -30
  185. package/dest/spartan/utils/config.d.ts.map +1 -1
  186. package/dest/spartan/utils/config.js +3 -1
  187. package/dest/spartan/utils/index.d.ts +4 -2
  188. package/dest/spartan/utils/index.d.ts.map +1 -1
  189. package/dest/spartan/utils/index.js +5 -1
  190. package/dest/spartan/utils/k8s.d.ts +3 -1
  191. package/dest/spartan/utils/k8s.d.ts.map +1 -1
  192. package/dest/spartan/utils/k8s.js +6 -0
  193. package/dest/spartan/utils/nodes.d.ts +4 -5
  194. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  195. package/dest/spartan/utils/nodes.js +11 -11
  196. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  197. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  198. package/dest/spartan/utils/pod_logs.js +74 -0
  199. package/dest/test-wallet/test_wallet.d.ts +48 -25
  200. package/dest/test-wallet/test_wallet.d.ts.map +1 -1
  201. package/dest/test-wallet/test_wallet.js +197 -91
  202. package/dest/test-wallet/utils.d.ts +38 -3
  203. package/dest/test-wallet/utils.d.ts.map +1 -1
  204. package/dest/test-wallet/utils.js +65 -10
  205. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  206. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  207. package/dest/test-wallet/wallet_worker_script.js +56 -0
  208. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  209. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  210. package/dest/test-wallet/worker_wallet.js +157 -0
  211. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  212. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  213. package/dest/test-wallet/worker_wallet_schema.js +23 -0
  214. package/package.json +50 -47
  215. package/src/automine/README.md +60 -0
  216. package/src/automine/automine_test_context.ts +153 -0
  217. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  218. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  219. package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +44 -63
  220. package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +43 -58
  221. package/src/automine/token/token_test_helpers.ts +138 -0
  222. package/src/bench/client_flows/benchmark.ts +21 -0
  223. package/src/bench/client_flows/client_flows_benchmark.ts +102 -64
  224. package/src/bench/client_flows/data_extractor.ts +1 -0
  225. package/src/bench/utils.ts +116 -7
  226. package/src/composed/ha/ha_full_setup.ts +466 -0
  227. package/src/fixtures/authwit_proxy.ts +54 -0
  228. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  229. package/src/fixtures/e2e_prover_test.ts +97 -93
  230. package/src/fixtures/elu_monitor.ts +126 -0
  231. package/src/fixtures/fixtures.ts +110 -0
  232. package/src/fixtures/get_bb_config.ts +7 -6
  233. package/src/fixtures/ha_setup.ts +14 -6
  234. package/src/fixtures/index.ts +1 -0
  235. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  236. package/src/fixtures/setup.ts +406 -351
  237. package/src/fixtures/setup_p2p_test.ts +23 -27
  238. package/src/fixtures/timing.ts +97 -0
  239. package/src/fixtures/token_utils.ts +42 -7
  240. package/src/fixtures/utils.ts +2 -3
  241. package/src/fixtures/wait_helpers.ts +333 -0
  242. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  243. package/src/forward-compatibility/wallet_service.ts +106 -0
  244. package/src/guides/up_quick_start.sh +5 -2
  245. package/src/infra/README.md +12 -0
  246. package/src/install_legacy_contracts.cjs +75 -0
  247. package/src/legacy-jest-resolver.cjs +112 -0
  248. package/src/multi-node/README.md +95 -0
  249. package/src/multi-node/block-production/setup.ts +272 -0
  250. package/src/multi-node/governance/setup.ts +172 -0
  251. package/src/multi-node/multi_node_test_context.ts +447 -0
  252. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  253. package/src/multi-node/slashing/setup.ts +433 -0
  254. package/src/p2p/README.md +78 -0
  255. package/src/{e2e_p2p → p2p}/p2p_network.ts +116 -47
  256. package/src/{e2e_p2p → p2p}/reqresp/utils.ts +82 -26
  257. package/src/p2p/shared.ts +329 -0
  258. package/src/shared/cross_chain_test_harness.ts +42 -17
  259. package/src/shared/gas_portal_test_harness.ts +33 -15
  260. package/src/shared/index.ts +1 -0
  261. package/src/shared/jest_setup.ts +51 -1
  262. package/src/shared/mock_state_view.ts +188 -0
  263. package/src/shared/submit-transactions.ts +13 -5
  264. package/src/shared/timing_env.d.mts +39 -0
  265. package/src/shared/timing_env.mjs +363 -0
  266. package/src/shared/uniswap_l1_l2.ts +98 -54
  267. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  268. package/src/simulators/lending_simulator.ts +33 -15
  269. package/src/simulators/token_simulator.ts +6 -2
  270. package/src/single-node/README.md +60 -0
  271. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  272. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  273. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +19 -5
  274. package/src/{e2e_fees → single-node/fees}/fees_test.ts +114 -70
  275. package/src/single-node/l1-reorgs/setup.ts +93 -0
  276. package/src/single-node/partial-proofs/setup.ts +8 -0
  277. package/src/single-node/proving/setup.ts +15 -0
  278. package/src/single-node/recovery/setup.ts +8 -0
  279. package/src/single-node/setup.ts +63 -0
  280. package/src/single-node/single_node_test_context.ts +1041 -0
  281. package/src/spartan/setup_test_wallets.ts +165 -41
  282. package/src/spartan/tx_metrics.ts +108 -24
  283. package/src/spartan/utils/bot.ts +4 -1
  284. package/src/spartan/utils/config.ts +2 -0
  285. package/src/spartan/utils/index.ts +7 -0
  286. package/src/spartan/utils/k8s.ts +8 -0
  287. package/src/spartan/utils/nodes.ts +17 -12
  288. package/src/spartan/utils/pod_logs.ts +99 -0
  289. package/src/test-wallet/test_wallet.ts +228 -107
  290. package/src/test-wallet/utils.ts +104 -11
  291. package/src/test-wallet/wallet_worker_script.ts +66 -0
  292. package/src/test-wallet/worker_wallet.ts +216 -0
  293. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  294. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -55
  295. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  296. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
  297. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  298. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -129
  299. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
  300. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  301. package/dest/e2e_deploy_contract/deploy_test.js +0 -50
  302. package/dest/e2e_epochs/epochs_test.d.ts +0 -100
  303. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  304. package/dest/e2e_epochs/epochs_test.js +0 -367
  305. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  306. package/dest/e2e_fees/fees_test.d.ts +0 -88
  307. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  308. package/dest/e2e_l1_publisher/write_json.d.ts +0 -11
  309. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  310. package/dest/e2e_l1_publisher/write_json.js +0 -56
  311. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  312. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  313. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
  314. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  315. package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
  316. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  317. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  318. package/dest/e2e_p2p/inactivity_slash_test.js +0 -136
  319. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  320. package/dest/e2e_p2p/reqresp/utils.d.ts +0 -22
  321. package/dest/e2e_p2p/reqresp/utils.d.ts.map +0 -1
  322. package/dest/e2e_p2p/shared.d.ts +0 -46
  323. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  324. package/dest/e2e_p2p/shared.js +0 -181
  325. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +0 -2
  326. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +0 -1
  327. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +0 -1
  328. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -44
  329. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  330. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -193
  331. package/src/e2e_deploy_contract/deploy_test.ts +0 -85
  332. package/src/e2e_epochs/epochs_test.ts +0 -487
  333. package/src/e2e_l1_publisher/write_json.ts +0 -77
  334. package/src/e2e_nested_contract/nested_contract_test.ts +0 -73
  335. package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
  336. package/src/e2e_p2p/shared.ts +0 -290
  337. /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.js +0 -0
  338. /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.js +0 -0
  339. /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
  340. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof.json +0 -0
  341. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.ts +0 -0
  342. /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.ts +0 -0
  343. /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"}
@@ -5,8 +5,9 @@ import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist'
5
5
  import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
6
6
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
7
7
  import { jest } from '@jest/globals';
8
- import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
9
- 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';
10
11
  export class Role {
11
12
  isAdmin = false;
12
13
  isMinter = false;
@@ -33,94 +34,80 @@ export class Role {
33
34
  };
34
35
  }
35
36
  }
36
- 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 {
37
42
  // This value MUST match the same value that we have in the contract
38
43
  static CHANGE_ROLES_DELAY = 86400;
39
- context;
40
- logger;
41
- wallet;
42
44
  asset;
43
45
  tokenSim;
44
46
  badAccount;
45
- proxy;
46
- cheatCodes;
47
- sequencer;
48
- aztecNode;
47
+ authwitProxy;
49
48
  adminAddress;
50
49
  otherAddress;
51
50
  blacklistedAddress;
51
+ testName;
52
52
  constructor(testName){
53
- this.logger = createLogger(`e2e:e2e_blacklist_token_contract:${testName}`);
53
+ super();
54
+ this.testName = testName;
54
55
  }
55
56
  async crossTimestampOfChange() {
56
- await this.cheatCodes.warpL2TimeAtLeastBy(this.sequencer, this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
57
+ await this.markProvenAndWarp(BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
57
58
  }
58
59
  /**
59
60
  * Applies base setup:
60
61
  * 1. Add 3 accounts.
61
62
  * 2. Publicly deploy accounts, deploy token contract and a "bad account".
62
63
  */ async applyBaseSetup() {
63
- // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
64
- jest.setTimeout(120_000);
65
- this.logger.info('Deploying 3 accounts');
66
- const { deployedAccounts } = await deployAccounts(3, this.logger)({
67
- wallet: this.context.wallet,
68
- initialFundedAccounts: this.context.initialFundedAccounts
69
- });
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);
70
67
  this.cheatCodes = this.context.cheatCodes;
71
68
  this.aztecNode = this.context.aztecNodeService;
72
69
  this.sequencer = this.context.sequencer;
73
70
  this.wallet = this.context.wallet;
74
- this.adminAddress = deployedAccounts[0].address;
75
- this.otherAddress = deployedAccounts[1].address;
76
- this.blacklistedAddress = deployedAccounts[2].address;
71
+ [this.adminAddress, this.otherAddress, this.blacklistedAddress] = this.context.accounts;
77
72
  this.logger.info('Setting up blacklist token contract');
78
- // Create the token contract state.
79
- this.logger.verbose(`Public deploy accounts...`);
80
- await publicDeployAccounts(this.wallet, [
81
- this.adminAddress,
82
- this.otherAddress,
83
- this.blacklistedAddress
84
- ]);
73
+ await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
85
74
  this.logger.verbose(`Deploying TokenContract...`);
86
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
75
+ ({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
87
76
  from: this.adminAddress
88
- });
77
+ }));
89
78
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
90
79
  this.logger.verbose(`Deploying bad account...`);
91
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
80
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
92
81
  from: this.adminAddress
93
- });
82
+ }));
94
83
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
95
84
  // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
96
85
  // (so their notes are in scope), but msg_sender in the target must differ from the note owner
97
86
  // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
98
87
  this.logger.verbose(`Deploying generic proxy...`);
99
- this.proxy = await GenericProxyContract.deploy(this.wallet).send({
88
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
100
89
  from: this.adminAddress
101
- });
102
- this.logger.verbose(`Deployed to ${this.proxy.address}.`);
90
+ }));
91
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
103
92
  await this.crossTimestampOfChange();
104
93
  this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
105
94
  this.adminAddress,
106
95
  this.otherAddress,
107
96
  this.blacklistedAddress
108
97
  ]);
109
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
98
+ expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
110
99
  from: this.adminAddress
111
- })).toEqual(new Role().withAdmin().toNoirStruct());
100
+ })).result).toEqual(new Role().withAdmin().toNoirStruct());
112
101
  }
113
- async setup() {
114
- this.logger.info('Setting up fresh context');
115
- this.context = await setup(0, {
116
- fundSponsoredFPC: true,
117
- skipAccountDeployment: true
102
+ async setup(opts = {}) {
103
+ await super.setup({
104
+ numberOfAccounts: 3,
105
+ ...opts
118
106
  });
107
+ // hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
108
+ this.logger = createLogger(`e2e:automine:blacklist:${this.testName}`);
119
109
  await this.applyBaseSetup();
120
110
  }
121
- async teardown() {
122
- await teardown(this.context);
123
- }
124
111
  async addPendingShieldNoteToPXE(contract, recipient, amount, secretHash, txHash) {
125
112
  const txEffects = await this.aztecNode.getTxEffect(txHash);
126
113
  await contract.methods.process_transparent_note(contract.address, amount, secretHash, txHash.hash, txEffects.data.noteHashes, txEffects.data.nullifiers[0], recipient).simulate({
@@ -140,9 +127,9 @@ export class BlacklistTokenContractTest {
140
127
  from: this.adminAddress
141
128
  });
142
129
  await this.crossTimestampOfChange();
143
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
130
+ expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
144
131
  from: this.adminAddress
145
- })).toEqual(adminMinterRole.toNoirStruct());
132
+ })).result).toEqual(adminMinterRole.toNoirStruct());
146
133
  this.logger.verbose(`Minting ${amount} publicly...`);
147
134
  await asset.methods.mint_public(this.adminAddress, amount).send({
148
135
  from: this.adminAddress
@@ -150,7 +137,7 @@ export class BlacklistTokenContractTest {
150
137
  this.logger.verbose(`Minting ${amount} privately...`);
151
138
  const secret = Fr.random();
152
139
  const secretHash = await computeSecretHash(secret);
153
- const receipt = await asset.methods.mint_private(amount, secretHash).send({
140
+ const { receipt } = await asset.methods.mint_private(amount, secretHash).send({
154
141
  from: this.adminAddress
155
142
  });
156
143
  await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
@@ -159,18 +146,18 @@ export class BlacklistTokenContractTest {
159
146
  });
160
147
  this.logger.verbose(`Minting complete.`);
161
148
  tokenSim.mintPublic(this.adminAddress, amount);
162
- const publicBalance = await asset.methods.balance_of_public(this.adminAddress).simulate({
149
+ const { result: publicBalance } = await asset.methods.balance_of_public(this.adminAddress).simulate({
163
150
  from: this.adminAddress
164
151
  });
165
152
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
166
153
  expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
167
154
  tokenSim.mintPrivate(this.adminAddress, amount);
168
- const privateBalance = await asset.methods.balance_of_private(this.adminAddress).simulate({
155
+ const { result: privateBalance } = await asset.methods.balance_of_private(this.adminAddress).simulate({
169
156
  from: this.adminAddress
170
157
  });
171
158
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
172
159
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
173
- const totalSupply = await asset.methods.total_supply().simulate({
160
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({
174
161
  from: this.adminAddress
175
162
  });
176
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"}
@@ -3,30 +3,34 @@ import { TokenContract } from '@aztec/noir-contracts.js/Token';
3
3
  import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
4
4
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
5
5
  import { jest } from '@jest/globals';
6
- import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
7
- import { mintTokensToPrivate } from '../fixtures/token_utils.js';
8
- 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';
9
10
  const { METRICS_PORT: metricsPort } = process.env;
10
- 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 {
11
17
  static TOKEN_NAME = 'USDC';
12
18
  static TOKEN_SYMBOL = 'USD';
13
19
  static TOKEN_DECIMALS = 18n;
14
- context;
15
- logger;
16
20
  metricsPort;
17
21
  asset;
18
22
  tokenSim;
19
23
  node;
20
24
  badAccount;
21
- proxy;
22
- wallet;
25
+ authwitProxy;
23
26
  adminAddress;
24
- account1Address;
27
+ otherAddress;
25
28
  account2Address;
26
29
  shouldApplyBaseSetup = false;
27
- shouldApplyMint = false;
30
+ testName;
28
31
  constructor(testName){
29
- this.logger = createLogger(`e2e:e2e_token_contract:${testName}`);
32
+ super();
33
+ this.testName = testName;
30
34
  this.metricsPort = metricsPort ? parseInt(metricsPort) : undefined;
31
35
  }
32
36
  /**
@@ -36,73 +40,54 @@ export class TokenContractTest {
36
40
  this.shouldApplyBaseSetup = true;
37
41
  }
38
42
  /**
39
- * Registers that mint should be applied during setup().
40
- * Call this before setup() to mint tokens to the admin account.
41
- */ applyMintSnapshot() {
42
- this.shouldApplyMint = true;
43
- }
44
- /**
45
43
  * Applies base setup: deploys 3 accounts, publicly deploys accounts, token contract and a "bad account".
46
44
  */ async applyBaseSetup() {
47
45
  // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
48
46
  jest.setTimeout(120_000);
49
- this.logger.info('Applying base setup - deploying 3 accounts');
50
- const { deployedAccounts } = await deployAccounts(3, this.logger)({
51
- wallet: this.context.wallet,
52
- initialFundedAccounts: this.context.initialFundedAccounts
53
- });
54
47
  this.node = this.context.aztecNodeService;
55
48
  this.wallet = this.context.wallet;
56
- [this.adminAddress, this.account1Address, this.account2Address] = deployedAccounts.map((acc)=>acc.address);
49
+ [this.adminAddress, this.otherAddress, this.account2Address] = this.context.accounts;
57
50
  this.logger.info('Applying base setup - deploying token contract');
58
- this.logger.verbose(`Public deploy accounts...`);
59
- await publicDeployAccounts(this.wallet, [
60
- this.adminAddress,
61
- this.account1Address
62
- ]);
51
+ await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
63
52
  this.logger.verbose(`Deploying TokenContract...`);
64
- 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({
65
54
  from: this.adminAddress
66
- });
55
+ }));
67
56
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
68
57
  this.logger.verbose(`Deploying bad account...`);
69
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
58
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
70
59
  from: this.adminAddress
71
- });
60
+ }));
72
61
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
73
62
  // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
74
63
  // (so their notes are in scope), but msg_sender in the target must differ from the note owner
75
64
  // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
76
65
  this.logger.verbose(`Deploying generic proxy...`);
77
- this.proxy = await GenericProxyContract.deploy(this.wallet).send({
66
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
78
67
  from: this.adminAddress
79
- });
80
- this.logger.verbose(`Deployed to ${this.proxy.address}.`);
68
+ }));
69
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
81
70
  this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
82
71
  this.adminAddress,
83
- this.account1Address
72
+ this.otherAddress
84
73
  ]);
85
- expect(await this.asset.methods.get_admin().simulate({
74
+ expect((await this.asset.methods.get_admin().simulate({
86
75
  from: this.adminAddress
87
- })).toBe(this.adminAddress.toBigInt());
76
+ })).result).toBe(this.adminAddress.toBigInt());
88
77
  }
89
- async setup() {
90
- this.context = await setup(0, {
78
+ async setup(opts = {}) {
79
+ await super.setup({
80
+ numberOfAccounts: 3,
91
81
  metricsPort: this.metricsPort,
92
- fundSponsoredFPC: true,
93
- skipAccountDeployment: true
82
+ ...opts
94
83
  });
84
+ // hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
85
+ this.logger = createLogger(`e2e:automine:token:${this.testName}`);
95
86
  if (this.shouldApplyBaseSetup) {
96
87
  await this.applyBaseSetup();
97
88
  }
98
- if (this.shouldApplyMint) {
99
- await this.applyMint();
100
- }
101
- }
102
- async teardown() {
103
- await teardown(this.context);
104
89
  }
105
- async applyMint() {
90
+ /** Mints an initial public and private balance to the admin account. Call after {@link setup}. */ async applyMint() {
106
91
  this.logger.info('Applying mint setup');
107
92
  const { asset, adminAddress, tokenSim } = this;
108
93
  const amount = 10000n;
@@ -111,7 +96,7 @@ export class TokenContractTest {
111
96
  from: adminAddress
112
97
  });
113
98
  tokenSim.mintPublic(adminAddress, amount);
114
- const publicBalance = await asset.methods.balance_of_public(adminAddress).simulate({
99
+ const { result: publicBalance } = await asset.methods.balance_of_public(adminAddress).simulate({
115
100
  from: adminAddress
116
101
  });
117
102
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
@@ -119,12 +104,12 @@ export class TokenContractTest {
119
104
  this.logger.verbose(`Minting ${amount} privately...`);
120
105
  await mintTokensToPrivate(asset, adminAddress, adminAddress, amount);
121
106
  tokenSim.mintPrivate(adminAddress, amount);
122
- const privateBalance = await asset.methods.balance_of_private(adminAddress).simulate({
107
+ const { result: privateBalance } = await asset.methods.balance_of_private(adminAddress).simulate({
123
108
  from: adminAddress
124
109
  });
125
110
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
126
111
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(adminAddress));
127
- const totalSupply = await asset.methods.total_supply().simulate({
112
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({
128
113
  from: adminAddress
129
114
  });
130
115
  this.logger.verbose(`Total supply: ${totalSupply}`);