@aztec/end-to-end 0.0.1-commit.d3ec352c → 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 (404) 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/automine/token/blacklist_token_contract_test.js +166 -0
  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/automine/token/token_contract_test.js +119 -0
  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 +17 -2
  27. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  28. package/dest/bench/client_flows/benchmark.js +40 -1
  29. package/dest/bench/client_flows/client_flows_benchmark.d.ts +19 -20
  30. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  31. package/dest/bench/client_flows/client_flows_benchmark.js +155 -159
  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 +4 -1
  36. package/dest/bench/utils.d.ts +11 -10
  37. package/dest/bench/utils.d.ts.map +1 -1
  38. package/dest/bench/utils.js +126 -23
  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/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +1 -1
  45. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  46. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  47. package/dest/fixtures/authwit_proxy.js +34 -0
  48. package/dest/fixtures/e2e_prover_test.d.ts +25 -29
  49. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  50. package/dest/fixtures/e2e_prover_test.js +147 -151
  51. package/dest/fixtures/elu_monitor.d.ts +21 -0
  52. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  53. package/dest/fixtures/elu_monitor.js +102 -0
  54. package/dest/fixtures/fixtures.d.ts +84 -3
  55. package/dest/fixtures/fixtures.d.ts.map +1 -1
  56. package/dest/fixtures/fixtures.js +87 -2
  57. package/dest/fixtures/get_acvm_config.js +1 -1
  58. package/dest/fixtures/get_bb_config.d.ts +1 -1
  59. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  60. package/dest/fixtures/get_bb_config.js +5 -5
  61. package/dest/fixtures/ha_setup.d.ts +71 -0
  62. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  63. package/dest/fixtures/ha_setup.js +119 -0
  64. package/dest/fixtures/index.d.ts +3 -1
  65. package/dest/fixtures/index.d.ts.map +1 -1
  66. package/dest/fixtures/index.js +2 -0
  67. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  68. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  69. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  70. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  71. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  72. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  73. package/dest/fixtures/setup.d.ts +269 -0
  74. package/dest/fixtures/setup.d.ts.map +1 -0
  75. package/dest/fixtures/setup.js +688 -0
  76. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  77. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  78. package/dest/fixtures/setup_p2p_test.js +49 -38
  79. package/dest/fixtures/timing.d.ts +42 -0
  80. package/dest/fixtures/timing.d.ts.map +1 -0
  81. package/dest/fixtures/timing.js +72 -0
  82. package/dest/fixtures/token_utils.d.ts +22 -4
  83. package/dest/fixtures/token_utils.d.ts.map +1 -1
  84. package/dest/fixtures/token_utils.js +28 -7
  85. package/dest/fixtures/utils.d.ts +5 -638
  86. package/dest/fixtures/utils.d.ts.map +1 -1
  87. package/dest/fixtures/utils.js +4 -647
  88. package/dest/fixtures/wait_helpers.d.ts +135 -0
  89. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  90. package/dest/fixtures/wait_helpers.js +154 -0
  91. package/dest/fixtures/web3signer.js +1 -1
  92. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  93. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  94. package/dest/fixtures/with_telemetry_utils.js +2 -2
  95. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  96. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  97. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  98. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  99. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  100. package/dest/forward-compatibility/wallet_service.js +109 -0
  101. package/dest/install_legacy_contracts.d.cts +10 -0
  102. package/dest/install_legacy_contracts.d.cts.map +1 -0
  103. package/dest/legacy-jest-resolver.d.cts +3 -0
  104. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  105. package/dest/multi-node/block-production/setup.d.ts +97 -0
  106. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  107. package/dest/multi-node/block-production/setup.js +158 -0
  108. package/dest/multi-node/governance/setup.d.ts +67 -0
  109. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  110. package/dest/multi-node/governance/setup.js +126 -0
  111. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  112. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  113. package/dest/multi-node/multi_node_test_context.js +347 -0
  114. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  115. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  116. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  117. package/dest/multi-node/slashing/setup.d.ts +167 -0
  118. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  119. package/dest/multi-node/slashing/setup.js +275 -0
  120. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +33 -21
  121. package/dest/p2p/p2p_network.d.ts.map +1 -0
  122. package/dest/p2p/p2p_network.js +389 -0
  123. package/dest/p2p/reqresp/utils.d.ts +19 -0
  124. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  125. package/dest/p2p/reqresp/utils.js +193 -0
  126. package/dest/p2p/shared.d.ts +72 -0
  127. package/dest/p2p/shared.d.ts.map +1 -0
  128. package/dest/p2p/shared.js +212 -0
  129. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  130. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  131. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  132. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  133. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  134. package/dest/quality_of_service/prometheus_client.js +67 -0
  135. package/dest/shared/cross_chain_test_harness.d.ts +22 -9
  136. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  137. package/dest/shared/cross_chain_test_harness.js +45 -40
  138. package/dest/shared/gas_portal_test_harness.d.ts +19 -6
  139. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  140. package/dest/shared/gas_portal_test_harness.js +27 -15
  141. package/dest/shared/index.d.ts +3 -2
  142. package/dest/shared/index.d.ts.map +1 -1
  143. package/dest/shared/index.js +1 -0
  144. package/dest/shared/jest_setup.js +41 -1
  145. package/dest/shared/mock_state_view.d.ts +86 -0
  146. package/dest/shared/mock_state_view.d.ts.map +1 -0
  147. package/dest/shared/mock_state_view.js +186 -0
  148. package/dest/shared/submit-transactions.d.ts +4 -4
  149. package/dest/shared/submit-transactions.d.ts.map +1 -1
  150. package/dest/shared/submit-transactions.js +19 -14
  151. package/dest/shared/timing_env.d.js +5 -0
  152. package/dest/shared/timing_env.js +365 -0
  153. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  154. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  155. package/dest/shared/uniswap_l1_l2.js +86 -54
  156. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  157. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  158. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  159. package/dest/simulators/lending_simulator.d.ts +15 -4
  160. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  161. package/dest/simulators/lending_simulator.js +29 -17
  162. package/dest/simulators/token_simulator.d.ts +1 -1
  163. package/dest/simulators/token_simulator.d.ts.map +1 -1
  164. package/dest/simulators/token_simulator.js +3 -24
  165. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  166. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  167. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  168. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  169. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  170. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  171. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  172. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  173. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +21 -10
  174. package/dest/single-node/fees/fees_test.d.ts +93 -0
  175. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  176. package/dest/single-node/fees/fees_test.js +274 -0
  177. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  178. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  179. package/dest/single-node/l1-reorgs/setup.js +57 -0
  180. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  181. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  182. package/dest/single-node/partial-proofs/setup.js +5 -0
  183. package/dest/single-node/proving/setup.d.ts +5 -0
  184. package/dest/single-node/proving/setup.d.ts.map +1 -0
  185. package/dest/single-node/proving/setup.js +5 -0
  186. package/dest/single-node/recovery/setup.d.ts +5 -0
  187. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  188. package/dest/single-node/recovery/setup.js +5 -0
  189. package/dest/single-node/setup.d.ts +49 -0
  190. package/dest/single-node/setup.d.ts.map +1 -0
  191. package/dest/single-node/setup.js +56 -0
  192. package/dest/single-node/single_node_test_context.d.ts +360 -0
  193. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  194. package/dest/single-node/single_node_test_context.js +833 -0
  195. package/dest/spartan/setup_test_wallets.d.ts +15 -5
  196. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  197. package/dest/spartan/setup_test_wallets.js +155 -50
  198. package/dest/spartan/tx_metrics.d.ts +111 -0
  199. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  200. package/dest/spartan/tx_metrics.js +507 -0
  201. package/dest/spartan/utils/bot.d.ts +28 -0
  202. package/dest/spartan/utils/bot.d.ts.map +1 -0
  203. package/dest/spartan/utils/bot.js +142 -0
  204. package/dest/spartan/utils/chaos.d.ts +79 -0
  205. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  206. package/dest/spartan/utils/chaos.js +142 -0
  207. package/dest/spartan/utils/clients.d.ts +39 -0
  208. package/dest/spartan/utils/clients.d.ts.map +1 -0
  209. package/dest/spartan/utils/clients.js +90 -0
  210. package/dest/spartan/utils/config.d.ts +19 -0
  211. package/dest/spartan/utils/config.d.ts.map +1 -0
  212. package/dest/spartan/utils/config.js +23 -0
  213. package/dest/spartan/utils/health.d.ts +63 -0
  214. package/dest/spartan/utils/health.d.ts.map +1 -0
  215. package/dest/spartan/utils/health.js +202 -0
  216. package/dest/spartan/utils/helm.d.ts +15 -0
  217. package/dest/spartan/utils/helm.d.ts.map +1 -0
  218. package/dest/spartan/utils/helm.js +47 -0
  219. package/dest/spartan/utils/index.d.ts +11 -0
  220. package/dest/spartan/utils/index.d.ts.map +1 -0
  221. package/dest/spartan/utils/index.js +22 -0
  222. package/dest/spartan/utils/k8s.d.ts +128 -0
  223. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  224. package/dest/spartan/utils/k8s.js +381 -0
  225. package/dest/spartan/utils/nodes.d.ts +40 -0
  226. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  227. package/dest/spartan/utils/nodes.js +461 -0
  228. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  229. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  230. package/dest/spartan/utils/pod_logs.js +74 -0
  231. package/dest/spartan/utils/scripts.d.ts +30 -0
  232. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  233. package/dest/spartan/utils/scripts.js +81 -0
  234. package/dest/spartan/utils.d.ts +2 -221
  235. package/dest/spartan/utils.d.ts.map +1 -1
  236. package/dest/spartan/utils.js +1 -782
  237. package/dest/test-wallet/test_wallet.d.ts +105 -0
  238. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  239. package/dest/test-wallet/test_wallet.js +320 -0
  240. package/dest/test-wallet/utils.d.ts +76 -0
  241. package/dest/test-wallet/utils.d.ts.map +1 -0
  242. package/dest/test-wallet/utils.js +126 -0
  243. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  244. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  245. package/dest/test-wallet/wallet_worker_script.js +56 -0
  246. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  247. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  248. package/dest/test-wallet/worker_wallet.js +157 -0
  249. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  250. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  251. package/dest/test-wallet/worker_wallet_schema.js +23 -0
  252. package/package.json +54 -46
  253. package/src/automine/README.md +60 -0
  254. package/src/automine/automine_test_context.ts +153 -0
  255. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  256. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  257. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  258. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  259. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  260. package/src/automine/token/blacklist_token_contract_test.ts +208 -0
  261. package/src/automine/token/token_contract_test.ts +146 -0
  262. package/src/automine/token/token_test_helpers.ts +138 -0
  263. package/src/bench/client_flows/benchmark.ts +45 -2
  264. package/src/bench/client_flows/client_flows_benchmark.ts +222 -251
  265. package/src/bench/client_flows/config.ts +9 -1
  266. package/src/bench/client_flows/data_extractor.ts +2 -1
  267. package/src/bench/utils.ts +144 -25
  268. package/src/composed/ha/ha_full_setup.ts +466 -0
  269. package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +1 -1
  270. package/src/fixtures/authwit_proxy.ts +54 -0
  271. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  272. package/src/fixtures/e2e_prover_test.ts +172 -205
  273. package/src/fixtures/elu_monitor.ts +126 -0
  274. package/src/fixtures/fixtures.ts +111 -3
  275. package/src/fixtures/get_acvm_config.ts +1 -1
  276. package/src/fixtures/get_bb_config.ts +7 -6
  277. package/src/fixtures/ha_setup.ts +192 -0
  278. package/src/fixtures/index.ts +2 -0
  279. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  280. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  281. package/src/fixtures/setup.ts +987 -0
  282. package/src/fixtures/setup_p2p_test.ts +57 -57
  283. package/src/fixtures/timing.ts +97 -0
  284. package/src/fixtures/token_utils.ts +46 -10
  285. package/src/fixtures/utils.ts +26 -966
  286. package/src/fixtures/wait_helpers.ts +333 -0
  287. package/src/fixtures/web3signer.ts +1 -1
  288. package/src/fixtures/with_telemetry_utils.ts +2 -2
  289. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  290. package/src/forward-compatibility/wallet_service.ts +106 -0
  291. package/src/guides/up_quick_start.sh +7 -4
  292. package/src/infra/README.md +12 -0
  293. package/src/install_legacy_contracts.cjs +75 -0
  294. package/src/legacy-jest-resolver.cjs +112 -0
  295. package/src/multi-node/README.md +95 -0
  296. package/src/multi-node/block-production/setup.ts +272 -0
  297. package/src/multi-node/governance/setup.ts +172 -0
  298. package/src/multi-node/multi_node_test_context.ts +447 -0
  299. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  300. package/src/multi-node/slashing/setup.ts +433 -0
  301. package/src/p2p/README.md +78 -0
  302. package/src/p2p/p2p_network.ts +542 -0
  303. package/src/p2p/reqresp/utils.ts +263 -0
  304. package/src/p2p/shared.ts +329 -0
  305. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  306. package/src/quality_of_service/prometheus_client.ts +113 -0
  307. package/src/shared/cross_chain_test_harness.ts +51 -44
  308. package/src/shared/gas_portal_test_harness.ts +35 -17
  309. package/src/shared/index.ts +2 -1
  310. package/src/shared/jest_setup.ts +51 -1
  311. package/src/shared/mock_state_view.ts +188 -0
  312. package/src/shared/submit-transactions.ts +22 -19
  313. package/src/shared/timing_env.d.mts +39 -0
  314. package/src/shared/timing_env.mjs +363 -0
  315. package/src/shared/uniswap_l1_l2.ts +136 -115
  316. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  317. package/src/simulators/lending_simulator.ts +36 -18
  318. package/src/simulators/token_simulator.ts +6 -30
  319. package/src/single-node/README.md +60 -0
  320. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  321. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  322. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +23 -15
  323. package/src/single-node/fees/fees_test.ts +368 -0
  324. package/src/single-node/l1-reorgs/setup.ts +93 -0
  325. package/src/single-node/partial-proofs/setup.ts +8 -0
  326. package/src/single-node/proving/setup.ts +15 -0
  327. package/src/single-node/recovery/setup.ts +8 -0
  328. package/src/single-node/setup.ts +63 -0
  329. package/src/single-node/single_node_test_context.ts +1041 -0
  330. package/src/spartan/setup_test_wallets.ts +217 -36
  331. package/src/spartan/tx_metrics.ts +460 -0
  332. package/src/spartan/utils/bot.ts +188 -0
  333. package/src/spartan/utils/chaos.ts +253 -0
  334. package/src/spartan/utils/clients.ts +100 -0
  335. package/src/spartan/utils/config.ts +29 -0
  336. package/src/spartan/utils/health.ts +255 -0
  337. package/src/spartan/utils/helm.ts +84 -0
  338. package/src/spartan/utils/index.ts +71 -0
  339. package/src/spartan/utils/k8s.ts +535 -0
  340. package/src/spartan/utils/nodes.ts +543 -0
  341. package/src/spartan/utils/pod_logs.ts +99 -0
  342. package/src/spartan/utils/scripts.ts +99 -0
  343. package/src/spartan/utils.ts +1 -983
  344. package/src/test-wallet/test_wallet.ts +426 -0
  345. package/src/test-wallet/utils.ts +205 -0
  346. package/src/test-wallet/wallet_worker_script.ts +66 -0
  347. package/src/test-wallet/worker_wallet.ts +216 -0
  348. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  349. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -54
  350. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  351. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +0 -185
  352. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -41
  353. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  354. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -108
  355. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
  356. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  357. package/dest/e2e_deploy_contract/deploy_test.js +0 -45
  358. package/dest/e2e_epochs/epochs_test.d.ts +0 -93
  359. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  360. package/dest/e2e_epochs/epochs_test.js +0 -337
  361. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  362. package/dest/e2e_fees/fees_test.d.ts +0 -85
  363. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  364. package/dest/e2e_fees/fees_test.js +0 -263
  365. package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
  366. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  367. package/dest/e2e_l1_publisher/write_json.js +0 -58
  368. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  369. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  370. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -29
  371. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  372. package/dest/e2e_nested_contract/nested_contract_test.js +0 -64
  373. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  374. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  375. package/dest/e2e_p2p/inactivity_slash_test.js +0 -139
  376. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  377. package/dest/e2e_p2p/p2p_network.js +0 -320
  378. package/dest/e2e_p2p/shared.d.ts +0 -46
  379. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  380. package/dest/e2e_p2p/shared.js +0 -184
  381. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -35
  382. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  383. package/dest/e2e_token_contract/token_contract_test.js +0 -126
  384. package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
  385. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  386. package/dest/fixtures/setup_l1_contracts.js +0 -17
  387. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  388. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  389. package/dest/fixtures/snapshot_manager.js +0 -505
  390. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  391. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  392. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +0 -256
  393. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -179
  394. package/src/e2e_deploy_contract/deploy_test.ts +0 -78
  395. package/src/e2e_epochs/epochs_test.ts +0 -438
  396. package/src/e2e_fees/fees_test.ts +0 -382
  397. package/src/e2e_l1_publisher/write_json.ts +0 -77
  398. package/src/e2e_nested_contract/nested_contract_test.ts +0 -96
  399. package/src/e2e_p2p/inactivity_slash_test.ts +0 -182
  400. package/src/e2e_p2p/p2p_network.ts +0 -476
  401. package/src/e2e_p2p/shared.ts +0 -285
  402. package/src/e2e_token_contract/token_contract_test.ts +0 -167
  403. package/src/fixtures/setup_l1_contracts.ts +0 -26
  404. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -1,382 +0,0 @@
1
- import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
- import { type Logger, createLogger } from '@aztec/aztec.js/log';
3
- import type { AztecNode } from '@aztec/aztec.js/node';
4
- import { CheatCodes } from '@aztec/aztec/testing';
5
- import { type DeployL1ContractsArgs, RollupContract, createExtendedL1Client } from '@aztec/ethereum';
6
- import { ChainMonitor } from '@aztec/ethereum/test';
7
- import { BlockNumber } from '@aztec/foundation/branded-types';
8
- import { EthAddress } from '@aztec/foundation/eth-address';
9
- import { sleep } from '@aztec/foundation/sleep';
10
- import { TestERC20Abi } from '@aztec/l1-artifacts';
11
- import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscription';
12
- import { FPCContract } from '@aztec/noir-contracts.js/FPC';
13
- import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
14
- import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
15
- import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
16
- import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
17
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
18
- import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
19
- import { GasSettings } from '@aztec/stdlib/gas';
20
- import { TestWallet } from '@aztec/test-wallet/server';
21
-
22
- import { getContract } from 'viem';
23
-
24
- import { MNEMONIC } from '../fixtures/fixtures.js';
25
- import {
26
- type ISnapshotManager,
27
- type SubsystemsContext,
28
- createSnapshotManager,
29
- deployAccounts,
30
- } from '../fixtures/snapshot_manager.js';
31
- import { mintTokensToPrivate } from '../fixtures/token_utils.js';
32
- import {
33
- type BalancesFn,
34
- type SetupOptions,
35
- ensureAccountContractsPublished,
36
- getBalancesFn,
37
- setupSponsoredFPC,
38
- } from '../fixtures/utils.js';
39
- import { FeeJuicePortalTestingHarnessFactory, type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
40
-
41
- const { E2E_DATA_PATH: dataPath } = process.env;
42
-
43
- /**
44
- * Test fixture for testing fees. Provides the following snapshots:
45
- * InitialAccounts: Initializes 3 Schnorr account contracts.
46
- * PublicDeployAccounts: Deploys the accounts publicly.
47
- * DeployFeeJuice: Deploys the Fee Juice contract.
48
- * FPCSetup: Deploys BananaCoin and FPC contracts, and bridges gas from L1.
49
- * SponsoredFPCSetup: Deploys Sponsored FPC contract, and bridges gas from L1.
50
- * FundAlice: Mints private and public bananas to Alice.
51
- * SetupSubscription: Deploys a counter contract and a subscription contract, and mints Fee Juice to the subscription contract.
52
- */
53
- export class FeesTest {
54
- private snapshotManager: ISnapshotManager;
55
- private accounts: AztecAddress[] = [];
56
-
57
- public logger: Logger;
58
- public aztecNode!: AztecNode;
59
- public cheatCodes!: CheatCodes;
60
-
61
- public wallet!: TestWallet;
62
- public aliceAddress!: AztecAddress;
63
- public bobAddress!: AztecAddress;
64
- public sequencerAddress!: AztecAddress;
65
- public coinbase!: EthAddress;
66
-
67
- public fpcAdmin!: AztecAddress;
68
-
69
- public gasSettings!: GasSettings;
70
-
71
- public rollupContract!: RollupContract;
72
-
73
- public feeJuiceContract!: FeeJuiceContract;
74
- public bananaCoin!: BananaCoin;
75
- public bananaFPC!: FPCContract;
76
- public sponsoredFPC!: SponsoredFPCContract;
77
- public counterContract!: CounterContract;
78
- public subscriptionContract!: AppSubscriptionContract;
79
- public feeJuiceBridgeTestHarness!: GasBridgingTestHarness;
80
-
81
- public context!: SubsystemsContext;
82
- public chainMonitor!: ChainMonitor;
83
-
84
- public getCoinbaseBalance!: () => Promise<bigint>;
85
- public getCoinbaseSequencerRewards!: () => Promise<bigint>;
86
- public getGasBalanceFn!: BalancesFn;
87
- public getBananaPublicBalanceFn!: BalancesFn;
88
- public getBananaPrivateBalanceFn!: BalancesFn;
89
- public getProverFee!: (blockNumber: BlockNumber) => Promise<bigint>;
90
-
91
- public readonly ALICE_INITIAL_BANANAS = BigInt(1e22);
92
- public readonly SUBSCRIPTION_AMOUNT = BigInt(1e19);
93
- public readonly APP_SPONSORED_TX_GAS_LIMIT = BigInt(10e9);
94
-
95
- constructor(
96
- testName: string,
97
- private numberOfAccounts = 3,
98
- setupOptions: Partial<SetupOptions & DeployL1ContractsArgs> = {},
99
- ) {
100
- if (!numberOfAccounts) {
101
- throw new Error('There must be at least 1 initial account.');
102
- }
103
- setupOptions.coinbase ??= EthAddress.random();
104
- this.coinbase = setupOptions.coinbase!;
105
- this.logger = createLogger(`e2e:e2e_fees:${testName}`);
106
- this.snapshotManager = createSnapshotManager(
107
- `e2e_fees/${testName}-${numberOfAccounts}`,
108
- dataPath,
109
- { startProverNode: true, ...setupOptions },
110
- { ...setupOptions },
111
- );
112
- }
113
-
114
- async setup() {
115
- const context = await this.snapshotManager.setup();
116
-
117
- this.rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
118
- this.chainMonitor = new ChainMonitor(this.rollupContract, context.dateProvider, this.logger, 200).start();
119
-
120
- return this;
121
- }
122
-
123
- async teardown() {
124
- await this.chainMonitor.stop();
125
- await this.snapshotManager.teardown();
126
- }
127
-
128
- setIsMarkingAsProven(b: boolean) {
129
- this.context.watcher.setIsMarkingAsProven(b);
130
- }
131
-
132
- async catchUpProvenChain() {
133
- const bn = await this.aztecNode.getBlockNumber();
134
- while ((await this.aztecNode.getProvenBlockNumber()) < bn) {
135
- await sleep(1000);
136
- }
137
- }
138
-
139
- async getBlockRewards() {
140
- const blockReward = await this.rollupContract.getCheckpointReward();
141
- const rewardConfig = await this.rollupContract.getRewardConfig();
142
-
143
- const balance = await this.feeJuiceBridgeTestHarness.getL1FeeJuiceBalance(
144
- EthAddress.fromString(rewardConfig.rewardDistributor),
145
- );
146
-
147
- const toDistribute = balance > blockReward ? blockReward : balance;
148
- const sequencerBlockRewards = (toDistribute * BigInt(rewardConfig.sequencerBps)) / 10000n;
149
- const proverBlockRewards = toDistribute - sequencerBlockRewards;
150
-
151
- return { sequencerBlockRewards, proverBlockRewards };
152
- }
153
-
154
- async mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress) {
155
- const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(recipient);
156
- const { claimSecret: secret, messageLeafIndex: index } = claim;
157
- await this.feeJuiceContract.methods
158
- .claim(recipient, claim.claimAmount, secret, index)
159
- .send({ from: minter })
160
- .wait();
161
- }
162
-
163
- /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
164
- async mintPrivateBananas(amount: bigint, address: AztecAddress) {
165
- const balanceBefore = await this.bananaCoin.methods
166
- .balance_of_private(address)
167
- .simulate({ from: this.aliceAddress });
168
-
169
- await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
170
-
171
- const balanceAfter = await this.bananaCoin.methods
172
- .balance_of_private(address)
173
- .simulate({ from: this.aliceAddress });
174
- expect(balanceAfter).toEqual(balanceBefore + amount);
175
- }
176
-
177
- public async applyBaseSnapshots() {
178
- await this.applyInitialAccountsSnapshot();
179
- await this.applyPublicDeployAccountsSnapshot();
180
- await this.applySetupFeeJuiceSnapshot();
181
- await this.applyDeployBananaTokenSnapshot();
182
- }
183
-
184
- async applyInitialAccountsSnapshot() {
185
- await this.snapshotManager.snapshot(
186
- 'initial_accounts',
187
- deployAccounts(this.numberOfAccounts, this.logger),
188
- async ({ deployedAccounts }, { wallet, aztecNode, cheatCodes }) => {
189
- this.wallet = wallet;
190
- this.aztecNode = aztecNode;
191
- this.gasSettings = GasSettings.default({ maxFeesPerGas: (await this.aztecNode.getCurrentBaseFees()).mul(2) });
192
- this.cheatCodes = cheatCodes;
193
- this.accounts = deployedAccounts.map(a => a.address);
194
- this.accounts.forEach((a, i) => this.logger.verbose(`Account ${i} address: ${a}`));
195
- [this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
196
-
197
- // We set Alice as the FPC admin to avoid the need for deployment of another account.
198
- this.fpcAdmin = this.aliceAddress;
199
-
200
- const canonicalFeeJuice = await getCanonicalFeeJuice();
201
- this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
202
- },
203
- );
204
- }
205
-
206
- async applyPublicDeployAccountsSnapshot() {
207
- await this.snapshotManager.snapshot('public_deploy_accounts', () =>
208
- ensureAccountContractsPublished(this.wallet, this.accounts),
209
- );
210
- }
211
-
212
- async applySetupFeeJuiceSnapshot() {
213
- await this.snapshotManager.snapshot(
214
- 'setup_fee_juice',
215
- async () => {},
216
- async (_data, context) => {
217
- this.context = context;
218
-
219
- this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
220
-
221
- this.getGasBalanceFn = getBalancesFn(
222
- '⛽',
223
- this.feeJuiceContract.methods.balance_of_public,
224
- this.aliceAddress,
225
- this.logger,
226
- );
227
-
228
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
229
- aztecNode: context.aztecNode,
230
- aztecNodeAdmin: context.aztecNode,
231
- l1Client: context.deployL1ContractsValues.l1Client,
232
- wallet: this.wallet,
233
- logger: this.logger,
234
- });
235
- },
236
- );
237
- }
238
-
239
- async applyDeployBananaTokenSnapshot() {
240
- await this.snapshotManager.snapshot(
241
- 'deploy_banana_token',
242
- async () => {
243
- const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n)
244
- .send({ from: this.aliceAddress })
245
- .deployed();
246
- this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
247
- return { bananaCoinAddress: bananaCoin.address };
248
- },
249
- ({ bananaCoinAddress }) => {
250
- this.bananaCoin = BananaCoin.at(bananaCoinAddress, this.wallet);
251
- const logger = this.logger;
252
- this.getBananaPublicBalanceFn = getBalancesFn(
253
- '🍌.public',
254
- this.bananaCoin.methods.balance_of_public,
255
- this.aliceAddress,
256
- logger,
257
- );
258
- this.getBananaPrivateBalanceFn = getBalancesFn(
259
- '🍌.private',
260
- this.bananaCoin.methods.balance_of_private,
261
- this.aliceAddress,
262
- logger,
263
- );
264
- return Promise.resolve();
265
- },
266
- );
267
- }
268
-
269
- public async applyFPCSetupSnapshot() {
270
- await this.snapshotManager.snapshot(
271
- 'fpc_setup',
272
- async context => {
273
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
274
- expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
275
-
276
- const bananaCoin = this.bananaCoin;
277
- const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin)
278
- .send({ from: this.aliceAddress })
279
- .deployed();
280
-
281
- this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
282
-
283
- await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.aliceAddress);
284
-
285
- return {
286
- bananaFPCAddress: bananaFPC.address,
287
- feeJuiceAddress: feeJuiceContract.address,
288
- l1FeeJuiceAddress: this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress,
289
- rollupAddress: context.deployL1ContractsValues.l1ContractAddresses.rollupAddress,
290
- };
291
- },
292
- (data, context) => {
293
- const bananaFPC = FPCContract.at(data.bananaFPCAddress, this.wallet);
294
- this.bananaFPC = bananaFPC;
295
-
296
- this.getCoinbaseBalance = async () => {
297
- const l1Client = createExtendedL1Client(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
298
- const gasL1 = getContract({
299
- address: data.l1FeeJuiceAddress.toString(),
300
- abi: TestERC20Abi,
301
- client: l1Client,
302
- });
303
- return await gasL1.read.balanceOf([this.coinbase.toString()]);
304
- };
305
-
306
- this.getCoinbaseSequencerRewards = async () => {
307
- return await this.rollupContract.getSequencerRewards(this.coinbase);
308
- };
309
-
310
- this.getProverFee = async (blockNumber: BlockNumber) => {
311
- const block = await this.aztecNode.getBlock(blockNumber);
312
-
313
- // @todo @lherskind As we deal with #13601
314
- // Right now the value is from `FeeLib.sol`
315
- const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
316
-
317
- // We round up
318
- const mulDiv = (a: bigint, b: bigint, c: bigint) => (a * b) / c + ((a * b) % c > 0n ? 1n : 0n);
319
-
320
- const { baseFee } = await this.rollupContract.getL1FeesAt(block!.header.globalVariables.timestamp);
321
- const proverCost =
322
- mulDiv(
323
- mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, await this.rollupContract.getEpochDuration()),
324
- 1n,
325
- await this.rollupContract.getManaTarget(),
326
- ) + (await this.rollupContract.getProvingCostPerMana());
327
-
328
- const price = await this.rollupContract.getFeeAssetPerEth();
329
-
330
- const mana = block!.header.totalManaUsed.toBigInt();
331
- return mulDiv(mana * proverCost, price, 10n ** 9n);
332
- };
333
- return Promise.resolve();
334
- },
335
- );
336
- }
337
-
338
- public async applySponsoredFPCSetupSnapshot() {
339
- await this.snapshotManager.snapshot(
340
- 'sponsored_fpc_setup',
341
- async context => {
342
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
343
- expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
344
-
345
- const sponsoredFPC = await setupSponsoredFPC(this.wallet);
346
- this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
347
-
348
- return {
349
- sponsoredFPCAddress: sponsoredFPC.address,
350
- };
351
- },
352
- data => {
353
- this.sponsoredFPC = SponsoredFPCContract.at(data.sponsoredFPCAddress, this.wallet);
354
- return Promise.resolve();
355
- },
356
- );
357
- }
358
-
359
- public async applyFundAliceWithBananas() {
360
- await this.snapshotManager.snapshot(
361
- 'fund_alice',
362
- async () => {
363
- await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
364
- await this.bananaCoin.methods
365
- .mint_to_public(this.aliceAddress, this.ALICE_INITIAL_BANANAS)
366
- .send({ from: this.aliceAddress })
367
- .wait();
368
- },
369
- () => Promise.resolve(),
370
- );
371
- }
372
-
373
- public async applyFundAliceWithPrivateBananas() {
374
- await this.snapshotManager.snapshot(
375
- 'fund_alice_with_private_bananas',
376
- async () => {
377
- await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
378
- },
379
- () => Promise.resolve(),
380
- );
381
- }
382
- }
@@ -1,77 +0,0 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
2
- import type { L2Block } from '@aztec/aztec.js/block';
3
- import { Fr } from '@aztec/aztec.js/fields';
4
- import { BatchedBlob, Blob, getEthBlobEvaluationInputs, getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
5
- import { EthAddress } from '@aztec/foundation/eth-address';
6
-
7
- import { writeFile } from 'fs/promises';
8
-
9
- const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
10
-
11
- /**
12
- * Creates a json object that can be used to test the solidity contract.
13
- * The json object must be put into
14
- */
15
- export async function writeJson(
16
- fileName: string,
17
- block: L2Block,
18
- l1ToL2Content: Fr[],
19
- blobs: Blob[],
20
- batchedBlob: BatchedBlob,
21
- recipientAddress: AztecAddress,
22
- deployerAddress: `0x${string}`,
23
- ): Promise<void> {
24
- if (!AZTEC_GENERATE_TEST_DATA) {
25
- return;
26
- }
27
- // Path relative to the package.json in the end-to-end folder
28
- const path = `../../l1-contracts/test/fixtures/${fileName}.json`;
29
-
30
- const asHex = (value: Fr | Buffer | EthAddress | AztecAddress, size = 64) => {
31
- const buffer = Buffer.isBuffer(value) ? value : value.toBuffer();
32
- return `0x${buffer.toString('hex').padStart(size, '0')}`;
33
- };
34
-
35
- const jsonObject = {
36
- populate: {
37
- l1ToL2Content: l1ToL2Content.map(value => asHex(value)),
38
- recipient: asHex(recipientAddress.toField()),
39
- sender: deployerAddress,
40
- },
41
- messages: {
42
- l2ToL1Messages: block.body.txEffects.flatMap(txEffect => txEffect.l2ToL1Msgs).map(value => asHex(value)),
43
- },
44
- checkpoint: {
45
- // The json formatting in forge is a bit brittle, so we convert Fr to a number in the few values below.
46
- // This should not be a problem for testing as long as the values are not larger than u32.
47
- archive: asHex(block.archive.root),
48
- blobCommitments: getPrefixedEthBlobCommitments(blobs),
49
- batchedBlobInputs: getEthBlobEvaluationInputs(batchedBlob),
50
- checkpointNumber: block.number,
51
- body: `0x${block.body.toBuffer().toString('hex')}`,
52
- header: {
53
- lastArchiveRoot: asHex(block.header.lastArchive.root),
54
- blockHeadersHash: asHex(block.header.blockHeadersHash),
55
- contentCommitment: {
56
- blobsHash: asHex(block.header.contentCommitment.blobsHash),
57
- inHash: asHex(block.header.contentCommitment.inHash),
58
- outHash: asHex(block.header.contentCommitment.outHash),
59
- },
60
- slotNumber: Number(block.header.globalVariables.slotNumber),
61
- timestamp: Number(block.header.globalVariables.timestamp),
62
- coinbase: asHex(block.header.globalVariables.coinbase, 40),
63
- feeRecipient: asHex(block.header.globalVariables.feeRecipient),
64
- gasFees: {
65
- feePerDaGas: Number(block.header.globalVariables.gasFees.feePerDaGas),
66
- feePerL2Gas: Number(block.header.globalVariables.gasFees.feePerL2Gas),
67
- },
68
- totalManaUsed: block.header.totalManaUsed.toNumber(),
69
- },
70
- headerHash: asHex(block.getCheckpointHeader().hash()),
71
- numTxs: block.body.txEffects.length,
72
- },
73
- };
74
-
75
- const output = JSON.stringify(jsonObject, null, 2);
76
- await writeFile(path, output, 'utf8');
77
- }
@@ -1,96 +0,0 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
2
- import { type Logger, createLogger } from '@aztec/aztec.js/log';
3
- import type { AztecNode } from '@aztec/aztec.js/node';
4
- import type { Wallet } from '@aztec/aztec.js/wallet';
5
- import { ChildContract } from '@aztec/noir-test-contracts.js/Child';
6
- import { ParentContract } from '@aztec/noir-test-contracts.js/Parent';
7
-
8
- import {
9
- type ISnapshotManager,
10
- type SubsystemsContext,
11
- createSnapshotManager,
12
- deployAccounts,
13
- publicDeployAccounts,
14
- } from '../fixtures/snapshot_manager.js';
15
-
16
- const { E2E_DATA_PATH: dataPath } = process.env;
17
-
18
- export class NestedContractTest {
19
- private snapshotManager: ISnapshotManager;
20
- logger: Logger;
21
- wallet!: Wallet;
22
- defaultAccountAddress!: AztecAddress;
23
- aztecNode!: AztecNode;
24
-
25
- parentContract!: ParentContract;
26
- childContract!: ChildContract;
27
-
28
- constructor(
29
- testName: string,
30
- private numberOfAccounts = 1,
31
- ) {
32
- this.logger = createLogger(`e2e:e2e_nested_contract:${testName}`);
33
- this.snapshotManager = createSnapshotManager(`e2e_nested_contract/${testName}-${numberOfAccounts}`, dataPath);
34
- }
35
-
36
- /**
37
- * Adds two state shifts to snapshot manager.
38
- * 1. Add 3 accounts.
39
- * 2. Publicly deploy accounts
40
- */
41
- async applyBaseSnapshots() {
42
- await this.snapshotManager.snapshot(
43
- 'accounts',
44
- deployAccounts(this.numberOfAccounts, this.logger),
45
- ({ deployedAccounts }, { wallet, aztecNode }) => {
46
- this.wallet = wallet;
47
- [{ address: this.defaultAccountAddress }] = deployedAccounts;
48
- this.aztecNode = aztecNode;
49
- return Promise.resolve();
50
- },
51
- );
52
-
53
- await this.snapshotManager.snapshot(
54
- 'public_deploy',
55
- async () => {},
56
- async () => {
57
- this.logger.verbose(`Public deploy accounts...`);
58
- await publicDeployAccounts(this.wallet, [this.defaultAccountAddress]);
59
- },
60
- );
61
- }
62
-
63
- async setup() {
64
- await this.snapshotManager.setup();
65
- }
66
-
67
- async teardown() {
68
- await this.snapshotManager.teardown();
69
- }
70
-
71
- snapshot = <T>(
72
- name: string,
73
- apply: (context: SubsystemsContext) => Promise<T>,
74
- restore: (snapshotData: T, context: SubsystemsContext) => Promise<void> = () => Promise.resolve(),
75
- ): Promise<void> => this.snapshotManager.snapshot(name, apply, restore);
76
-
77
- async applyManualSnapshots() {
78
- await this.snapshotManager.snapshot(
79
- 'manual',
80
- async () => {
81
- const parentContract = await ParentContract.deploy(this.wallet)
82
- .send({ from: this.defaultAccountAddress })
83
- .deployed();
84
- const childContract = await ChildContract.deploy(this.wallet)
85
- .send({ from: this.defaultAccountAddress })
86
- .deployed();
87
- return { parentContractAddress: parentContract.address, childContractAddress: childContract.address };
88
- },
89
- ({ parentContractAddress, childContractAddress }) => {
90
- this.parentContract = ParentContract.at(parentContractAddress, this.wallet);
91
- this.childContract = ChildContract.at(childContractAddress, this.wallet);
92
- return Promise.resolve();
93
- },
94
- );
95
- }
96
- }