@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,125 @@
1
+ import { AztecAddress, type CompleteAddress } from '@aztec/aztec.js/addresses';
2
+ import { DomainSeparator } from '@aztec/constants';
3
+ import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
4
+ import { Schnorr, type SchnorrSignature } from '@aztec/foundation/crypto/schnorr';
5
+ import { Fq, Fr } from '@aztec/foundation/curves/bn254';
6
+ import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
7
+ import type { CustomRequest } from '@aztec/pxe/config';
8
+ import {
9
+ INTERACTIVE_HANDSHAKE_REQUEST_KIND,
10
+ STANDARD_HANDSHAKE_REGISTRY_ADDRESS,
11
+ } from '@aztec/standard-contracts/handshake-registry/constants';
12
+ import { type PublicKeys, derivePublicKeyFromSecretKey } from '@aztec/stdlib/keys';
13
+
14
+ /**
15
+ * The decoded payload of the registry's interactive-handshake signature request. Note it never carries the sender,
16
+ * so the recipient authorizes the handshake without learning who initiated it.
17
+ */
18
+ export type InteractiveHandshakeRequest = {
19
+ /** The account whose authorization is being requested. */
20
+ recipient: AztecAddress;
21
+ chainId: Fr;
22
+ version: Fr;
23
+ /** The x-coordinate of the handshake's ephemeral public key (its y-coordinate is positive by construction). */
24
+ ephPkX: Fr;
25
+ };
26
+
27
+ /**
28
+ * The recipient's signed authorization for an interactive handshake. Mirrors the registry contract's
29
+ * `RecipientSignature` struct field for field.
30
+ */
31
+ export type RecipientSignature = {
32
+ /** The recipient's master public keys, bound in-circuit to the recipient's address via `partialAddress`. */
33
+ publicKeys: PublicKeys;
34
+ partialAddress: Fr;
35
+ /** The x-coordinate of the recipient's master message-signing public key. */
36
+ mspkX: Fr;
37
+ /** Whether that key's y-coordinate is positive, so the circuit can reconstruct the point from `mspkX`. */
38
+ mspkYIsPositive: boolean;
39
+ /** The schnorr signature over the handshake message. */
40
+ signature: SchnorrSignature;
41
+ };
42
+
43
+ /**
44
+ * Parses and validates the registry's interactive-handshake signature request.
45
+ *
46
+ * @throws If the request kind is not {@link INTERACTIVE_HANDSHAKE_REQUEST_KIND}, the issuing contract is not the
47
+ * standard HandshakeRegistry, or the payload does not have the expected shape.
48
+ */
49
+ export function parseInteractiveHandshakeRequest(request: CustomRequest): InteractiveHandshakeRequest {
50
+ if (!request.kind.equals(INTERACTIVE_HANDSHAKE_REQUEST_KIND)) {
51
+ throw new Error(`Not an interactive-handshake signature request: unexpected kind ${request.kind}`);
52
+ }
53
+ if (!request.contractAddress.equals(STANDARD_HANDSHAKE_REGISTRY_ADDRESS)) {
54
+ throw new Error(
55
+ `Interactive-handshake signature request issued by ${request.contractAddress}, expected the standard HandshakeRegistry at ${STANDARD_HANDSHAKE_REGISTRY_ADDRESS}`,
56
+ );
57
+ }
58
+ if (request.payload.length !== 4) {
59
+ throw new Error(`Interactive-handshake signature request payload has ${request.payload.length} fields, expected 4`);
60
+ }
61
+
62
+ const [recipient, chainId, version, ephPkX] = request.payload;
63
+ return { recipient: new AztecAddress(recipient), chainId, version, ephPkX };
64
+ }
65
+
66
+ /**
67
+ * Produces the recipient's signed authorization for an interactive handshake, signing with the master
68
+ * message-signing secret key.
69
+ */
70
+ export async function signInteractiveHandshake(
71
+ request: InteractiveHandshakeRequest,
72
+ completeAddress: CompleteAddress,
73
+ masterMessageSigningSecretKey: GrumpkinScalar,
74
+ ): Promise<RecipientSignature> {
75
+ const mspk = await derivePublicKeyFromSecretKey(masterMessageSigningSecretKey);
76
+ const [mspkX, mspkYIsPositive] = mspk.toXAndSign();
77
+
78
+ const message = await computeInteractiveHandshakeSignatureMessage({
79
+ chainId: request.chainId,
80
+ version: request.version,
81
+ registry: STANDARD_HANDSHAKE_REGISTRY_ADDRESS,
82
+ ephPkX: request.ephPkX,
83
+ });
84
+ const signature = await new Schnorr().constructSignature(message, masterMessageSigningSecretKey);
85
+
86
+ return {
87
+ publicKeys: completeAddress.publicKeys,
88
+ partialAddress: completeAddress.partialAddress,
89
+ mspkX,
90
+ mspkYIsPositive,
91
+ signature,
92
+ };
93
+ }
94
+
95
+ /** Serializes a {@link RecipientSignature} to the field layout the registry's in-circuit deserialization expects. */
96
+ export function recipientSignatureToFields(recipientSignature: RecipientSignature): Fr[] {
97
+ const s = Fq.fromBuffer(recipientSignature.signature.s);
98
+ const e = Fq.fromBuffer(recipientSignature.signature.e);
99
+ return [
100
+ ...recipientSignature.publicKeys.toFields(),
101
+ recipientSignature.partialAddress,
102
+ recipientSignature.mspkX,
103
+ new Fr(recipientSignature.mspkYIsPositive),
104
+ s.lo,
105
+ s.hi,
106
+ e.lo,
107
+ e.hi,
108
+ ];
109
+ }
110
+
111
+ /**
112
+ * The message an interactive-handshake authorization signs: the handshake's ephemeral key and chain context under
113
+ * `DomainSeparator.INTERACTIVE_HANDSHAKE_SIGNATURE`, exactly as the registry recomputes it in-circuit.
114
+ */
115
+ function computeInteractiveHandshakeSignatureMessage(args: {
116
+ chainId: Fr;
117
+ version: Fr;
118
+ registry: AztecAddress;
119
+ ephPkX: Fr;
120
+ }): Promise<Fr> {
121
+ return poseidon2HashWithSeparator(
122
+ [args.chainId, args.version, args.registry, args.ephPkX],
123
+ DomainSeparator.INTERACTIVE_HANDSHAKE_SIGNATURE,
124
+ );
125
+ }
@@ -0,0 +1,213 @@
1
+ import { type InitialAccountData, generateSchnorrAccounts } from '@aztec/accounts/testing';
2
+ import type { FieldLike } from '@aztec/aztec.js/abi';
3
+ import { NO_FROM } from '@aztec/aztec.js/account';
4
+ import type { AztecAddress, CompleteAddress } from '@aztec/aztec.js/addresses';
5
+ import type { AztecNode } from '@aztec/aztec.js/node';
6
+ import type { AccountManager } from '@aztec/aztec.js/wallet';
7
+ import { BlockNumber } from '@aztec/foundation/branded-types';
8
+ import { type DeliveryEvent, OnchainDeliveryTestContract } from '@aztec/noir-test-contracts.js/OnchainDeliveryTest';
9
+ import type { CustomRequest, ResolveCustomRequest, ResolveTaggingSecretStrategy } from '@aztec/pxe/config';
10
+ import type { AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
11
+
12
+ import { jest } from '@jest/globals';
13
+
14
+ import { AUTOMINE_E2E_OPTS } from '../../fixtures/fixtures.js';
15
+ import { ensureHandshakeRegistryPublished, setup, setupPXEAndGetWallet } from '../../fixtures/setup.js';
16
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
17
+
18
+ // Builds the hook serving custom requests issued during the sender's simulations. Installed on the sender PXE at
19
+ // creation but built only once the recipient exists, since serving typically needs the recipient's wallet and keys.
20
+ export type CustomRequestResponder = (
21
+ recipient: TestWallet,
22
+ recipientAccount: InitialAccountData,
23
+ recipientCompleteAddress: CompleteAddress,
24
+ ) => ResolveCustomRequest;
25
+
26
+ export type Mode = 'constrained' | 'unconstrained';
27
+
28
+ // A single mode applies to both the event and note sends; `{ events, notes }` sends each in its own mode, which
29
+ // exercises cross-mode handshake reuse: bootstrap in one mode, deliver in the other on the same handshake.
30
+ export type DeliveryMode = Mode | { events: Mode; notes: Mode };
31
+
32
+ const formatMode = (mode: DeliveryMode): string => (typeof mode === 'string' ? mode : `${mode.events}->${mode.notes}`);
33
+
34
+ // Onchain private delivery has two orthogonal axes: the delivery MODE (constrained = nullifier-chained sequence;
35
+ // unconstrained = no nullifier, windowed scan) and the tagging-secret SOURCE, which the wallet's
36
+ // `resolveTaggingSecretStrategy` hook selects. This harness exercises (strategy, mode) cells end to end across two
37
+ // PXEs that share only a node: the sender PXE sends, the recipient PXE discovers purely from onchain logs plus the
38
+ // HandshakeRegistry.
39
+ //
40
+ // Cross-PXE is the meaningful setup: the recipient PXE holds no sender state, so a cell only "discovers" a message if
41
+ // the source truly reached it.
42
+ export function buildMessageDeliveryTest(opts: {
43
+ // Names the tagging-secret source, e.g. 'non-interactive handshake' or 'arbitrary secret'. The describe title is
44
+ // derived as `${strategy} x ${mode}`.
45
+ strategy: string;
46
+ mode: DeliveryMode;
47
+ // Required: every cell states its source explicitly rather than leaning on the PXE default (covered by unit tests).
48
+ senderHook: ResolveTaggingSecretStrategy;
49
+ // Recipient-side setup the source requires (e.g. registering a raw arbitrary secret); runs once after deployment.
50
+ recipientRegistration?: (
51
+ recipient: TestWallet,
52
+ recipientAddress: AztecAddress,
53
+ sender: AztecAddress,
54
+ ) => Promise<void>;
55
+ // Serves the custom requests issued during the sender's simulations (e.g. the registry's interactive-handshake
56
+ // signature request).
57
+ customRequestResponder?: CustomRequestResponder;
58
+ // Extra `it()`s to register in this cell's suite, e.g. assertions against state a custom `senderHook` recorded.
59
+ // Called inside the same `describe`, after the two baseline assertions below, so it shares their `beforeAll`
60
+ // instead of depending on Jest's cross-`describe` execution order.
61
+ additionalTests?: () => void;
62
+ }) {
63
+ const { strategy, mode, senderHook, recipientRegistration, customRequestResponder, additionalTests } = opts;
64
+ const description = `${strategy} x ${formatMode(mode)}`;
65
+
66
+ describe(description, () => {
67
+ jest.setTimeout(300_000);
68
+
69
+ const eventValues = [10n, 20n, 30n];
70
+ const noteValues = [40n, 50n, 60n];
71
+
72
+ let aztecNode: AztecNode & AztecNodeDebug;
73
+ let walletSender: TestWallet;
74
+ let walletRecipient: TestWallet;
75
+ let sender: AztecAddress;
76
+ let recipient: AztecAddress;
77
+ let contractSender: OnchainDeliveryTestContract;
78
+ let teardownSender: () => Promise<void>;
79
+ let teardownRecipient: () => Promise<void>;
80
+ // Discovery results captured in beforeAll, so the assertions in the actual tests below stay pure.
81
+ // A failure during delivery fails beforeAll loudly instead of being swallowed as an expected red.
82
+ let discoveredEvents: FieldLike[];
83
+ let readNotes: bigint[];
84
+
85
+ const { events: eventMode, notes: noteMode } = typeof mode === 'string' ? { events: mode, notes: mode } : mode;
86
+ const sendEvent = (value: bigint) =>
87
+ eventMode === 'constrained'
88
+ ? contractSender.methods.emit_event(recipient, value)
89
+ : contractSender.methods.emit_event_unconstrained(recipient, value);
90
+ const sendNote = (value: bigint) =>
91
+ noteMode === 'constrained'
92
+ ? contractSender.methods.emit_note(recipient, value)
93
+ : contractSender.methods.emit_note_unconstrained(recipient, value);
94
+
95
+ let additionallyFundedAccounts: InitialAccountData[];
96
+ let recipientAccount: AccountManager | undefined;
97
+ let customRequestCount = 0;
98
+
99
+ beforeAll(async () => {
100
+ // The sender PXE holds the sender and carries this cell's tagging-secret-strategy hook. The recipient is funded
101
+ // at genesis here but created and deployed on the isolated recipient PXE below, so it carries no sender state
102
+ // from other cells.
103
+ ({
104
+ aztecNode,
105
+ additionallyFundedAccounts,
106
+ wallet: walletSender,
107
+ accounts: [sender],
108
+ teardown: teardownSender,
109
+ } = await setup(1, {
110
+ ...AUTOMINE_E2E_OPTS,
111
+ additionallyFundedAccounts: await generateSchnorrAccounts(1, 'schnorr'),
112
+ pxeCreationOptions: {
113
+ hooks: {
114
+ resolveTaggingSecretStrategy: senderHook,
115
+ resolveCustomRequest: async (request: CustomRequest) => {
116
+ if (!customRequestResponder) {
117
+ throw new Error('A custom request arrived but this test cell has no customRequestResponder configured');
118
+ }
119
+ if (!recipientAccount) {
120
+ throw new Error('A custom request arrived before the recipient wallet was created');
121
+ }
122
+ customRequestCount++;
123
+ const respond = customRequestResponder(
124
+ walletRecipient,
125
+ additionallyFundedAccounts[0],
126
+ await recipientAccount.getCompleteAddress(),
127
+ );
128
+ return respond(request);
129
+ },
130
+ },
131
+ },
132
+ }));
133
+
134
+ ({ wallet: walletRecipient, teardown: teardownRecipient } = await setupPXEAndGetWallet(
135
+ aztecNode,
136
+ aztecNode,
137
+ {},
138
+ undefined,
139
+ 'pxe-recipient',
140
+ ));
141
+ recipientAccount = await walletRecipient.createSchnorrAccount(
142
+ additionallyFundedAccounts[0].secret,
143
+ additionallyFundedAccounts[0].salt,
144
+ additionallyFundedAccounts[0].signingKey,
145
+ );
146
+ await (await recipientAccount.getDeployMethod()).send({ from: NO_FROM });
147
+ recipient = recipientAccount.address;
148
+
149
+ await ensureHandshakeRegistryPublished(walletSender, sender);
150
+ const { contract: deployed, instance } = await OnchainDeliveryTestContract.deploy(walletSender).send({
151
+ from: sender,
152
+ });
153
+ contractSender = deployed;
154
+
155
+ await ensureHandshakeRegistryPublished(walletRecipient, recipient);
156
+ await walletRecipient.registerContract(instance, OnchainDeliveryTestContract.artifact);
157
+
158
+ await recipientRegistration?.(walletRecipient, recipient, sender);
159
+
160
+ // Constrained sends to one pair are strictly ordered, so deliver one tx at a time. The first send bootstraps the
161
+ // handshake (when the source is a handshake); the rest reuse it.
162
+ const blockNumbers: number[] = [];
163
+ for (const value of eventValues) {
164
+ const { receipt } = await sendEvent(value).send({ from: sender });
165
+ blockNumbers.push(receipt.blockNumber!);
166
+ }
167
+ for (const value of noteValues) {
168
+ await sendNote(value).send({ from: sender });
169
+ }
170
+
171
+ await walletRecipient.sync();
172
+
173
+ const events = await walletRecipient.getPrivateEvents<DeliveryEvent>(
174
+ OnchainDeliveryTestContract.events.DeliveryEvent,
175
+ {
176
+ contractAddress: contractSender.address,
177
+ fromBlock: BlockNumber(Math.min(...blockNumbers)),
178
+ toBlock: BlockNumber(Math.max(...blockNumbers) + 1),
179
+ scopes: [recipient],
180
+ },
181
+ );
182
+ discoveredEvents = events.map(e => e.event.value);
183
+
184
+ const contractRecipient = OnchainDeliveryTestContract.at(contractSender.address, walletRecipient);
185
+ const { result } = await contractRecipient.methods.get_note_values(recipient).simulate({ from: recipient });
186
+ readNotes = result.storage.slice(0, Number(result.len));
187
+ });
188
+
189
+ afterAll(async () => {
190
+ await teardownRecipient();
191
+ await teardownSender();
192
+ });
193
+
194
+ it('the recipient PXE discovers the events delivered by the sender PXE', () => {
195
+ expect(discoveredEvents.length).toBe(eventValues.length);
196
+ for (const value of eventValues) {
197
+ expect(discoveredEvents).toContainEqual(value);
198
+ }
199
+ });
200
+
201
+ it('the recipient PXE reads back the notes delivered by the sender PXE', () => {
202
+ expect(readNotes).toEqual(noteValues);
203
+ });
204
+
205
+ if (customRequestResponder) {
206
+ it('the custom request hook fires exactly once, on the send that bootstraps the tagging secret', () => {
207
+ expect(customRequestCount).toBe(1);
208
+ });
209
+ }
210
+
211
+ additionalTests?.();
212
+ });
213
+ }
@@ -1,21 +1,18 @@
1
1
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { computeSecretHash } from '@aztec/aztec.js/crypto';
3
3
  import { Fr } from '@aztec/aztec.js/fields';
4
- import { type Logger, createLogger } from '@aztec/aztec.js/log';
5
- import type { AztecNode } from '@aztec/aztec.js/node';
4
+ import { createLogger } from '@aztec/aztec.js/log';
6
5
  import type { TxHash } from '@aztec/aztec.js/tx';
7
- import type { CheatCodes } from '@aztec/aztec/testing';
8
6
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
9
7
  import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
10
8
  import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
11
9
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
12
- import type { SequencerClient } from '@aztec/sequencer-client';
13
10
 
14
11
  import { jest } from '@jest/globals';
15
12
 
16
- import { type EndToEndContext, deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
17
- import { TokenSimulator } from '../simulators/token_simulator.js';
18
- import type { TestWallet } from '../test-wallet/test_wallet.js';
13
+ import { ensureAuthRegistryPublished } from '../../fixtures/setup.js';
14
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
15
+ import { AutomineTestContext, type AutomineTestOpts } from '../automine_test_context.js';
19
16
 
20
17
  export class Role {
21
18
  private isAdmin = false;
@@ -44,35 +41,33 @@ export class Role {
44
41
  }
45
42
  }
46
43
 
47
- export class BlacklistTokenContractTest {
44
+ /**
45
+ * TokenBlacklist-domain harness over the automine topology: extends {@link AutomineTestContext} with a
46
+ * {@link TokenSimulator}, the {@link Role} helper, the TokenBlacklist deploy plus a bad-account and
47
+ * authwit proxy, and the role-change-delay warp. Base setup and mint run in {@link setup}.
48
+ */
49
+ export class BlacklistTokenContractTest extends AutomineTestContext {
48
50
  // This value MUST match the same value that we have in the contract
49
51
  static CHANGE_ROLES_DELAY = 86400;
50
52
 
51
- context!: EndToEndContext;
52
- logger: Logger;
53
- wallet!: TestWallet;
54
53
  asset!: TokenBlacklistContract;
55
54
  tokenSim!: TokenSimulator;
56
55
  badAccount!: InvalidAccountContract;
57
- proxy!: GenericProxyContract;
58
- cheatCodes!: CheatCodes;
59
- sequencer!: SequencerClient;
60
- aztecNode!: AztecNode;
56
+ authwitProxy!: GenericProxyContract;
61
57
 
62
58
  adminAddress!: AztecAddress;
63
59
  otherAddress!: AztecAddress;
64
60
  blacklistedAddress!: AztecAddress;
65
61
 
62
+ private testName: string;
63
+
66
64
  constructor(testName: string) {
67
- this.logger = createLogger(`e2e:e2e_blacklist_token_contract:${testName}`);
65
+ super();
66
+ this.testName = testName;
68
67
  }
69
68
 
70
69
  async crossTimestampOfChange() {
71
- await this.cheatCodes.warpL2TimeAtLeastBy(
72
- this.sequencer,
73
- this.aztecNode,
74
- BlacklistTokenContractTest.CHANGE_ROLES_DELAY,
75
- );
70
+ await this.markProvenAndWarp(BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
76
71
  }
77
72
 
78
73
  /**
@@ -81,47 +76,39 @@ export class BlacklistTokenContractTest {
81
76
  * 2. Publicly deploy accounts, deploy token contract and a "bad account".
82
77
  */
83
78
  async applyBaseSetup() {
84
- // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
85
- jest.setTimeout(120_000);
86
-
87
- this.logger.info('Deploying 3 accounts');
88
- const { deployedAccounts } = await deployAccounts(
89
- 3,
90
- this.logger,
91
- )({
92
- wallet: this.context.wallet,
93
- initialFundedAccounts: this.context.initialFundedAccounts,
94
- });
79
+ // Bumped from 2 min: pipelined cadence (~24s/dependent-tx) makes the 3-account deploy plus token/bad-account/
80
+ // proxy deploys exceed the original window.
81
+ jest.setTimeout(600_000);
95
82
 
96
83
  this.cheatCodes = this.context.cheatCodes;
97
84
  this.aztecNode = this.context.aztecNodeService;
98
85
  this.sequencer = this.context.sequencer!;
99
86
  this.wallet = this.context.wallet;
100
- this.adminAddress = deployedAccounts[0].address;
101
- this.otherAddress = deployedAccounts[1].address;
102
- this.blacklistedAddress = deployedAccounts[2].address;
87
+ [this.adminAddress, this.otherAddress, this.blacklistedAddress] = this.context.accounts;
103
88
 
104
89
  this.logger.info('Setting up blacklist token contract');
105
- // Create the token contract state.
106
- this.logger.verbose(`Public deploy accounts...`);
107
- await publicDeployAccounts(this.wallet, [this.adminAddress, this.otherAddress, this.blacklistedAddress]);
90
+ await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
108
91
 
109
92
  this.logger.verbose(`Deploying TokenContract...`);
110
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
93
+ ({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
111
94
  from: this.adminAddress,
112
- });
95
+ }));
113
96
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
114
97
 
115
98
  this.logger.verbose(`Deploying bad account...`);
116
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({ from: this.adminAddress });
99
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
100
+ from: this.adminAddress,
101
+ }));
117
102
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
118
103
 
119
104
  // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
120
105
  // (so their notes are in scope), but msg_sender in the target must differ from the note owner
121
106
  // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
122
107
  this.logger.verbose(`Deploying generic proxy...`);
123
- this.proxy = await GenericProxyContract.deploy(this.wallet).send({ from: this.adminAddress });
124
- this.logger.verbose(`Deployed to ${this.proxy.address}.`);
108
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
109
+ from: this.adminAddress,
110
+ }));
111
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
125
112
 
126
113
  await this.crossTimestampOfChange();
127
114
 
@@ -133,24 +120,18 @@ export class BlacklistTokenContractTest {
133
120
  [this.adminAddress, this.otherAddress, this.blacklistedAddress],
134
121
  );
135
122
 
136
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
137
- new Role().withAdmin().toNoirStruct(),
138
- );
123
+ expect(
124
+ (await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
125
+ ).toEqual(new Role().withAdmin().toNoirStruct());
139
126
  }
140
127
 
141
- async setup() {
142
- this.logger.info('Setting up fresh context');
143
- this.context = await setup(0, {
144
- fundSponsoredFPC: true,
145
- skipAccountDeployment: true,
146
- });
128
+ override async setup(opts: AutomineTestOpts = {}) {
129
+ await super.setup({ numberOfAccounts: 3, ...opts });
130
+ // hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
131
+ this.logger = createLogger(`e2e:automine:blacklist:${this.testName}`);
147
132
  await this.applyBaseSetup();
148
133
  }
149
134
 
150
- async teardown() {
151
- await teardown(this.context);
152
- }
153
-
154
135
  async addPendingShieldNoteToPXE(
155
136
  contract: TokenBlacklistContract,
156
137
  recipient: AztecAddress,
@@ -189,9 +170,9 @@ export class BlacklistTokenContractTest {
189
170
 
190
171
  await this.crossTimestampOfChange();
191
172
 
192
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
193
- adminMinterRole.toNoirStruct(),
194
- );
173
+ expect(
174
+ (await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
175
+ ).toEqual(adminMinterRole.toNoirStruct());
195
176
 
196
177
  this.logger.verbose(`Minting ${amount} publicly...`);
197
178
  await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress });
@@ -199,7 +180,7 @@ export class BlacklistTokenContractTest {
199
180
  this.logger.verbose(`Minting ${amount} privately...`);
200
181
  const secret = Fr.random();
201
182
  const secretHash = await computeSecretHash(secret);
202
- const receipt = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
183
+ const { receipt } = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
203
184
 
204
185
  await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
205
186
  await asset.methods.redeem_shield(this.adminAddress, amount, secret).send({ from: this.adminAddress });
@@ -207,20 +188,20 @@ export class BlacklistTokenContractTest {
207
188
 
208
189
  tokenSim.mintPublic(this.adminAddress, amount);
209
190
 
210
- const publicBalance = await asset.methods
191
+ const { result: publicBalance } = await asset.methods
211
192
  .balance_of_public(this.adminAddress)
212
193
  .simulate({ from: this.adminAddress });
213
194
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
214
195
  expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
215
196
 
216
197
  tokenSim.mintPrivate(this.adminAddress, amount);
217
- const privateBalance = await asset.methods
198
+ const { result: privateBalance } = await asset.methods
218
199
  .balance_of_private(this.adminAddress)
219
200
  .simulate({ from: this.adminAddress });
220
201
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
221
202
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
222
203
 
223
- const totalSupply = await asset.methods.total_supply().simulate({ from: this.adminAddress });
204
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({ from: this.adminAddress });
224
205
  this.logger.verbose(`Total supply: ${totalSupply}`);
225
206
  expect(totalSupply).toEqual(tokenSim.totalSupply);
226
207
  }