@aztec/end-to-end 0.0.1-commit.2ed92850 → 0.0.1-commit.3100065

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 (350) hide show
  1. package/README.md +229 -14
  2. package/dest/automine/automine_test_context.d.ts +85 -0
  3. package/dest/automine/automine_test_context.d.ts.map +1 -0
  4. package/dest/automine/automine_test_context.js +98 -0
  5. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
  6. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  7. package/dest/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 +45 -48
  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 +43 -48
  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 +65 -56
  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/utils.d.ts +3 -3
  36. package/dest/bench/utils.d.ts.map +1 -1
  37. package/dest/bench/utils.js +102 -8
  38. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  39. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  40. package/dest/composed/ha/ha_full_setup.js +383 -0
  41. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  42. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  43. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  44. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  45. package/dest/fixtures/authwit_proxy.js +34 -0
  46. package/dest/fixtures/e2e_prover_test.d.ts +18 -14
  47. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  48. package/dest/fixtures/e2e_prover_test.js +84 -75
  49. package/dest/fixtures/elu_monitor.d.ts +21 -0
  50. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  51. package/dest/fixtures/elu_monitor.js +102 -0
  52. package/dest/fixtures/fixtures.d.ts +82 -1
  53. package/dest/fixtures/fixtures.d.ts.map +1 -1
  54. package/dest/fixtures/fixtures.js +84 -0
  55. package/dest/fixtures/get_bb_config.d.ts +1 -1
  56. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  57. package/dest/fixtures/get_bb_config.js +5 -5
  58. package/dest/fixtures/ha_setup.d.ts +71 -0
  59. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  60. package/dest/fixtures/ha_setup.js +119 -0
  61. package/dest/fixtures/index.d.ts +3 -1
  62. package/dest/fixtures/index.d.ts.map +1 -1
  63. package/dest/fixtures/index.js +2 -0
  64. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  65. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  66. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  67. package/dest/fixtures/setup.d.ts +120 -61
  68. package/dest/fixtures/setup.d.ts.map +1 -1
  69. package/dest/fixtures/setup.js +337 -327
  70. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  71. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  72. package/dest/fixtures/setup_p2p_test.js +46 -35
  73. package/dest/fixtures/standard_contracts_genesis.d.ts +16 -0
  74. package/dest/fixtures/standard_contracts_genesis.d.ts.map +1 -0
  75. package/dest/fixtures/standard_contracts_genesis.js +25 -0
  76. package/dest/fixtures/timing.d.ts +42 -0
  77. package/dest/fixtures/timing.d.ts.map +1 -0
  78. package/dest/fixtures/timing.js +72 -0
  79. package/dest/fixtures/token_utils.d.ts +22 -4
  80. package/dest/fixtures/token_utils.d.ts.map +1 -1
  81. package/dest/fixtures/token_utils.js +26 -8
  82. package/dest/fixtures/utils.d.ts +2 -2
  83. package/dest/fixtures/utils.d.ts.map +1 -1
  84. package/dest/fixtures/utils.js +1 -1
  85. package/dest/fixtures/wait_helpers.d.ts +135 -0
  86. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  87. package/dest/fixtures/wait_helpers.js +154 -0
  88. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  89. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  90. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  91. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  92. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  93. package/dest/forward-compatibility/wallet_service.js +109 -0
  94. package/dest/install_legacy_contracts.d.cts +10 -0
  95. package/dest/install_legacy_contracts.d.cts.map +1 -0
  96. package/dest/legacy-jest-resolver.d.cts +3 -0
  97. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  98. package/dest/multi-node/block-production/setup.d.ts +97 -0
  99. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  100. package/dest/multi-node/block-production/setup.js +158 -0
  101. package/dest/multi-node/governance/setup.d.ts +67 -0
  102. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  103. package/dest/multi-node/governance/setup.js +126 -0
  104. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  105. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  106. package/dest/multi-node/multi_node_test_context.js +347 -0
  107. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  108. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  109. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  110. package/dest/multi-node/slashing/setup.d.ts +167 -0
  111. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  112. package/dest/multi-node/slashing/setup.js +275 -0
  113. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +22 -12
  114. package/dest/p2p/p2p_network.d.ts.map +1 -0
  115. package/dest/{e2e_p2p → p2p}/p2p_network.js +98 -37
  116. package/dest/p2p/reqresp/utils.d.ts +19 -0
  117. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  118. package/dest/p2p/reqresp/utils.js +193 -0
  119. package/dest/p2p/shared.d.ts +72 -0
  120. package/dest/p2p/shared.d.ts.map +1 -0
  121. package/dest/p2p/shared.js +212 -0
  122. package/dest/shared/cross_chain_test_harness.d.ts +6 -4
  123. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  124. package/dest/shared/cross_chain_test_harness.js +44 -32
  125. package/dest/shared/gas_portal_test_harness.d.ts +8 -5
  126. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  127. package/dest/shared/gas_portal_test_harness.js +26 -14
  128. package/dest/shared/index.d.ts +2 -1
  129. package/dest/shared/index.d.ts.map +1 -1
  130. package/dest/shared/index.js +1 -0
  131. package/dest/shared/jest_setup.js +41 -1
  132. package/dest/shared/mock_state_view.d.ts +86 -0
  133. package/dest/shared/mock_state_view.d.ts.map +1 -0
  134. package/dest/shared/mock_state_view.js +186 -0
  135. package/dest/shared/submit-transactions.d.ts +2 -2
  136. package/dest/shared/submit-transactions.d.ts.map +1 -1
  137. package/dest/shared/submit-transactions.js +12 -5
  138. package/dest/shared/timing_env.d.js +5 -0
  139. package/dest/shared/timing_env.js +365 -0
  140. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  141. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  142. package/dest/shared/uniswap_l1_l2.js +56 -44
  143. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  144. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  145. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  146. package/dest/simulators/lending_simulator.d.ts +10 -3
  147. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  148. package/dest/simulators/lending_simulator.js +27 -15
  149. package/dest/simulators/token_simulator.d.ts +1 -1
  150. package/dest/simulators/token_simulator.d.ts.map +1 -1
  151. package/dest/simulators/token_simulator.js +3 -24
  152. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  153. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  154. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  155. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  156. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  157. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  158. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  159. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  160. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +17 -4
  161. package/dest/single-node/fees/fees_test.d.ts +95 -0
  162. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  163. package/dest/single-node/fees/fees_test.js +347 -0
  164. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  165. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  166. package/dest/single-node/l1-reorgs/setup.js +57 -0
  167. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  168. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  169. package/dest/single-node/partial-proofs/setup.js +5 -0
  170. package/dest/single-node/proving/setup.d.ts +5 -0
  171. package/dest/single-node/proving/setup.d.ts.map +1 -0
  172. package/dest/single-node/proving/setup.js +5 -0
  173. package/dest/single-node/recovery/setup.d.ts +5 -0
  174. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  175. package/dest/single-node/recovery/setup.js +5 -0
  176. package/dest/single-node/setup.d.ts +49 -0
  177. package/dest/single-node/setup.d.ts.map +1 -0
  178. package/dest/single-node/setup.js +56 -0
  179. package/dest/single-node/single_node_test_context.d.ts +373 -0
  180. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  181. package/dest/single-node/single_node_test_context.js +845 -0
  182. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  183. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  184. package/dest/spartan/setup_test_wallets.js +124 -47
  185. package/dest/spartan/tx_metrics.d.ts +61 -4
  186. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  187. package/dest/spartan/tx_metrics.js +256 -21
  188. package/dest/spartan/utils/bot.d.ts +3 -2
  189. package/dest/spartan/utils/bot.d.ts.map +1 -1
  190. package/dest/spartan/utils/bot.js +2 -1
  191. package/dest/spartan/utils/config.d.ts +11 -28
  192. package/dest/spartan/utils/config.d.ts.map +1 -1
  193. package/dest/spartan/utils/config.js +4 -1
  194. package/dest/spartan/utils/index.d.ts +6 -4
  195. package/dest/spartan/utils/index.d.ts.map +1 -1
  196. package/dest/spartan/utils/index.js +6 -2
  197. package/dest/spartan/utils/k8s.d.ts +31 -1
  198. package/dest/spartan/utils/k8s.d.ts.map +1 -1
  199. package/dest/spartan/utils/k8s.js +124 -0
  200. package/dest/spartan/utils/nodes.d.ts +14 -5
  201. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  202. package/dest/spartan/utils/nodes.js +204 -33
  203. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  204. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  205. package/dest/spartan/utils/pod_logs.js +74 -0
  206. package/dest/spartan/utils/scripts.d.ts +18 -4
  207. package/dest/spartan/utils/scripts.d.ts.map +1 -1
  208. package/dest/spartan/utils/scripts.js +19 -4
  209. package/dest/test-wallet/test_wallet.d.ts +105 -0
  210. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  211. package/dest/test-wallet/test_wallet.js +320 -0
  212. package/dest/test-wallet/utils.d.ts +76 -0
  213. package/dest/test-wallet/utils.d.ts.map +1 -0
  214. package/dest/test-wallet/utils.js +126 -0
  215. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  216. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  217. package/dest/test-wallet/wallet_worker_script.js +56 -0
  218. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  219. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  220. package/dest/test-wallet/worker_wallet.js +155 -0
  221. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  222. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  223. package/dest/test-wallet/worker_wallet_schema.js +23 -0
  224. package/package.json +53 -46
  225. package/src/automine/README.md +60 -0
  226. package/src/automine/automine_test_context.ts +153 -0
  227. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  228. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  229. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  230. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  231. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  232. package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +51 -61
  233. package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +50 -56
  234. package/src/automine/token/token_test_helpers.ts +138 -0
  235. package/src/bench/client_flows/benchmark.ts +21 -0
  236. package/src/bench/client_flows/client_flows_benchmark.ts +106 -72
  237. package/src/bench/client_flows/config.ts +9 -1
  238. package/src/bench/utils.ts +117 -8
  239. package/src/composed/ha/ha_full_setup.ts +466 -0
  240. package/src/fixtures/authwit_proxy.ts +54 -0
  241. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  242. package/src/fixtures/e2e_prover_test.ts +102 -96
  243. package/src/fixtures/elu_monitor.ts +126 -0
  244. package/src/fixtures/fixtures.ts +108 -0
  245. package/src/fixtures/get_bb_config.ts +7 -6
  246. package/src/fixtures/ha_setup.ts +192 -0
  247. package/src/fixtures/index.ts +2 -0
  248. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  249. package/src/fixtures/setup.ts +438 -445
  250. package/src/fixtures/setup_p2p_test.ts +54 -54
  251. package/src/fixtures/standard_contracts_genesis.ts +28 -0
  252. package/src/fixtures/timing.ts +97 -0
  253. package/src/fixtures/token_utils.ts +42 -7
  254. package/src/fixtures/utils.ts +2 -3
  255. package/src/fixtures/wait_helpers.ts +333 -0
  256. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  257. package/src/forward-compatibility/wallet_service.ts +106 -0
  258. package/src/guides/up_quick_start.sh +7 -4
  259. package/src/infra/README.md +12 -0
  260. package/src/install_legacy_contracts.cjs +75 -0
  261. package/src/legacy-jest-resolver.cjs +112 -0
  262. package/src/multi-node/README.md +96 -0
  263. package/src/multi-node/block-production/setup.ts +272 -0
  264. package/src/multi-node/governance/setup.ts +172 -0
  265. package/src/multi-node/multi_node_test_context.ts +447 -0
  266. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  267. package/src/multi-node/slashing/setup.ts +433 -0
  268. package/src/p2p/README.md +78 -0
  269. package/src/{e2e_p2p → p2p}/p2p_network.ts +124 -53
  270. package/src/p2p/reqresp/utils.ts +263 -0
  271. package/src/p2p/shared.ts +329 -0
  272. package/src/shared/cross_chain_test_harness.ts +44 -21
  273. package/src/shared/gas_portal_test_harness.ts +33 -15
  274. package/src/shared/index.ts +1 -0
  275. package/src/shared/jest_setup.ts +51 -1
  276. package/src/shared/mock_state_view.ts +188 -0
  277. package/src/shared/submit-transactions.ts +15 -6
  278. package/src/shared/timing_env.d.mts +39 -0
  279. package/src/shared/timing_env.mjs +363 -0
  280. package/src/shared/uniswap_l1_l2.ts +98 -56
  281. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  282. package/src/simulators/lending_simulator.ts +33 -15
  283. package/src/simulators/token_simulator.ts +6 -30
  284. package/src/single-node/README.md +66 -0
  285. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  286. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  287. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +19 -5
  288. package/src/single-node/fees/fees_test.ts +437 -0
  289. package/src/single-node/l1-reorgs/setup.ts +93 -0
  290. package/src/single-node/partial-proofs/setup.ts +8 -0
  291. package/src/single-node/proving/setup.ts +15 -0
  292. package/src/single-node/recovery/setup.ts +8 -0
  293. package/src/single-node/setup.ts +63 -0
  294. package/src/single-node/single_node_test_context.ts +1054 -0
  295. package/src/spartan/setup_test_wallets.ts +168 -42
  296. package/src/spartan/tx_metrics.ts +234 -24
  297. package/src/spartan/utils/bot.ts +4 -1
  298. package/src/spartan/utils/config.ts +3 -0
  299. package/src/spartan/utils/index.ts +10 -1
  300. package/src/spartan/utils/k8s.ts +160 -0
  301. package/src/spartan/utils/nodes.ts +251 -31
  302. package/src/spartan/utils/pod_logs.ts +99 -0
  303. package/src/spartan/utils/scripts.ts +43 -7
  304. package/src/test-wallet/test_wallet.ts +426 -0
  305. package/src/test-wallet/utils.ts +205 -0
  306. package/src/test-wallet/wallet_worker_script.ts +66 -0
  307. package/src/test-wallet/worker_wallet.ts +214 -0
  308. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  309. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -53
  310. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  311. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
  312. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  313. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -128
  314. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
  315. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  316. package/dest/e2e_deploy_contract/deploy_test.js +0 -50
  317. package/dest/e2e_epochs/epochs_test.d.ts +0 -94
  318. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  319. package/dest/e2e_epochs/epochs_test.js +0 -342
  320. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  321. package/dest/e2e_fees/fees_test.d.ts +0 -88
  322. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  323. package/dest/e2e_fees/fees_test.js +0 -248
  324. package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
  325. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  326. package/dest/e2e_l1_publisher/write_json.js +0 -62
  327. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  328. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  329. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
  330. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  331. package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
  332. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  333. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  334. package/dest/e2e_p2p/inactivity_slash_test.js +0 -136
  335. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  336. package/dest/e2e_p2p/shared.d.ts +0 -46
  337. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  338. package/dest/e2e_p2p/shared.js +0 -177
  339. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -42
  340. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  341. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -194
  342. package/src/e2e_deploy_contract/deploy_test.ts +0 -85
  343. package/src/e2e_epochs/epochs_test.ts +0 -456
  344. package/src/e2e_fees/fees_test.ts +0 -339
  345. package/src/e2e_l1_publisher/write_json.ts +0 -82
  346. package/src/e2e_nested_contract/nested_contract_test.ts +0 -73
  347. package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
  348. package/src/e2e_p2p/shared.ts +0 -280
  349. /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
  350. /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
@@ -0,0 +1,212 @@
1
+ import { NO_WAIT, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
4
+ import { timesAsync } from '@aztec/foundation/collection';
5
+ import { Signature } from '@aztec/foundation/eth-signature';
6
+ import { retryUntil } from '@aztec/foundation/retry';
7
+ import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
8
+ import { getPXEConfig, getPXEConfig as getRpcConfig } from '@aztec/pxe/server';
9
+ import { CheckpointAttestation, ConsensusPayload } from '@aztec/stdlib/p2p';
10
+ import { expect } from '@jest/globals';
11
+ import { shouldCollectMetrics } from '../fixtures/fixtures.js';
12
+ import { SchnorrHardcodedKeyAccountContract } from '../fixtures/schnorr_hardcoded_account_contract.js';
13
+ import { createNodes } from '../fixtures/setup_p2p_test.js';
14
+ import { waitForTxs } from '../fixtures/wait_helpers.js';
15
+ import { GrafanaClient } from '../quality_of_service/grafana_client.js';
16
+ import { submitTxsTo } from '../shared/submit-transactions.js';
17
+ import { TestWallet } from '../test-wallet/test_wallet.js';
18
+ import { proveInteraction } from '../test-wallet/utils.js';
19
+ import { WAIT_FOR_TX_TIMEOUT } from './p2p_network.js';
20
+ // submits a set of transactions to the provided Private eXecution Environment (PXE)
21
+ export const submitComplexTxsTo = async (logger, from, spamContract, numTxs, opts = {})=>{
22
+ const txs = [];
23
+ const seed = 1234n;
24
+ const spamCount = 15;
25
+ for(let i = 0; i < numTxs; i++){
26
+ const method = spamContract.methods.spam(seed + BigInt(i * spamCount), spamCount, !!opts.callPublic);
27
+ const { txHash } = await method.send({
28
+ from,
29
+ wait: NO_WAIT
30
+ });
31
+ logger.info(`Tx sent with hash ${txHash.toString()}`);
32
+ txs.push(txHash);
33
+ }
34
+ return txs;
35
+ };
36
+ // creates a wallet and submit a given number of transactions through it.
37
+ export const submitTransactions = async (logger, node, numTxs, fundedAccount)=>{
38
+ const rpcConfig = getRpcConfig();
39
+ rpcConfig.proverEnabled = false;
40
+ const wallet = await TestWallet.create(node, // Use checkpointed chain tip to avoid anchoring on provisional blocks that the archiver can prune
41
+ // when their slot ends without a checkpoint landing on L1.
42
+ {
43
+ ...getPXEConfig(),
44
+ proverEnabled: false,
45
+ syncChainTip: 'checkpointed'
46
+ }, {
47
+ loggerActorLabel: 'pxe-tx'
48
+ });
49
+ const contract = new SchnorrHardcodedKeyAccountContract();
50
+ const fundedAccountManager = await wallet.createAccount({
51
+ secret: fundedAccount.secret,
52
+ salt: fundedAccount.salt,
53
+ contract
54
+ });
55
+ return submitTxsTo(wallet, fundedAccountManager.address, numTxs, logger);
56
+ };
57
+ export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
58
+ const rpcConfig = getRpcConfig();
59
+ rpcConfig.proverEnabled = false;
60
+ const wallet = await TestWallet.create(node, {
61
+ ...getPXEConfig(),
62
+ proverEnabled: false,
63
+ syncChainTip: 'checkpointed'
64
+ }, {
65
+ loggerActorLabel: 'pxe-tx'
66
+ });
67
+ const accountContract = new SchnorrHardcodedKeyAccountContract();
68
+ const fundedAccountManager = await wallet.createAccount({
69
+ secret: fundedAccount.secret,
70
+ salt: fundedAccount.salt,
71
+ contract: accountContract
72
+ });
73
+ const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {
74
+ salt: Fr.random()
75
+ });
76
+ await wallet.registerContract(testContractInstance, TestContractArtifact);
77
+ const contract = TestContract.at(testContractInstance.address, wallet);
78
+ return timesAsync(numTxs, async ()=>{
79
+ const tx = await proveInteraction(wallet, contract.methods.emit_nullifier(Fr.random()), {
80
+ from: fundedAccountManager.address
81
+ });
82
+ logger.info(`Tx prepared with hash ${tx.getTxHash()}`);
83
+ return tx;
84
+ });
85
+ }
86
+ const CHECK_ALERTS = process.env.CHECK_ALERTS === 'true';
87
+ const qosAlerts = [
88
+ {
89
+ alert: 'SequencerTimeToCollectAttestations',
90
+ expr: 'aztec_sequencer_time_to_collect_attestations > 3500',
91
+ labels: {
92
+ severity: 'error'
93
+ },
94
+ for: '10m',
95
+ annotations: {}
96
+ }
97
+ ];
98
+ /** Runs the shared p2p QoS Grafana alert check when CHECK_ALERTS=true; a no-op otherwise. */ export async function maybeCheckQosAlerts(logger) {
99
+ if (CHECK_ALERTS) {
100
+ const checker = new GrafanaClient(logger);
101
+ await checker.runAlertCheck(qosAlerts);
102
+ }
103
+ }
104
+ /** Waits until every node's synced block number reaches the initial node's current tip. */ export async function waitForNodesToSync(t, nodes) {
105
+ const targetBlock = await t.ctx.aztecNode.getBlockNumber();
106
+ t.logger.warn(`Waiting for all nodes to sync to block number ${targetBlock}`);
107
+ await retryUntil(async ()=>{
108
+ const blockNumbers = await Promise.all(nodes.map((node)=>node.getBlockNumber()));
109
+ const checkpointNumber = (await t.monitor.run()).checkpointNumber;
110
+ t.logger.info(`Current block numbers ${blockNumbers} (checkpoint number on L1 is ${checkpointNumber})`);
111
+ return blockNumbers.every((bn)=>bn >= targetBlock);
112
+ }, `nodes to sync to block number ${targetBlock}`, 30, 0.5);
113
+ }
114
+ /** Reads the published checkpoint containing the block that mined the given tx. */ export async function getPublishedCheckpointForTx(node, txHash) {
115
+ const receipt = await node.getTxReceipt(txHash);
116
+ const blockNumber = receipt.blockNumber;
117
+ const dataStore = node.getBlockSource();
118
+ const blockData = await dataStore.getBlockData({
119
+ number: BlockNumber(blockNumber)
120
+ });
121
+ const [publishedCheckpoint] = await dataStore.getCheckpoints({
122
+ from: blockData.checkpointNumber,
123
+ limit: 1
124
+ });
125
+ return publishedCheckpoint;
126
+ }
127
+ /** Polls until the archiver has indexed the first published checkpoint, then returns it. */ export async function waitForFirstPublishedCheckpoint(t, nodes, timeoutSeconds = 120) {
128
+ const dataStore = nodes[0].getBlockSource();
129
+ t.logger.warn('Waiting for first checkpoint to be published and indexed by the archiver');
130
+ return await retryUntil(async ()=>{
131
+ const blockNumbers = await Promise.all(nodes.map((node)=>node.getBlockNumber()));
132
+ const checkpointNumber = (await t.monitor.run()).checkpointNumber;
133
+ t.logger.info(`Current block numbers ${blockNumbers} (checkpoint number on L1 is ${checkpointNumber})`);
134
+ const [checkpoint] = await dataStore.getCheckpoints({
135
+ from: CheckpointNumber(1),
136
+ limit: 1
137
+ });
138
+ return checkpoint;
139
+ }, 'published checkpoint to be indexed', timeoutSeconds, 1);
140
+ }
141
+ /**
142
+ * Recovers the attestation signers from a published checkpoint and asserts each one belongs to the
143
+ * validator set formed by the given nodes. Returns the recovered signer addresses so callers can add
144
+ * scenario-specific assertions (e.g. an exact signer count).
145
+ */ export async function verifyAttestationSigners(t, nodes, publishedCheckpoint) {
146
+ const signatureContext = {
147
+ chainId: t.ctx.aztecNodeConfig.l1ChainId,
148
+ rollupAddress: t.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress
149
+ };
150
+ const payload = ConsensusPayload.fromCheckpoint(publishedCheckpoint.checkpoint, signatureContext);
151
+ const attestations = publishedCheckpoint.attestations.filter((a)=>!a.signature.isEmpty()).map((a)=>new CheckpointAttestation(payload, a.signature, Signature.empty()));
152
+ const signers = await Promise.all(attestations.map((att)=>att.getSender().toString()));
153
+ t.logger.info(`Attestation signers`, {
154
+ signers
155
+ });
156
+ // Check that the signers found are part of the proposer nodes to ensure the archiver fetched them right
157
+ const validatorAddresses = nodes.flatMap((node)=>node.getSequencer().validatorAddresses?.map((a)=>a.toString()));
158
+ t.logger.info(`Validator addresses`, {
159
+ addresses: validatorAddresses
160
+ });
161
+ for (const signer of signers){
162
+ expect(validatorAddresses).toContain(signer);
163
+ }
164
+ return signers;
165
+ }
166
+ /**
167
+ * Shared skeleton for the p2p gossip tests: create the validator nodes and any extra nodes, wait for
168
+ * the mesh to form, register the account, optionally submit and mine txs, then verify the attestation
169
+ * signers of a published checkpoint. Each varying part (validator registration, extra nodes, pre-submit
170
+ * waits, scenario-specific verification) is supplied via the callbacks in {@link GossipScenarioOptions}.
171
+ * Returns the validator nodes so the caller can track them for teardown.
172
+ */ export async function runGossipScenario(opts) {
173
+ const { t, numValidators, bootNodePort, txsPerNode } = opts;
174
+ if (!t.bootstrapNodeEnr) {
175
+ throw new Error('Bootstrap node ENR is not available');
176
+ }
177
+ await opts.beforeCreateNodes?.();
178
+ t.logger.info('Creating validator nodes');
179
+ const nodes = await createNodes(t.ctx.aztecNodeConfig, t.ctx.dateProvider, t.bootstrapNodeEnr, numValidators, bootNodePort, t.genesis, t.dataDirFor('validator'), shouldCollectMetrics());
180
+ await opts.createExtraNodes?.(nodes);
181
+ t.logger.info('Waiting for nodes to connect');
182
+ await t.waitForP2PMeshConnectivity(nodes, opts.mesh?.expectedNodeCount ?? numValidators, opts.mesh?.timeoutSeconds, opts.mesh?.checkIntervalSeconds, opts.mesh?.topics, opts.mesh?.minMeshPeerCount);
183
+ // We need to create the nodes before we setup the account, because those nodes form the committee
184
+ // and blocks cannot be built without them (targetCommitteeSize is set to the number of nodes).
185
+ await t.setupAccount();
186
+ await opts.beforeSubmit?.(nodes);
187
+ let firstTxHash;
188
+ if (txsPerNode > 0) {
189
+ t.logger.info('Submitting transactions');
190
+ const submitOne = (node)=>submitTransactions(t.logger, node, txsPerNode, t.fundedAccount);
191
+ // Each submitTransactions call builds its own wallet/PXE, so submissions are independent. When run
192
+ // concurrently, Promise.all preserves node order so submitted[i] stays aligned with nodes[i].
193
+ const submitted = [];
194
+ if (opts.submitSequentially) {
195
+ for (const node of nodes){
196
+ submitted.push(await submitOne(node));
197
+ }
198
+ } else {
199
+ submitted.push(...await Promise.all(nodes.map(submitOne)));
200
+ }
201
+ firstTxHash = submitted[0][0];
202
+ t.logger.info('Waiting for transactions to be mined');
203
+ await waitForTxs(nodes[0], submitted.flat(), {
204
+ timeout: WAIT_FOR_TX_TIMEOUT
205
+ });
206
+ t.logger.info('All transactions mined');
207
+ }
208
+ const publishedCheckpoint = opts.checkpointSource === 'first-published' ? await waitForFirstPublishedCheckpoint(t, nodes) : await getPublishedCheckpointForTx(nodes[0], firstTxHash);
209
+ await verifyAttestationSigners(t, nodes, publishedCheckpoint);
210
+ await opts.afterVerify?.(nodes);
211
+ return nodes;
212
+ }
@@ -8,6 +8,7 @@ import type { AztecNode } from '@aztec/aztec.js/node';
8
8
  import type { SiblingPath } from '@aztec/aztec.js/trees';
9
9
  import type { TxReceipt } from '@aztec/aztec.js/tx';
10
10
  import type { Wallet } from '@aztec/aztec.js/wallet';
11
+ import { OutboxContract } from '@aztec/ethereum/contracts';
11
12
  import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
12
13
  import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
13
14
  import { EpochNumber } from '@aztec/foundation/branded-types';
@@ -24,7 +25,7 @@ import { type Hex } from 'viem';
24
25
  * @param underlyingERC20Address - address of the underlying ERC20 contract to use (if none supplied, it deploys one)
25
26
  * @returns l2 contract instance, bridge contract instance, token portal instance, token portal address and the underlying ERC20 instance
26
27
  */
27
- export declare function deployAndInitializeTokenAndBridgeContracts(wallet: Wallet, l1Client: ExtendedViemWalletClient, rollupRegistryAddress: EthAddress, owner: AztecAddress, underlyingERC20Address: EthAddress): Promise<{
28
+ export declare function deployAndInitializeTokenAndBridgeContracts(wallet: Wallet, l1Client: ExtendedViemWalletClient, rollupRegistryAddress: EthAddress, owner: AztecAddress, underlyingERC20Address: EthAddress, predeployedTokenPortalAddress?: EthAddress): Promise<{
28
29
  /**
29
30
  * The L2 token contract instance.
30
31
  */
@@ -83,9 +84,10 @@ export declare class CrossChainTestHarness {
83
84
  readonly wallet: Wallet;
84
85
  /** Owner of the l2 token and bridge */
85
86
  readonly ownerAddress: AztecAddress;
86
- static new(aztecNode: AztecNode, l1Client: ExtendedViemWalletClient, wallet: Wallet, ownerAddress: AztecAddress, logger: Logger, underlyingERC20Address: EthAddress): Promise<CrossChainTestHarness>;
87
+ static new(aztecNode: AztecNode, l1Client: ExtendedViemWalletClient, wallet: Wallet, ownerAddress: AztecAddress, logger: Logger, underlyingERC20Address: EthAddress, predeployedTokenPortalAddress?: EthAddress): Promise<CrossChainTestHarness>;
87
88
  private readonly l1TokenManager;
88
89
  private readonly l1TokenPortalManager;
90
+ readonly outboxContract: OutboxContract;
89
91
  constructor(
90
92
  /** Aztec node instance. */
91
93
  aztecNode: AztecNode,
@@ -125,7 +127,7 @@ export declare class CrossChainTestHarness {
125
127
  getL2PublicBalanceOf(owner: AztecAddress): Promise<any>;
126
128
  expectPublicBalanceOnL2(owner: AztecAddress, expectedBalance: bigint): Promise<void>;
127
129
  getL2ToL1MessageLeaf(withdrawAmount: bigint, callerOnL1?: EthAddress): Promise<Fr>;
128
- withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
130
+ withdrawFundsFromBridgeOnL1(amount: bigint, epochNumber: EpochNumber, numCheckpointsInEpoch: number, messageIndex: bigint, siblingPath: SiblingPath<number>): Promise<void>;
129
131
  transferToPrivateOnL2(shieldAmount: bigint): Promise<void>;
130
132
  transferToPublicOnL2(amount: bigint, authwitNonce?: Fr): Promise<void>;
131
133
  /**
@@ -138,4 +140,4 @@ export declare class CrossChainTestHarness {
138
140
  makeMessageConsumable(msgHash: Fr | Hex): Promise<void>;
139
141
  toCrossChainContext(): CrossChainContext;
140
142
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fdGVzdF9oYXJuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL2Nyb3NzX2NoYWluX3Rlc3RfaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFHTCxLQUFLLGFBQWEsRUFDbEIsS0FBSywwQkFBMEIsRUFDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFM0UsT0FBTyxFQUFFLEtBQUssR0FBRyxFQUFlLE1BQU0s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
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fdGVzdF9oYXJuZXNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL2Nyb3NzX2NoYWluX3Rlc3RfaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFHTCxLQUFLLGFBQWEsRUFDbEIsS0FBSywwQkFBMEIsRUFDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFz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
@@ -1 +1 @@
1
- {"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross_chain_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/cross_chain_test_harness.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,15 @@
1
1
  import { EthAddress } from '@aztec/aztec.js/addresses';
2
2
  import { L1TokenPortalManager } from '@aztec/aztec.js/ethereum';
3
3
  import { Fr } from '@aztec/aztec.js/fields';
4
+ import { OutboxContract } from '@aztec/ethereum/contracts';
4
5
  import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
5
- import { retryUntil } from '@aztec/foundation/retry';
6
6
  import { TestERC20Abi, TokenPortalAbi, TokenPortalBytecode } from '@aztec/l1-artifacts';
7
7
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
8
8
  import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
9
9
  import { getContract } from 'viem';
10
+ import { testSpan } from '../fixtures/timing.js';
10
11
  import { mintTokensToPrivate } from '../fixtures/token_utils.js';
12
+ import { waitForL1ToL2MessageSeen } from './wait_for_l1_to_l2_message.js';
11
13
  /**
12
14
  * Deploy L1 token and portal, initialize portal, deploy a non native l2 token contract, its L2 bridge contract and attach is to the portal.
13
15
  * @param wallet - the wallet instance
@@ -17,39 +19,46 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
17
19
  * @param owner - owner of the L2 contract
18
20
  * @param underlyingERC20Address - address of the underlying ERC20 contract to use (if none supplied, it deploys one)
19
21
  * @returns l2 contract instance, bridge contract instance, token portal instance, token portal address and the underlying ERC20 instance
20
- */ export async function deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, rollupRegistryAddress, owner, underlyingERC20Address) {
21
- // deploy the token portal
22
- const { address: tokenPortalAddress } = await deployL1Contract(l1Client, TokenPortalAbi, TokenPortalBytecode);
22
+ */ export async function deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, rollupRegistryAddress, owner, underlyingERC20Address, predeployedTokenPortalAddress) {
23
+ // Deploy the token portal, unless it was already deployed before the node started (under automine).
24
+ const tokenPortalAddress = predeployedTokenPortalAddress ?? (await deployL1Contract(l1Client, TokenPortalAbi, TokenPortalBytecode)).address;
23
25
  const tokenPortal = getContract({
24
26
  address: tokenPortalAddress.toString(),
25
27
  abi: TokenPortalAbi,
26
28
  client: l1Client
27
29
  });
28
- // deploy l2 token
29
- const token = await TokenContract.deploy(wallet, owner, 'TokenName', 'TokenSymbol', 18).send({
30
- from: owner
31
- });
32
- // deploy l2 token bridge and attach to the portal
33
- const bridge = await TokenBridgeContract.deploy(wallet, token.address, tokenPortalAddress).send({
34
- from: owner
30
+ // Deploy the L2 token and its bridge concurrently so they share a slot: the bridge takes the token
31
+ // address as a constructor arg, but that address is known deterministically before the token deploy
32
+ // mines, and the bridge's constructor only stores it without calling into the token.
33
+ const tokenDeploy = TokenContract.deploy(wallet, owner, 'TokenName', 'TokenSymbol', 18, {
34
+ deployer: owner
35
35
  });
36
- if (await token.methods.get_admin().simulate({
36
+ const tokenAddress = await tokenDeploy.getAddress();
37
+ const [{ contract: token }, { contract: bridge }] = await Promise.all([
38
+ testSpan('deploy:token', ()=>tokenDeploy.send({
39
+ from: owner
40
+ })),
41
+ testSpan('deploy:bridge', ()=>TokenBridgeContract.deploy(wallet, tokenAddress, tokenPortalAddress).send({
42
+ from: owner
43
+ }))
44
+ ]);
45
+ if ((await token.methods.get_admin().simulate({
37
46
  from: owner
38
- }) !== owner.toBigInt()) {
47
+ })).result !== owner.toBigInt()) {
39
48
  throw new Error(`Token admin is not ${owner}`);
40
49
  }
41
50
  if (!(await bridge.methods.get_config().simulate({
42
51
  from: owner
43
- })).token.equals(token.address)) {
52
+ })).result.token.equals(token.address)) {
44
53
  throw new Error(`Bridge token is not ${token.address}`);
45
54
  }
46
55
  // make the bridge a minter on the token:
47
56
  await token.methods.set_minter(bridge.address, true).send({
48
57
  from: owner
49
58
  });
50
- if (await token.methods.is_minter(bridge.address).simulate({
59
+ if ((await token.methods.is_minter(bridge.address).simulate({
51
60
  from: owner
52
- }) === 1n) {
61
+ })).result === 1n) {
53
62
  throw new Error(`Bridge is not a minter`);
54
63
  }
55
64
  // initialize portal
@@ -86,17 +95,18 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
86
95
  l1ContractAddresses;
87
96
  wallet;
88
97
  ownerAddress;
89
- static async new(aztecNode, l1Client, wallet, ownerAddress, logger, underlyingERC20Address) {
98
+ static async new(aztecNode, l1Client, wallet, ownerAddress, logger, underlyingERC20Address, predeployedTokenPortalAddress) {
90
99
  const ethAccount = EthAddress.fromString((await l1Client.getAddresses())[0]);
91
100
  const l1ContractAddresses = (await aztecNode.getNodeInfo()).l1ContractAddresses;
92
101
  // Deploy and initialize all required contracts
93
102
  logger.info('Deploying and initializing token, portal and its bridge...');
94
- const { token, bridge, tokenPortalAddress, underlyingERC20 } = await deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, l1ContractAddresses.registryAddress, ownerAddress, underlyingERC20Address);
103
+ const { token, bridge, tokenPortalAddress, underlyingERC20 } = await deployAndInitializeTokenAndBridgeContracts(wallet, l1Client, l1ContractAddresses.registryAddress, ownerAddress, underlyingERC20Address, predeployedTokenPortalAddress);
95
104
  logger.info('Deployed and initialized token, portal and its bridge.');
96
105
  return new CrossChainTestHarness(aztecNode, logger, token, bridge, ethAccount, tokenPortalAddress, underlyingERC20.address, l1Client, l1ContractAddresses, wallet, ownerAddress);
97
106
  }
98
107
  l1TokenManager;
99
108
  l1TokenPortalManager;
109
+ outboxContract;
100
110
  constructor(/** Aztec node instance. */ aztecNode, /** Logger. */ logger, /** L2 Token contract. */ l2Token, /** L2 Token bridge contract. */ l2Bridge, /** Eth account to interact with. */ ethAccount, /** Portal address. */ tokenPortalAddress, /** Underlying token for portal tests. */ underlyingERC20Address, /** Viem Extended client instance. */ l1Client, /** Deployment addresses for all L1 contracts */ l1ContractAddresses, /** Wallet to simulate and send txs from. */ wallet, /** Owner of the l2 token and bridge */ ownerAddress){
101
111
  this.aztecNode = aztecNode;
102
112
  this.logger = logger;
@@ -111,6 +121,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
111
121
  this.ownerAddress = ownerAddress;
112
122
  this.l1TokenPortalManager = new L1TokenPortalManager(this.tokenPortalAddress, this.underlyingERC20Address, this.l1ContractAddresses.feeAssetHandlerAddress, this.l1ContractAddresses.outboxAddress, this.l1Client, this.logger);
113
123
  this.l1TokenManager = this.l1TokenPortalManager.getTokenManager();
124
+ this.outboxContract = new OutboxContract(this.l1Client, this.l1ContractAddresses.outboxAddress);
114
125
  }
115
126
  async mintTokensOnL1(amount) {
116
127
  const contract = getContract({
@@ -139,12 +150,12 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
139
150
  }
140
151
  async mintTokensPublicOnL2(amount) {
141
152
  this.logger.info('Minting tokens on L2 publicly');
142
- await this.l2Token.methods.mint_to_public(this.ownerAddress, amount).send({
143
- from: this.ownerAddress
144
- });
153
+ await testSpan('tx:mint', ()=>this.l2Token.methods.mint_to_public(this.ownerAddress, amount).send({
154
+ from: this.ownerAddress
155
+ }));
145
156
  }
146
157
  async mintTokensPrivateOnL2(amount) {
147
- await mintTokensToPrivate(this.l2Token, this.ownerAddress, this.ownerAddress, amount);
158
+ await testSpan('tx:mint', ()=>mintTokensToPrivate(this.l2Token, this.ownerAddress, this.ownerAddress, amount));
148
159
  }
149
160
  async sendL2PublicTransfer(transferAmount, receiverAddress) {
150
161
  // send a transfer tx to force through rollup with the message included
@@ -167,7 +178,7 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
167
178
  });
168
179
  }
169
180
  async withdrawPrivateFromAztecToL1(withdrawAmount, authwitNonce = Fr.ZERO, authWitness) {
170
- const withdrawReceipt = await this.l2Bridge.methods.exit_to_l1_private(this.l2Token.address, this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
181
+ const { receipt: withdrawReceipt } = await this.l2Bridge.methods.exit_to_l1_private(this.l2Token.address, this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
171
182
  authWitnesses: [
172
183
  authWitness
173
184
  ],
@@ -176,15 +187,15 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
176
187
  return withdrawReceipt;
177
188
  }
178
189
  async withdrawPublicFromAztecToL1(withdrawAmount, authwitNonce = Fr.ZERO) {
179
- const withdrawReceipt = await this.l2Bridge.methods.exit_to_l1_public(this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
190
+ const { receipt: withdrawReceipt } = await this.l2Bridge.methods.exit_to_l1_public(this.ethAccount, withdrawAmount, EthAddress.ZERO, authwitNonce).send({
180
191
  from: this.ownerAddress
181
192
  });
182
193
  return withdrawReceipt;
183
194
  }
184
195
  async getL2PrivateBalanceOf(owner) {
185
- return await this.l2Token.methods.balance_of_private(owner).simulate({
196
+ return (await this.l2Token.methods.balance_of_private(owner).simulate({
186
197
  from: owner
187
- });
198
+ })).result;
188
199
  }
189
200
  async expectPrivateBalanceOnL2(owner, expectedBalance) {
190
201
  const balance = await this.getL2PrivateBalanceOf(owner);
@@ -192,9 +203,9 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
192
203
  expect(balance).toBe(expectedBalance);
193
204
  }
194
205
  async getL2PublicBalanceOf(owner) {
195
- return await this.l2Token.methods.balance_of_public(owner).simulate({
206
+ return (await this.l2Token.methods.balance_of_public(owner).simulate({
196
207
  from: this.ownerAddress
197
- });
208
+ })).result;
198
209
  }
199
210
  async expectPublicBalanceOnL2(owner, expectedBalance) {
200
211
  const balance = await this.getL2PublicBalanceOf(owner);
@@ -203,8 +214,8 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
203
214
  async getL2ToL1MessageLeaf(withdrawAmount, callerOnL1 = EthAddress.ZERO) {
204
215
  return await this.l1TokenPortalManager.getL2ToL1MessageLeaf(withdrawAmount, this.ethAccount, this.l2Bridge.address, callerOnL1);
205
216
  }
206
- withdrawFundsFromBridgeOnL1(amount, epochNumber, messageIndex, siblingPath) {
207
- return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, messageIndex, siblingPath);
217
+ withdrawFundsFromBridgeOnL1(amount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath) {
218
+ return this.l1TokenPortalManager.withdrawFunds(amount, this.ethAccount, epochNumber, numCheckpointsInEpoch, messageIndex, siblingPath);
208
219
  }
209
220
  async transferToPrivateOnL2(shieldAmount) {
210
221
  this.logger.info('Transferring to private on L2');
@@ -226,8 +237,9 @@ import { mintTokensToPrivate } from '../fixtures/token_utils.js';
226
237
  * it's included it becomes available for consumption in the next block because the l1 to l2 message tree.
227
238
  */ async makeMessageConsumable(msgHash) {
228
239
  const frMsgHash = typeof msgHash === 'string' ? Fr.fromHexString(msgHash) : msgHash;
229
- // We poll isL1ToL2MessageSynced endpoint until the message is available
230
- await retryUntil(async ()=>await this.aztecNode.isL1ToL2MessageSynced(frMsgHash), 'message sync', 10);
240
+ await waitForL1ToL2MessageSeen(this.aztecNode, frMsgHash, {
241
+ timeoutSeconds: 10
242
+ });
231
243
  await this.mintTokensPublicOnL2(0n);
232
244
  await this.mintTokensPublicOnL2(0n);
233
245
  }
@@ -5,7 +5,9 @@ import type { AztecNode } from '@aztec/aztec.js/node';
5
5
  import type { Wallet } from '@aztec/aztec.js/wallet';
6
6
  import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
7
7
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
8
- import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
8
+ import type { AztecNodeAdmin, AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
9
+ /** Aztec node that may expose the debug mining API in local e2e setups. */
10
+ type MiningAztecNode = AztecNode & Partial<AztecNodeDebug>;
9
11
  export interface IGasBridgingTestHarness {
10
12
  getL1FeeJuiceBalance(address: EthAddress): Promise<bigint>;
11
13
  prepareTokensOnL1(owner: AztecAddress): Promise<L2AmountClaim>;
@@ -14,7 +16,7 @@ export interface IGasBridgingTestHarness {
14
16
  l1FeeJuiceAddress: EthAddress;
15
17
  }
16
18
  export interface FeeJuicePortalTestingHarnessFactoryConfig {
17
- aztecNode: AztecNode;
19
+ aztecNode: MiningAztecNode;
18
20
  aztecNodeAdmin?: AztecNodeAdmin;
19
21
  l1Client: ExtendedViemWalletClient;
20
22
  wallet: Wallet;
@@ -33,7 +35,7 @@ export declare class FeeJuicePortalTestingHarnessFactory {
33
35
  */
34
36
  export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
35
37
  /** Aztec node */
36
- aztecNode: AztecNode;
38
+ aztecNode: MiningAztecNode;
37
39
  /** Aztec node admin interface */
38
40
  aztecNodeAdmin: AztecNodeAdmin | undefined;
39
41
  /** Wallet. */
@@ -56,7 +58,7 @@ export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
56
58
  readonly feeJuicePortalManager: L1FeeJuicePortalManager;
57
59
  constructor(
58
60
  /** Aztec node */
59
- aztecNode: AztecNode,
61
+ aztecNode: MiningAztecNode,
60
62
  /** Aztec node admin interface */
61
63
  aztecNodeAdmin: AztecNodeAdmin | undefined,
62
64
  /** Wallet. */
@@ -85,4 +87,5 @@ export declare class GasBridgingTestHarness implements IGasBridgingTestHarness {
85
87
  bridgeFromL1ToL2(owner: AztecAddress, claimer: AztecAddress): Promise<void>;
86
88
  private advanceL2Block;
87
89
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0QsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RSxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7SUFDM0IsaUJBQWlCLEVBQUUsVUFBVSxDQUFDO0NBQy9CO0FBRUQsTUFBTSxXQUFXLHlDQUF5QztJQUN4RCxTQUFTLEVBQUUsU0FBUyxD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
90
+ export {};
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvZ2FzX3BvcnRhbF90ZXN0X2hhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxjQUFjLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXJFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUt0RiwyRUFBMkU7QUFDM0UsS0FBSyxlQUFlLEdBQUcsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUUzRCxNQUFNLFdBQVcsdUJBQXVCO0lBQ3RDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNELGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ELGdCQUFnQixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsUUFBUSxFQUFFLGdCQUFnQixDQUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"gas_portal_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/gas_portal_test_harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gas_portal_test_harness.d.ts","sourceRoot":"","sources":["../../src/shared/gas_portal_test_harness.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import { Fr } from '@aztec/aztec.js/fields';
4
4
  import { retryUntil } from '@aztec/foundation/retry';
5
5
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
6
6
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
7
+ import { testSpan } from '../fixtures/timing.js';
8
+ import { waitForL1ToL2MessageSeen } from './wait_for_l1_to_l2_message.js';
7
9
  export class FeeJuicePortalTestingHarnessFactory {
8
10
  config;
9
11
  constructor(config){
@@ -75,9 +77,9 @@ export class FeeJuicePortalTestingHarnessFactory {
75
77
  });
76
78
  }
77
79
  async getL2PublicBalanceOf(owner) {
78
- return await this.feeJuice.methods.balance_of_public(owner).simulate({
80
+ return (await this.feeJuice.methods.balance_of_public(owner).simulate({
79
81
  from: owner
80
- });
82
+ })).result;
81
83
  }
82
84
  async expectPublicBalanceOnL2(owner, expectedBalance) {
83
85
  const balance = await this.getL2PublicBalanceOf(owner);
@@ -87,20 +89,27 @@ export class FeeJuicePortalTestingHarnessFactory {
87
89
  const bridgeAmount = await this.l1TokenManager.getMintAmount();
88
90
  await this.mintTokensOnL1();
89
91
  const claim = await this.sendTokensToPortalPublic(bridgeAmount, owner);
90
- const isSynced = async ()=>await this.aztecNode.isL1ToL2MessageSynced(Fr.fromHexString(claim.messageHash));
91
- await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 1);
92
+ await waitForL1ToL2MessageSeen(this.aztecNode, Fr.fromHexString(claim.messageHash), {
93
+ timeoutSeconds: 24
94
+ });
92
95
  // Progress by 2 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
93
96
  await this.advanceL2Block();
94
97
  await this.advanceL2Block();
95
98
  return claim;
96
99
  }
97
100
  async bridgeFromL1ToL2(owner, claimer) {
98
- // Prepare the tokens on the L1 side
99
- const claim = await this.prepareTokensOnL1(owner);
100
- // Consume L1 -> L2 message and claim tokens privately on L2
101
- await this.consumeMessageOnAztecAndClaimPrivately(owner, claimer, claim);
101
+ await testSpan('setup:bridge', async ()=>{
102
+ // Prepare the tokens on the L1 side
103
+ const claim = await this.prepareTokensOnL1(owner);
104
+ // Consume L1 -> L2 message and claim tokens privately on L2
105
+ await this.consumeMessageOnAztecAndClaimPrivately(owner, claimer, claim);
106
+ });
102
107
  }
103
108
  async advanceL2Block() {
109
+ if (this.aztecNode.mineBlock) {
110
+ await this.aztecNode.mineBlock();
111
+ return;
112
+ }
104
113
  const initialBlockNumber = await this.aztecNode.getBlockNumber();
105
114
  let minTxsPerBlock = undefined;
106
115
  if (this.aztecNodeAdmin) {
@@ -109,11 +118,14 @@ export class FeeJuicePortalTestingHarnessFactory {
109
118
  minTxsPerBlock: 0
110
119
  }); // Set to 0 to ensure we can advance the block
111
120
  }
112
- await retryUntil(async ()=>await this.aztecNode.getBlockNumber() >= initialBlockNumber + 1);
113
- if (this.aztecNodeAdmin && minTxsPerBlock !== undefined) {
114
- await this.aztecNodeAdmin.setConfig({
115
- minTxsPerBlock
116
- });
121
+ try {
122
+ await retryUntil(async ()=>await this.aztecNode.getBlockNumber() >= initialBlockNumber + 1, 'gas portal block advance', 0, 0.25);
123
+ } finally{
124
+ if (this.aztecNodeAdmin && minTxsPerBlock !== undefined) {
125
+ await this.aztecNodeAdmin.setConfig({
126
+ minTxsPerBlock
127
+ });
128
+ }
117
129
  }
118
130
  }
119
- } // docs:end:cross_chain_test_harness
131
+ }