@aztec/end-to-end 0.0.1-commit.d431d1c → 0.0.1-commit.d58ff9d0

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 (366) 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/automine/contracts/fixtures/storage_proof_fetcher.js +184 -0
  8. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts +18 -0
  9. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
  10. package/dest/automine/contracts/fixtures/storage_proof_fixture.js +120 -0
  11. package/dest/automine/delivery/interactive_handshake_responder.d.ts +48 -0
  12. package/dest/automine/delivery/interactive_handshake_responder.d.ts.map +1 -0
  13. package/dest/automine/delivery/interactive_handshake_responder.js +76 -0
  14. package/dest/automine/delivery/onchain_delivery_harness.d.ts +19 -0
  15. package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
  16. package/dest/automine/delivery/onchain_delivery_harness.js +141 -0
  17. package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
  18. package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
  19. package/dest/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.js +50 -54
  20. package/dest/automine/token/token_contract_test.d.ts +40 -0
  21. package/dest/automine/token/token_contract_test.d.ts.map +1 -0
  22. package/dest/{e2e_token_contract → automine/token}/token_contract_test.js +44 -49
  23. package/dest/automine/token/token_test_helpers.d.ts +73 -0
  24. package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
  25. package/dest/automine/token/token_test_helpers.js +97 -0
  26. package/dest/bench/client_flows/benchmark.d.ts +15 -1
  27. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  28. package/dest/bench/client_flows/benchmark.js +19 -0
  29. package/dest/bench/client_flows/client_flows_benchmark.d.ts +6 -6
  30. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  31. package/dest/bench/client_flows/client_flows_benchmark.js +68 -44
  32. package/dest/bench/client_flows/config.d.ts +2 -2
  33. package/dest/bench/client_flows/config.d.ts.map +1 -1
  34. package/dest/bench/client_flows/config.js +18 -0
  35. package/dest/bench/client_flows/data_extractor.js +1 -0
  36. package/dest/bench/utils.d.ts +7 -6
  37. package/dest/bench/utils.d.ts.map +1 -1
  38. package/dest/bench/utils.js +108 -12
  39. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  40. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  41. package/dest/composed/ha/ha_full_setup.js +383 -0
  42. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  43. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  44. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  45. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  46. package/dest/fixtures/authwit_proxy.js +34 -0
  47. package/dest/fixtures/e2e_prover_test.d.ts +18 -14
  48. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  49. package/dest/fixtures/e2e_prover_test.js +85 -74
  50. package/dest/fixtures/elu_monitor.d.ts +21 -0
  51. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  52. package/dest/fixtures/elu_monitor.js +102 -0
  53. package/dest/fixtures/fixtures.d.ts +83 -1
  54. package/dest/fixtures/fixtures.d.ts.map +1 -1
  55. package/dest/fixtures/fixtures.js +86 -0
  56. package/dest/fixtures/get_bb_config.d.ts +1 -1
  57. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  58. package/dest/fixtures/get_bb_config.js +5 -5
  59. package/dest/fixtures/ha_setup.d.ts +71 -0
  60. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  61. package/dest/fixtures/ha_setup.js +119 -0
  62. package/dest/fixtures/index.d.ts +3 -1
  63. package/dest/fixtures/index.d.ts.map +1 -1
  64. package/dest/fixtures/index.js +2 -0
  65. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  66. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  67. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  68. package/dest/fixtures/setup.d.ts +113 -60
  69. package/dest/fixtures/setup.d.ts.map +1 -1
  70. package/dest/fixtures/setup.js +330 -326
  71. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  72. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  73. package/dest/fixtures/setup_p2p_test.js +46 -35
  74. package/dest/fixtures/timing.d.ts +42 -0
  75. package/dest/fixtures/timing.d.ts.map +1 -0
  76. package/dest/fixtures/timing.js +72 -0
  77. package/dest/fixtures/token_utils.d.ts +22 -4
  78. package/dest/fixtures/token_utils.d.ts.map +1 -1
  79. package/dest/fixtures/token_utils.js +28 -7
  80. package/dest/fixtures/utils.d.ts +2 -2
  81. package/dest/fixtures/utils.d.ts.map +1 -1
  82. package/dest/fixtures/utils.js +1 -1
  83. package/dest/fixtures/wait_helpers.d.ts +135 -0
  84. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  85. package/dest/fixtures/wait_helpers.js +154 -0
  86. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  87. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  88. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  89. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  90. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  91. package/dest/forward-compatibility/wallet_service.js +109 -0
  92. package/dest/install_legacy_contracts.d.cts +10 -0
  93. package/dest/install_legacy_contracts.d.cts.map +1 -0
  94. package/dest/legacy-jest-resolver.d.cts +3 -0
  95. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  96. package/dest/multi-node/block-production/setup.d.ts +97 -0
  97. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  98. package/dest/multi-node/block-production/setup.js +158 -0
  99. package/dest/multi-node/governance/setup.d.ts +67 -0
  100. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  101. package/dest/multi-node/governance/setup.js +126 -0
  102. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  103. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  104. package/dest/multi-node/multi_node_test_context.js +347 -0
  105. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  106. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  107. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  108. package/dest/multi-node/slashing/setup.d.ts +167 -0
  109. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  110. package/dest/multi-node/slashing/setup.js +275 -0
  111. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +22 -12
  112. package/dest/p2p/p2p_network.d.ts.map +1 -0
  113. package/dest/{e2e_p2p → p2p}/p2p_network.js +99 -35
  114. package/dest/p2p/reqresp/utils.d.ts +19 -0
  115. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  116. package/dest/p2p/reqresp/utils.js +193 -0
  117. package/dest/p2p/shared.d.ts +72 -0
  118. package/dest/p2p/shared.d.ts.map +1 -0
  119. package/dest/p2p/shared.js +212 -0
  120. package/dest/shared/cross_chain_test_harness.d.ts +8 -7
  121. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  122. package/dest/shared/cross_chain_test_harness.js +44 -39
  123. package/dest/shared/gas_portal_test_harness.d.ts +8 -5
  124. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  125. package/dest/shared/gas_portal_test_harness.js +27 -15
  126. package/dest/shared/index.d.ts +2 -1
  127. package/dest/shared/index.d.ts.map +1 -1
  128. package/dest/shared/index.js +1 -0
  129. package/dest/shared/jest_setup.js +41 -1
  130. package/dest/shared/mock_state_view.d.ts +86 -0
  131. package/dest/shared/mock_state_view.d.ts.map +1 -0
  132. package/dest/shared/mock_state_view.js +186 -0
  133. package/dest/shared/submit-transactions.d.ts +4 -4
  134. package/dest/shared/submit-transactions.d.ts.map +1 -1
  135. package/dest/shared/submit-transactions.js +19 -14
  136. package/dest/shared/timing_env.d.js +5 -0
  137. package/dest/shared/timing_env.js +365 -0
  138. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  139. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  140. package/dest/shared/uniswap_l1_l2.js +67 -55
  141. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  142. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  143. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  144. package/dest/simulators/lending_simulator.d.ts +10 -3
  145. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  146. package/dest/simulators/lending_simulator.js +29 -17
  147. package/dest/simulators/token_simulator.d.ts +1 -1
  148. package/dest/simulators/token_simulator.d.ts.map +1 -1
  149. package/dest/simulators/token_simulator.js +3 -24
  150. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  151. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  152. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  153. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  154. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  155. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  156. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  157. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  158. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +18 -5
  159. package/dest/single-node/fees/fees_test.d.ts +93 -0
  160. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  161. package/dest/{e2e_fees → single-node/fees}/fees_test.js +96 -70
  162. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  163. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  164. package/dest/single-node/l1-reorgs/setup.js +57 -0
  165. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  166. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  167. package/dest/single-node/partial-proofs/setup.js +5 -0
  168. package/dest/single-node/proving/setup.d.ts +5 -0
  169. package/dest/single-node/proving/setup.d.ts.map +1 -0
  170. package/dest/single-node/proving/setup.js +5 -0
  171. package/dest/single-node/recovery/setup.d.ts +5 -0
  172. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  173. package/dest/single-node/recovery/setup.js +5 -0
  174. package/dest/single-node/setup.d.ts +49 -0
  175. package/dest/single-node/setup.d.ts.map +1 -0
  176. package/dest/single-node/setup.js +56 -0
  177. package/dest/single-node/single_node_test_context.d.ts +360 -0
  178. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  179. package/dest/single-node/single_node_test_context.js +833 -0
  180. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  181. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  182. package/dest/spartan/setup_test_wallets.js +153 -49
  183. package/dest/spartan/tx_metrics.d.ts +64 -5
  184. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  185. package/dest/spartan/tx_metrics.js +280 -21
  186. package/dest/spartan/utils/bot.d.ts +28 -0
  187. package/dest/spartan/utils/bot.d.ts.map +1 -0
  188. package/dest/spartan/utils/bot.js +142 -0
  189. package/dest/spartan/utils/chaos.d.ts +79 -0
  190. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  191. package/dest/spartan/utils/chaos.js +142 -0
  192. package/dest/spartan/utils/clients.d.ts +39 -0
  193. package/dest/spartan/utils/clients.d.ts.map +1 -0
  194. package/dest/spartan/utils/clients.js +90 -0
  195. package/dest/spartan/utils/config.d.ts +19 -0
  196. package/dest/spartan/utils/config.d.ts.map +1 -0
  197. package/dest/spartan/utils/config.js +23 -0
  198. package/dest/spartan/utils/health.d.ts +63 -0
  199. package/dest/spartan/utils/health.d.ts.map +1 -0
  200. package/dest/spartan/utils/health.js +202 -0
  201. package/dest/spartan/utils/helm.d.ts +15 -0
  202. package/dest/spartan/utils/helm.d.ts.map +1 -0
  203. package/dest/spartan/utils/helm.js +47 -0
  204. package/dest/spartan/utils/index.d.ts +11 -0
  205. package/dest/spartan/utils/index.d.ts.map +1 -0
  206. package/dest/spartan/utils/index.js +22 -0
  207. package/dest/spartan/utils/k8s.d.ts +128 -0
  208. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  209. package/dest/spartan/utils/k8s.js +381 -0
  210. package/dest/spartan/utils/nodes.d.ts +40 -0
  211. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  212. package/dest/spartan/utils/nodes.js +461 -0
  213. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  214. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  215. package/dest/spartan/utils/pod_logs.js +74 -0
  216. package/dest/spartan/utils/scripts.d.ts +30 -0
  217. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  218. package/dest/spartan/utils/scripts.js +81 -0
  219. package/dest/spartan/utils.d.ts +2 -260
  220. package/dest/spartan/utils.d.ts.map +1 -1
  221. package/dest/spartan/utils.js +1 -942
  222. package/dest/test-wallet/test_wallet.d.ts +105 -0
  223. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  224. package/dest/test-wallet/test_wallet.js +320 -0
  225. package/dest/test-wallet/utils.d.ts +76 -0
  226. package/dest/test-wallet/utils.d.ts.map +1 -0
  227. package/dest/test-wallet/utils.js +126 -0
  228. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  229. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  230. package/dest/test-wallet/wallet_worker_script.js +56 -0
  231. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  232. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  233. package/dest/test-wallet/worker_wallet.js +157 -0
  234. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  235. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  236. package/dest/test-wallet/worker_wallet_schema.js +23 -0
  237. package/package.json +53 -46
  238. package/src/automine/README.md +60 -0
  239. package/src/automine/automine_test_context.ts +153 -0
  240. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  241. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  242. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  243. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  244. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  245. package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +56 -69
  246. package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +51 -59
  247. package/src/automine/token/token_test_helpers.ts +138 -0
  248. package/src/bench/client_flows/benchmark.ts +21 -0
  249. package/src/bench/client_flows/client_flows_benchmark.ts +111 -90
  250. package/src/bench/client_flows/config.ts +9 -1
  251. package/src/bench/client_flows/data_extractor.ts +1 -0
  252. package/src/bench/utils.ts +123 -12
  253. package/src/composed/ha/ha_full_setup.ts +466 -0
  254. package/src/fixtures/authwit_proxy.ts +54 -0
  255. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  256. package/src/fixtures/e2e_prover_test.ts +102 -103
  257. package/src/fixtures/elu_monitor.ts +126 -0
  258. package/src/fixtures/fixtures.ts +110 -0
  259. package/src/fixtures/get_bb_config.ts +7 -6
  260. package/src/fixtures/ha_setup.ts +192 -0
  261. package/src/fixtures/index.ts +2 -0
  262. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  263. package/src/fixtures/setup.ts +421 -444
  264. package/src/fixtures/setup_p2p_test.ts +54 -54
  265. package/src/fixtures/timing.ts +97 -0
  266. package/src/fixtures/token_utils.ts +46 -10
  267. package/src/fixtures/utils.ts +2 -3
  268. package/src/fixtures/wait_helpers.ts +333 -0
  269. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  270. package/src/forward-compatibility/wallet_service.ts +106 -0
  271. package/src/guides/up_quick_start.sh +7 -4
  272. package/src/infra/README.md +12 -0
  273. package/src/install_legacy_contracts.cjs +75 -0
  274. package/src/legacy-jest-resolver.cjs +112 -0
  275. package/src/multi-node/README.md +95 -0
  276. package/src/multi-node/block-production/setup.ts +272 -0
  277. package/src/multi-node/governance/setup.ts +172 -0
  278. package/src/multi-node/multi_node_test_context.ts +447 -0
  279. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  280. package/src/multi-node/slashing/setup.ts +433 -0
  281. package/src/p2p/README.md +78 -0
  282. package/src/{e2e_p2p → p2p}/p2p_network.ts +132 -57
  283. package/src/p2p/reqresp/utils.ts +263 -0
  284. package/src/p2p/shared.ts +329 -0
  285. package/src/shared/cross_chain_test_harness.ts +52 -41
  286. package/src/shared/gas_portal_test_harness.ts +34 -16
  287. package/src/shared/index.ts +1 -0
  288. package/src/shared/jest_setup.ts +51 -1
  289. package/src/shared/mock_state_view.ts +188 -0
  290. package/src/shared/submit-transactions.ts +22 -19
  291. package/src/shared/timing_env.d.mts +39 -0
  292. package/src/shared/timing_env.mjs +363 -0
  293. package/src/shared/uniswap_l1_l2.ts +109 -74
  294. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  295. package/src/simulators/lending_simulator.ts +35 -17
  296. package/src/simulators/token_simulator.ts +6 -30
  297. package/src/single-node/README.md +60 -0
  298. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  299. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  300. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +20 -9
  301. package/src/{e2e_fees → single-node/fees}/fees_test.ts +120 -95
  302. package/src/single-node/l1-reorgs/setup.ts +93 -0
  303. package/src/single-node/partial-proofs/setup.ts +8 -0
  304. package/src/single-node/proving/setup.ts +15 -0
  305. package/src/single-node/recovery/setup.ts +8 -0
  306. package/src/single-node/setup.ts +63 -0
  307. package/src/single-node/single_node_test_context.ts +1041 -0
  308. package/src/spartan/setup_test_wallets.ts +208 -34
  309. package/src/spartan/tx_metrics.ts +255 -26
  310. package/src/spartan/utils/bot.ts +188 -0
  311. package/src/spartan/utils/chaos.ts +253 -0
  312. package/src/spartan/utils/clients.ts +100 -0
  313. package/src/spartan/utils/config.ts +29 -0
  314. package/src/spartan/utils/health.ts +255 -0
  315. package/src/spartan/utils/helm.ts +84 -0
  316. package/src/spartan/utils/index.ts +71 -0
  317. package/src/spartan/utils/k8s.ts +535 -0
  318. package/src/spartan/utils/nodes.ts +543 -0
  319. package/src/spartan/utils/pod_logs.ts +99 -0
  320. package/src/spartan/utils/scripts.ts +99 -0
  321. package/src/spartan/utils.ts +1 -1246
  322. package/src/test-wallet/test_wallet.ts +426 -0
  323. package/src/test-wallet/utils.ts +205 -0
  324. package/src/test-wallet/wallet_worker_script.ts +66 -0
  325. package/src/test-wallet/worker_wallet.ts +216 -0
  326. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  327. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -53
  328. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  329. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
  330. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  331. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -128
  332. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
  333. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  334. package/dest/e2e_deploy_contract/deploy_test.js +0 -50
  335. package/dest/e2e_epochs/epochs_test.d.ts +0 -94
  336. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  337. package/dest/e2e_epochs/epochs_test.js +0 -339
  338. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  339. package/dest/e2e_fees/fees_test.d.ts +0 -88
  340. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  341. package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
  342. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  343. package/dest/e2e_l1_publisher/write_json.js +0 -62
  344. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  345. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  346. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
  347. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  348. package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
  349. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  350. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  351. package/dest/e2e_p2p/inactivity_slash_test.js +0 -136
  352. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  353. package/dest/e2e_p2p/shared.d.ts +0 -46
  354. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  355. package/dest/e2e_p2p/shared.js +0 -184
  356. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -42
  357. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  358. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -194
  359. package/src/e2e_deploy_contract/deploy_test.ts +0 -85
  360. package/src/e2e_epochs/epochs_test.ts +0 -451
  361. package/src/e2e_l1_publisher/write_json.ts +0 -82
  362. package/src/e2e_nested_contract/nested_contract_test.ts +0 -75
  363. package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
  364. package/src/e2e_p2p/shared.ts +0 -290
  365. /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
  366. /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet_worker_script.d.ts","sourceRoot":"","sources":["../../src/test-wallet/wallet_worker_script.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ import { DefaultWaitOpts } from '@aztec/aztec.js/contracts';
2
+ import { createAztecNodeClient } from '@aztec/aztec.js/node';
3
+ import { BackendType, BarretenbergSync } from '@aztec/bb.js';
4
+ import { jsonStringify } from '@aztec/foundation/json-rpc';
5
+ import { createLogger } from '@aztec/foundation/log';
6
+ import { getSchemaParameters, parseWithOptionals, schemaHasMethod } from '@aztec/foundation/schemas';
7
+ import { NodeListener, TransportServer } from '@aztec/foundation/transport';
8
+ import { Tx } from '@aztec/stdlib/tx';
9
+ import { workerData } from 'worker_threads';
10
+ import { TestWallet } from './test_wallet.js';
11
+ import { WorkerWalletSchema } from './worker_wallet_schema.js';
12
+ const logger = createLogger('e2e:test-wallet:worker');
13
+ try {
14
+ const { nodeUrl, pxeConfig } = workerData;
15
+ logger.info('Initializing worker wallet', {
16
+ nodeUrl
17
+ });
18
+ const node = createAztecNodeClient(nodeUrl);
19
+ // Worker sync bb use is limited to crypto and proof serialization helpers.
20
+ await BarretenbergSync.initSingleton({
21
+ backend: BackendType.Wasm
22
+ });
23
+ const wallet = await TestWallet.create(node, pxeConfig);
24
+ // Worker wallets are only used by spartan tests against remote JSON-RPC nodes: keep the 1s poll cadence.
25
+ wallet.setDefaultWaitInterval(DefaultWaitOpts.interval);
26
+ logger.info('Worker wallet initialized');
27
+ const customMethods = {
28
+ proveTx: async (exec, opts)=>{
29
+ const provenTx = await wallet.proveTx(exec, opts);
30
+ return new Tx(provenTx.getTxHash(), provenTx.data, provenTx.chonkProof, provenTx.contractClassLogFields, provenTx.publicFunctionCalldata);
31
+ },
32
+ registerAccount: async (secret, salt, signingKey)=>{
33
+ const manager = await wallet.createSchnorrAccount(secret, salt, signingKey);
34
+ return manager.address;
35
+ }
36
+ };
37
+ const schema = WorkerWalletSchema;
38
+ const listener = new NodeListener();
39
+ const server = new TransportServer(listener, async (msg)=>{
40
+ if (!schemaHasMethod(schema, msg.fn)) {
41
+ throw new Error(`Unknown method: ${msg.fn}`);
42
+ }
43
+ const jsonParams = JSON.parse(msg.args);
44
+ const args = await parseWithOptionals(jsonParams, getSchemaParameters(schema[msg.fn]));
45
+ // we have to erase the fn type in order to be able to spread ...args
46
+ const handler = msg.fn in customMethods ? customMethods[msg.fn] : undefined;
47
+ const result = handler ? await handler(...args) : await wallet[msg.fn](...args);
48
+ return jsonStringify(result);
49
+ });
50
+ server.start();
51
+ } catch (err) {
52
+ logger.error('Worker wallet initialization failed', {
53
+ error: err instanceof Error ? err.stack : String(err)
54
+ });
55
+ process.exit(1);
56
+ }
@@ -0,0 +1,53 @@
1
+ import type { CallIntent, IntentInnerHash } from '@aztec/aztec.js/authorization';
2
+ import type { InteractionWaitOptions, SendReturn } from '@aztec/aztec.js/contracts';
3
+ import type { Aliased, AppCapabilities, BatchResults, BatchedMethod, ContractClassMetadata, ContractMetadata, ExecuteUtilityOptions, PrivateEvent, PrivateEventFilter, ProfileOptions, SendOptions, SimulateOptions, TxSimulationResultWithAppOffset, Wallet, WalletCapabilities } from '@aztec/aztec.js/wallet';
4
+ import type { ChainInfo } from '@aztec/entrypoints/interfaces';
5
+ import type { Fq, Fr } from '@aztec/foundation/curves/bn254';
6
+ import type { PXEConfig } from '@aztec/pxe/config';
7
+ import type { ContractArtifact, EventMetadataDefinition, FunctionCall } from '@aztec/stdlib/abi';
8
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
9
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
10
+ import type { ContractInstancePreimage } from '@aztec/stdlib/contract';
11
+ import type { ExecutionPayload, TxProfileResult, UtilityExecutionResult } from '@aztec/stdlib/tx';
12
+ import { Tx } from '@aztec/stdlib/tx';
13
+ /**
14
+ * Wallet implementation that offloads all work to a worker thread.
15
+ * Implements the Wallet interface by proxying calls over a transport layer
16
+ * using JSON serialization with Zod schema parsing on both ends.
17
+ */
18
+ export declare class WorkerWallet implements Wallet {
19
+ private worker;
20
+ private client;
21
+ private constructor();
22
+ /**
23
+ * Creates a WorkerWallet by spawning a worker thread that creates a TestWallet internally.
24
+ * @param nodeUrl - URL of the Aztec node to connect to.
25
+ * @param pxeConfig - Optional PXE configuration overrides.
26
+ * @returns A WorkerWallet ready to use.
27
+ */
28
+ static create(nodeUrl: string, pxeConfig?: Partial<PXEConfig>): Promise<WorkerWallet>;
29
+ private callRaw;
30
+ private call;
31
+ getChainInfo(): Promise<ChainInfo>;
32
+ getContractMetadata(address: AztecAddress): Promise<ContractMetadata>;
33
+ getContractClassMetadata(id: Fr): Promise<ContractClassMetadata>;
34
+ getPrivateEvents<T>(eventMetadata: EventMetadataDefinition, eventFilter: PrivateEventFilter): Promise<PrivateEvent<T>[]>;
35
+ registerSender(address: AztecAddress, alias?: string): Promise<AztecAddress>;
36
+ getAddressBook(): Promise<Aliased<AztecAddress>[]>;
37
+ getAccounts(): Promise<Aliased<AztecAddress>[]>;
38
+ registerContract(instance: ContractInstancePreimage, artifact?: ContractArtifact, secretKey?: Fr): Promise<void>;
39
+ registerContractClass(artifact: ContractArtifact): Promise<void>;
40
+ simulateTx(exec: ExecutionPayload, opts: SimulateOptions): Promise<TxSimulationResultWithAppOffset>;
41
+ executeUtility(call: FunctionCall, opts: ExecuteUtilityOptions): Promise<UtilityExecutionResult>;
42
+ profileTx(exec: ExecutionPayload, opts: ProfileOptions): Promise<TxProfileResult>;
43
+ sendTx<W extends InteractionWaitOptions = undefined>(exec: ExecutionPayload, opts: SendOptions<W>): Promise<SendReturn<W>>;
44
+ proveTx(exec: ExecutionPayload, opts: Omit<SendOptions, 'wait'>): Promise<Tx>;
45
+ /** Registers an account inside the worker's TestWallet, populating its accounts map. */
46
+ registerAccount(secret: Fr, salt: Fr, signingKey: Fq): Promise<AztecAddress>;
47
+ createAuthWit(from: AztecAddress, messageHashOrIntent: IntentInnerHash | CallIntent): Promise<AuthWitness>;
48
+ requestCapabilities(manifest: AppCapabilities): Promise<WalletCapabilities>;
49
+ batch<const T extends readonly BatchedMethod[]>(methods: T): Promise<BatchResults<T>>;
50
+ /** Shuts down the worker thread and closes the transport. */
51
+ stop(): Promise<void>;
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX3dhbGxldC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qtd2FsbGV0L3dvcmtlcl93YWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUNWLE9BQU8sRUFDUCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxFQUNmLCtCQUErQixFQUMvQixNQUFNLEVBQ04sa0JBQWtCLEVBQ25CLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTzdELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pHLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEcsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBWXRDOzs7O0dBSUc7QUFDSCxxQkFBYSxZQUFhLFlBQVcsTUFBTTtJQUV2QyxPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxNQUFNO0lBRmhCLE9BQU8sZUFHSDtJQUVKOzs7OztPQUtHO0lBQ0gsT0FBYSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQXNEMUY7WUFFYSxPQUFPO1lBS1AsSUFBSTtJQVFsQixZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUVqQztJQUVELG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBRXBFO0lBRUQsd0JBQXdCLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FFL0Q7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFDLEVBQ2hCLGFBQWEsRUFBRSx1QkFBdUIsRUFDdEMsV0FBVyxFQUFFLGtCQUFrQixHQUM5QixPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FFNUI7SUFFRCxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUUzRTtJQUVELGNBQWMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FFakQ7SUFFRCxXQUFXLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBRTlDO0lBRUQsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFFLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRS9HO0lBRUQscUJBQXFCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFL0Q7SUFFRCxVQUFVLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBRWxHO0lBRUQsY0FBYyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUUvRjtJQUVELFNBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLGNBQWMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBRWhGO0lBRUQsTUFBTSxDQUFDLENBQUMsU0FBUyxzQkFBc0IsR0FBRyxTQUFTLEVBQ2pELElBQUksRUFBRSxnQkFBZ0IsRUFDdEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FDbkIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUV4QjtJQUVELE9BQU8sQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUU1RTtJQUVELHdGQUF3RjtJQUN4RixlQUFlLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUUzRTtJQUVELGFBQWEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUV6RztJQUVELG1CQUFtQixDQUFDLFFBQVEsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBRTFFO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsU0FBUyxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FFcEY7SUFFRCw2REFBNkQ7SUFDdkQsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHMUI7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker_wallet.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { jsonStringify } from '@aztec/foundation/json-rpc';
2
+ import { createLogger } from '@aztec/foundation/log';
3
+ import { promiseWithResolvers } from '@aztec/foundation/promise';
4
+ import { getSchemaReturnType } from '@aztec/foundation/schemas';
5
+ import { sleep } from '@aztec/foundation/sleep';
6
+ import { NodeConnector, TransportClient } from '@aztec/foundation/transport';
7
+ import { Worker } from 'worker_threads';
8
+ import { WorkerWalletSchema } from './worker_wallet_schema.js';
9
+ const log = createLogger('e2e:test-wallet:worker-wallet');
10
+ const WORKER_READY_TIMEOUT_MS = 120_000;
11
+ /**
12
+ * Wallet implementation that offloads all work to a worker thread.
13
+ * Implements the Wallet interface by proxying calls over a transport layer
14
+ * using JSON serialization with Zod schema parsing on both ends.
15
+ */ export class WorkerWallet {
16
+ worker;
17
+ client;
18
+ constructor(worker, client){
19
+ this.worker = worker;
20
+ this.client = client;
21
+ }
22
+ /**
23
+ * Creates a WorkerWallet by spawning a worker thread that creates a TestWallet internally.
24
+ * @param nodeUrl - URL of the Aztec node to connect to.
25
+ * @param pxeConfig - Optional PXE configuration overrides.
26
+ * @returns A WorkerWallet ready to use.
27
+ */ static async create(nodeUrl, pxeConfig) {
28
+ // replace stc/ with dest/ so the wallet works in Jest tests
29
+ const workerUrl = new URL('./wallet_worker_script.js', import.meta.url);
30
+ workerUrl.pathname = workerUrl.pathname.replace('/src/', '/dest/');
31
+ // remove JEST_WORKER_ID so the worker uses pino-pretty transport instead of Jest's raw output.
32
+ const { JEST_WORKER_ID: _, ...parentEnv } = process.env;
33
+ const worker = new Worker(workerUrl, {
34
+ workerData: {
35
+ nodeUrl,
36
+ pxeConfig
37
+ },
38
+ env: {
39
+ ...parentEnv,
40
+ ...process.stderr.isTTY || process.env.FORCE_COLOR ? {
41
+ FORCE_COLOR: '1'
42
+ } : {},
43
+ LOG_LEVEL: process.env.WORKER_LOG_LEVEL ?? 'info'
44
+ }
45
+ });
46
+ const connector = new NodeConnector(worker);
47
+ const client = new TransportClient(connector);
48
+ await client.open();
49
+ const wallet = new WorkerWallet(worker, client);
50
+ const { promise: workerDied, reject: rejectWorkerDied } = promiseWithResolvers();
51
+ // reject if the worker exits or errors before the warmup completes.
52
+ const onError = (err)=>{
53
+ worker.off('exit', onExit);
54
+ rejectWorkerDied(new Error(`Worker wallet thread error: ${err.message}`));
55
+ };
56
+ const onExit = (code)=>{
57
+ worker.off('error', onError);
58
+ rejectWorkerDied(new Error(`Worker wallet thread exited with code ${code} before becoming ready`));
59
+ };
60
+ worker.once('error', onError);
61
+ worker.once('exit', onExit);
62
+ const timeout = sleep(WORKER_READY_TIMEOUT_MS).then(()=>{
63
+ throw new Error(`Worker wallet creation timed out after ${WORKER_READY_TIMEOUT_MS / 1000}s`);
64
+ });
65
+ try {
66
+ // wait for worker wallet to start
67
+ await Promise.race([
68
+ wallet.getChainInfo(),
69
+ workerDied,
70
+ timeout
71
+ ]);
72
+ } catch (err) {
73
+ log.error('Worker wallet creation failed, cleaning up', {
74
+ error: String(err)
75
+ });
76
+ client.close();
77
+ await worker.terminate();
78
+ throw err;
79
+ } finally{
80
+ worker.off('error', onError);
81
+ worker.off('exit', onExit);
82
+ }
83
+ return wallet;
84
+ }
85
+ async callRaw(fn, ...args) {
86
+ const argsJson = jsonStringify(args);
87
+ return await this.client.request({
88
+ fn,
89
+ args: argsJson
90
+ });
91
+ }
92
+ async call(fn, ...args) {
93
+ const resultJson = await this.callRaw(fn, ...args);
94
+ const methodSchema = WorkerWalletSchema[fn];
95
+ // Void-returning methods (e.g. registerContract) serialize to `undefined` on the worker side, which
96
+ // JSON.parse cannot handle; hand it straight to the schema, whose `z.void()` output accepts undefined.
97
+ return getSchemaReturnType(methodSchema).parseAsync(resultJson === undefined ? undefined : JSON.parse(resultJson));
98
+ }
99
+ getChainInfo() {
100
+ return this.call('getChainInfo');
101
+ }
102
+ getContractMetadata(address) {
103
+ return this.call('getContractMetadata', address);
104
+ }
105
+ getContractClassMetadata(id) {
106
+ return this.call('getContractClassMetadata', id);
107
+ }
108
+ getPrivateEvents(eventMetadata, eventFilter) {
109
+ return this.call('getPrivateEvents', eventMetadata, eventFilter);
110
+ }
111
+ registerSender(address, alias) {
112
+ return this.call('registerSender', address, alias);
113
+ }
114
+ getAddressBook() {
115
+ return this.call('getAddressBook');
116
+ }
117
+ getAccounts() {
118
+ return this.call('getAccounts');
119
+ }
120
+ registerContract(instance, artifact, secretKey) {
121
+ return this.call('registerContract', instance, artifact, secretKey);
122
+ }
123
+ registerContractClass(artifact) {
124
+ return this.call('registerContractClass', artifact);
125
+ }
126
+ simulateTx(exec, opts) {
127
+ return this.call('simulateTx', exec, opts);
128
+ }
129
+ executeUtility(call, opts) {
130
+ return this.call('executeUtility', call, opts);
131
+ }
132
+ profileTx(exec, opts) {
133
+ return this.call('profileTx', exec, opts);
134
+ }
135
+ sendTx(exec, opts) {
136
+ return this.call('sendTx', exec, opts);
137
+ }
138
+ proveTx(exec, opts) {
139
+ return this.call('proveTx', exec, opts);
140
+ }
141
+ /** Registers an account inside the worker's TestWallet, populating its accounts map. */ registerAccount(secret, salt, signingKey) {
142
+ return this.call('registerAccount', secret, salt, signingKey);
143
+ }
144
+ createAuthWit(from, messageHashOrIntent) {
145
+ return this.call('createAuthWit', from, messageHashOrIntent);
146
+ }
147
+ requestCapabilities(manifest) {
148
+ return this.call('requestCapabilities', manifest);
149
+ }
150
+ batch(methods) {
151
+ return this.call('batch', methods);
152
+ }
153
+ /** Shuts down the worker thread and closes the transport. */ async stop() {
154
+ this.client.close();
155
+ await this.worker.terminate();
156
+ }
157
+ }
@@ -0,0 +1,4 @@
1
+ import type { ApiSchema } from '@aztec/foundation/schemas';
2
+ /** Schema for the WorkerWallet API — extends WalletSchema with proveTx and registerAccount. */
3
+ export declare const WorkerWalletSchema: ApiSchema;
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX3dhbGxldF9zY2hlbWEuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LXdhbGxldC93b3JrZXJfd2FsbGV0X3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU8zRCxpR0FBK0Y7QUFDL0YsZUFBTyxNQUFNLGtCQUFrQixFQUFFLFNBSWhDLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker_wallet_schema.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet_schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAO3D,iGAA+F;AAC/F,eAAO,MAAM,kBAAkB,EAAE,SAIhC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { ExecutionPayloadSchema, SendOptionsSchema, WalletSchema } from '@aztec/aztec.js/wallet';
2
+ import { schemas } from '@aztec/foundation/schemas';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { Tx } from '@aztec/stdlib/tx';
5
+ import { z } from 'zod';
6
+ /** Schema for the WorkerWallet API — extends WalletSchema with proveTx and registerAccount. */ export const WorkerWalletSchema = {
7
+ ...WalletSchema,
8
+ proveTx: z.function({
9
+ input: z.tuple([
10
+ ExecutionPayloadSchema,
11
+ SendOptionsSchema
12
+ ]),
13
+ output: Tx.schema
14
+ }),
15
+ registerAccount: z.function({
16
+ input: z.tuple([
17
+ schemas.Fr,
18
+ schemas.Fr,
19
+ schemas.Fq
20
+ ]),
21
+ output: AztecAddress.schema
22
+ })
23
+ };
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@aztec/end-to-end",
3
- "version": "0.0.1-commit.d431d1c",
3
+ "version": "0.0.1-commit.d58ff9d0",
4
4
  "type": "module",
5
- "exports": "./dest/index.js",
5
+ "exports": {
6
+ ".": "./dest/index.js",
7
+ "./*": "./dest/*"
8
+ },
6
9
  "inherits": [
7
10
  "../package.common.json",
8
11
  "./package.local.json"
@@ -12,57 +15,59 @@
12
15
  "build:dev": "../scripts/tsc.sh --watch",
13
16
  "clean": "rm -rf ./dest .tsbuildinfo",
14
17
  "test:with-alerts": "./scripts/test-with-alerts.sh",
15
- "test:e2e": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
18
+ "test:e2e": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000",
16
19
  "test:e2e-docker": "./scripts/run_test.sh simple",
17
20
  "test:e2e-no-docker": "echo 'The command test:e2e-no-docker is now the same as test:e2e. You can now run this dropping the no-docker suffix.'; yarn test:e2e",
18
- "test:profile": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 0x --output-dir \"flame_graph/{pid}.0x\" -- node --experimental-vm-modules ../node_modules/jest/bin/jest.js --runInBand --testTimeout=300000 --forceExit",
21
+ "test:profile": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 0x --output-dir \"flame_graph/{pid}.0x\" -- node --experimental-vm-modules ../node_modules/jest/bin/jest.js --runInBand --testTimeout=300000",
19
22
  "serve:flames": "python3 -m http.server --directory \"flame_graph\" 8000",
20
- "test:debug": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --inspect --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
23
+ "test:debug": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --inspect --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000",
21
24
  "test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
22
25
  "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --no-cache --runInBand --config jest.integration.config.json",
23
26
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests src/fixtures",
24
27
  "test:compose": "./scripts/run_test.sh compose",
28
+ "test:ha": "./scripts/run_test.sh ha",
25
29
  "formatting": "run -T prettier --check ./src && run -T eslint ./src"
26
30
  },
27
31
  "dependencies": {
28
- "@aztec/accounts": "0.0.1-commit.d431d1c",
29
- "@aztec/archiver": "0.0.1-commit.d431d1c",
30
- "@aztec/aztec": "0.0.1-commit.d431d1c",
31
- "@aztec/aztec-node": "0.0.1-commit.d431d1c",
32
- "@aztec/aztec.js": "0.0.1-commit.d431d1c",
33
- "@aztec/bb-prover": "0.0.1-commit.d431d1c",
34
- "@aztec/bb.js": "0.0.1-commit.d431d1c",
35
- "@aztec/blob-client": "0.0.1-commit.d431d1c",
36
- "@aztec/blob-lib": "0.0.1-commit.d431d1c",
37
- "@aztec/bot": "0.0.1-commit.d431d1c",
38
- "@aztec/cli": "0.0.1-commit.d431d1c",
39
- "@aztec/constants": "0.0.1-commit.d431d1c",
40
- "@aztec/entrypoints": "0.0.1-commit.d431d1c",
41
- "@aztec/epoch-cache": "0.0.1-commit.d431d1c",
42
- "@aztec/ethereum": "0.0.1-commit.d431d1c",
43
- "@aztec/foundation": "0.0.1-commit.d431d1c",
44
- "@aztec/kv-store": "0.0.1-commit.d431d1c",
45
- "@aztec/l1-artifacts": "0.0.1-commit.d431d1c",
46
- "@aztec/merkle-tree": "0.0.1-commit.d431d1c",
47
- "@aztec/node-keystore": "0.0.1-commit.d431d1c",
48
- "@aztec/noir-contracts.js": "0.0.1-commit.d431d1c",
49
- "@aztec/noir-noirc_abi": "0.0.1-commit.d431d1c",
50
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.d431d1c",
51
- "@aztec/noir-test-contracts.js": "0.0.1-commit.d431d1c",
52
- "@aztec/p2p": "0.0.1-commit.d431d1c",
53
- "@aztec/protocol-contracts": "0.0.1-commit.d431d1c",
54
- "@aztec/prover-client": "0.0.1-commit.d431d1c",
55
- "@aztec/prover-node": "0.0.1-commit.d431d1c",
56
- "@aztec/pxe": "0.0.1-commit.d431d1c",
57
- "@aztec/sequencer-client": "0.0.1-commit.d431d1c",
58
- "@aztec/simulator": "0.0.1-commit.d431d1c",
59
- "@aztec/slasher": "0.0.1-commit.d431d1c",
60
- "@aztec/stdlib": "0.0.1-commit.d431d1c",
61
- "@aztec/telemetry-client": "0.0.1-commit.d431d1c",
62
- "@aztec/test-wallet": "0.0.1-commit.d431d1c",
63
- "@aztec/validator-client": "0.0.1-commit.d431d1c",
64
- "@aztec/validator-ha-signer": "0.0.1-commit.d431d1c",
65
- "@aztec/world-state": "0.0.1-commit.d431d1c",
32
+ "@aztec/accounts": "0.0.1-commit.d58ff9d0",
33
+ "@aztec/archiver": "0.0.1-commit.d58ff9d0",
34
+ "@aztec/aztec": "0.0.1-commit.d58ff9d0",
35
+ "@aztec/aztec-node": "0.0.1-commit.d58ff9d0",
36
+ "@aztec/aztec.js": "0.0.1-commit.d58ff9d0",
37
+ "@aztec/bb-prover": "0.0.1-commit.d58ff9d0",
38
+ "@aztec/bb.js": "0.0.1-commit.d58ff9d0",
39
+ "@aztec/blob-client": "0.0.1-commit.d58ff9d0",
40
+ "@aztec/blob-lib": "0.0.1-commit.d58ff9d0",
41
+ "@aztec/bot": "0.0.1-commit.d58ff9d0",
42
+ "@aztec/cli": "0.0.1-commit.d58ff9d0",
43
+ "@aztec/constants": "0.0.1-commit.d58ff9d0",
44
+ "@aztec/entrypoints": "0.0.1-commit.d58ff9d0",
45
+ "@aztec/epoch-cache": "0.0.1-commit.d58ff9d0",
46
+ "@aztec/ethereum": "0.0.1-commit.d58ff9d0",
47
+ "@aztec/foundation": "0.0.1-commit.d58ff9d0",
48
+ "@aztec/kv-store": "0.0.1-commit.d58ff9d0",
49
+ "@aztec/l1-artifacts": "0.0.1-commit.d58ff9d0",
50
+ "@aztec/node-keystore": "0.0.1-commit.d58ff9d0",
51
+ "@aztec/noir-contracts.js": "0.0.1-commit.d58ff9d0",
52
+ "@aztec/noir-noirc_abi": "0.0.1-commit.d58ff9d0",
53
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.d58ff9d0",
54
+ "@aztec/noir-test-contracts.js": "0.0.1-commit.d58ff9d0",
55
+ "@aztec/p2p": "0.0.1-commit.d58ff9d0",
56
+ "@aztec/protocol-contracts": "0.0.1-commit.d58ff9d0",
57
+ "@aztec/prover-client": "0.0.1-commit.d58ff9d0",
58
+ "@aztec/prover-node": "0.0.1-commit.d58ff9d0",
59
+ "@aztec/pxe": "0.0.1-commit.d58ff9d0",
60
+ "@aztec/sequencer-client": "0.0.1-commit.d58ff9d0",
61
+ "@aztec/simulator": "0.0.1-commit.d58ff9d0",
62
+ "@aztec/slasher": "0.0.1-commit.d58ff9d0",
63
+ "@aztec/standard-contracts": "0.0.1-commit.d58ff9d0",
64
+ "@aztec/stdlib": "0.0.1-commit.d58ff9d0",
65
+ "@aztec/telemetry-client": "0.0.1-commit.d58ff9d0",
66
+ "@aztec/validator-client": "0.0.1-commit.d58ff9d0",
67
+ "@aztec/validator-ha-signer": "0.0.1-commit.d58ff9d0",
68
+ "@aztec/wallet-sdk": "0.0.1-commit.d58ff9d0",
69
+ "@aztec/wallets": "0.0.1-commit.d58ff9d0",
70
+ "@aztec/world-state": "0.0.1-commit.d58ff9d0",
66
71
  "@iarna/toml": "^2.2.5",
67
72
  "@jest/globals": "^30.0.0",
68
73
  "@noble/curves": "=1.0.0",
@@ -74,7 +79,6 @@
74
79
  "@types/koa-static": "^4.0.2",
75
80
  "@types/lodash.every": "^4.6.7",
76
81
  "@types/node": "^22.15.17",
77
- "@viem/anvil": "^0.0.9",
78
82
  "buffer": "^6.0.3",
79
83
  "crypto-browserify": "^3.12.1",
80
84
  "fs-extra": "^11.2.0",
@@ -90,6 +94,7 @@
90
94
  "lodash.every": "^4.6.0",
91
95
  "lodash.omit": "^4.5.0",
92
96
  "msgpackr": "^1.11.2",
97
+ "pg": "^8.17.1",
93
98
  "process": "^0.11.10",
94
99
  "snappy": "^7.2.2",
95
100
  "stream-browserify": "^3.0.0",
@@ -100,7 +105,7 @@
100
105
  "typescript": "^5.3.3",
101
106
  "util": "^0.12.5",
102
107
  "viem": "npm:@aztec/viem@2.38.2",
103
- "zod": "^3.23.8"
108
+ "zod": "^4"
104
109
  },
105
110
  "devDependencies": {
106
111
  "0x": "^5.7.0",
@@ -108,6 +113,7 @@
108
113
  "@types/jest": "^30.0.0",
109
114
  "@types/js-yaml": "^4.0.9",
110
115
  "@types/lodash.chunk": "^4.2.9",
116
+ "@types/pg": "^8",
111
117
  "@typescript/native-preview": "7.0.0-dev.20260113.1",
112
118
  "concurrently": "^7.6.0",
113
119
  "jest": "^30.0.0",
@@ -157,12 +163,13 @@
157
163
  "moduleNameMapper": {
158
164
  "^(\\.{1,2}/.*)\\.[cm]?js$": "$1"
159
165
  },
166
+ "resolver": "<rootDir>/legacy-jest-resolver.cjs",
160
167
  "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$",
161
168
  "rootDir": "./src",
162
169
  "testTimeout": 120000,
163
170
  "setupFiles": [
164
171
  "../../foundation/src/jest/setup.mjs"
165
172
  ],
166
- "testEnvironment": "../../foundation/src/jest/env.mjs"
173
+ "testEnvironment": "./shared/timing_env.mjs"
167
174
  }
168
175
  }
@@ -0,0 +1,60 @@
1
+ # `automine` e2e test category
2
+
3
+ Automine tests run a single Aztec node driving the deterministic `AutomineSequencer`: one block per
4
+ submitted transaction, synchronous L1 publish, no committee, no prover, and no validator client. The
5
+ node opts into this topology through the `AUTOMINE_E2E_OPTS` preset (`fixtures/fixtures.ts`), which the
6
+ base context applies by default. This is the fast, deterministic counterpart to the `single-node`
7
+ category, whose node runs the production sequencer with interval block production. A test belongs here
8
+ when it exercises contract or protocol behavior that does not depend on real block-building or consensus
9
+ (token transfers, nested calls, note discovery, tx semantics); it belongs in `single-node` when it
10
+ asserts on sequencer, proving, or reorg behavior.
11
+
12
+ ## Base class
13
+
14
+ All tests use `AutomineTestContext` (`automine_test_context.ts`), which owns:
15
+
16
+ - The environment: an in-process anvil in automine mode plus the L1 contract deploy, wrapping
17
+ `fixtures/setup.ts:setup()` with `AUTOMINE_E2E_OPTS` and `fundSponsoredFPC` as defaults.
18
+ - The common handles: `context`, `wallet`, `aztecNode`, `aztecNodeAdmin`, `cheatCodes`, `sequencer`,
19
+ `accounts`, `defaultAccountAddress`, `logger`.
20
+ - `markProvenAndWarp(seconds)`: marks pending checkpoints proven before warping the L2 clock, so a long
21
+ warp does not trip the rollup's pruning window (see the method's doc comment).
22
+ - `registerContract(...)`: computes and registers a contract instance without an on-chain deploy.
23
+ - `applyManualParentChild()`: deploys a Parent and Child contract for the nested-call tests.
24
+
25
+ Tests call the static `AutomineTestContext.setup({ numberOfAccounts })` factory (or `new` plus `setup()`
26
+ for the harness subclasses), passing `numberOfAccounts` rather than spreading `AUTOMINE_E2E_OPTS`.
27
+
28
+ ## Harnesses
29
+
30
+ Two domain harnesses extend `AutomineTestContext` and run their domain setup after `super.setup()`:
31
+
32
+ - `token/token_contract_test.ts` — a `TokenSimulator` plus opt-in base/mint snapshots for the Token
33
+ contract tests.
34
+ - `token/blacklist_token_contract_test.ts` — a `TokenSimulator`, the `Role` helper, and the
35
+ role-change-delay warp (via `markProvenAndWarp`) for the TokenBlacklist tests.
36
+
37
+ ## Organizing principle
38
+
39
+ The top level groups tests by node topology (automine); the second level names the primary behavior
40
+ under test rather than the shared setup. Each file has a single top-level `describe` named to match its
41
+ path. A `.parallel` suffix marks files with more than one top-level `it`; CI splits each `it` into its
42
+ own job.
43
+
44
+ ## Subfolders
45
+
46
+ A second-level folder is created only when it earns its keep: a shared harness, an existing sub-hierarchy,
47
+ or a coherent domain of several files. The remaining miscellaneous protocol/execution behaviors live as flat
48
+ files directly under `automine/` — smoke, tx ordering/double-spend/phase checks, mempool limits, the app demos
49
+ (card game, private voting), and the timestamp/PXE tests.
50
+
51
+ | Path | Contents |
52
+ |---|---|
53
+ | `token/` | Token-economics tests on the two token harnesses plus the `TokenSimulator`/`LendingSimulator`-adjacent DeFi tests: token transfers/minting/burning/access-control, the blacklist token suite, AMM, lending, NFT, orderbook, crowdfunding, and escrow. |
54
+ | `contracts/` | Contract lifecycle and cross-contract behavior. `deploy/` (class registration, deploy method, legacy deploy, private initialization), `nested/` (importer and the manual private/public nested-call patterns), plus contract updates, storage proofs, static calls, nested utility calls, and the ABI/storage-surface tests (ABI types, option params, state variables). |
55
+ | `accounts/` | Account and key behavior: account contracts, keys, multiple accounts sharing an encryption key, two-PXE interop, authwit, and scope isolation. |
56
+ | `effects/` | Note discovery, events, and offchain effects: note getters, pending note hashes, partial notes, event logs, event-only notes, offchain effects and payments, large public events, custom messages, the tx-effect oracle, and note rediscovery after pruned blocks. |
57
+ | `simulation/` | Circuit simulation surface: the AVM simulator, kernelless simulation, and the circuit recorder. |
58
+
59
+ The `simulation/avm_simulator` file is a genuine outlier: it dumps AVM circuit inputs for the downstream
60
+ `avm_check_circuit` CI job, so it has a bespoke CI line and is excluded from the generic `simulation/` glob.