@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa

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 (410) 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/onchain_delivery_harness.d.ts +17 -0
  12. package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
  13. package/dest/automine/delivery/onchain_delivery_harness.js +123 -0
  14. package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
  15. package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
  16. package/dest/automine/token/blacklist_token_contract_test.js +166 -0
  17. package/dest/automine/token/token_contract_test.d.ts +40 -0
  18. package/dest/automine/token/token_contract_test.d.ts.map +1 -0
  19. package/dest/automine/token/token_contract_test.js +119 -0
  20. package/dest/automine/token/token_test_helpers.d.ts +73 -0
  21. package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
  22. package/dest/automine/token/token_test_helpers.js +97 -0
  23. package/dest/bench/client_flows/benchmark.d.ts +17 -2
  24. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  25. package/dest/bench/client_flows/benchmark.js +40 -1
  26. package/dest/bench/client_flows/client_flows_benchmark.d.ts +26 -20
  27. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  28. package/dest/bench/client_flows/client_flows_benchmark.js +159 -140
  29. package/dest/bench/client_flows/config.d.ts +2 -2
  30. package/dest/bench/client_flows/config.d.ts.map +1 -1
  31. package/dest/bench/client_flows/config.js +18 -0
  32. package/dest/bench/client_flows/data_extractor.d.ts +1 -1
  33. package/dest/bench/client_flows/data_extractor.js +8 -27
  34. package/dest/bench/utils.d.ts +10 -9
  35. package/dest/bench/utils.d.ts.map +1 -1
  36. package/dest/bench/utils.js +126 -23
  37. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  38. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  39. package/dest/composed/ha/ha_full_setup.js +383 -0
  40. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  41. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  42. package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +1 -1
  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 +27 -29
  47. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  48. package/dest/fixtures/e2e_prover_test.js +156 -156
  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 +83 -3
  53. package/dest/fixtures/fixtures.d.ts.map +1 -1
  54. package/dest/fixtures/fixtures.js +86 -3
  55. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  56. package/dest/fixtures/get_acvm_config.js +1 -1
  57. package/dest/fixtures/get_bb_config.d.ts +1 -1
  58. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  59. package/dest/fixtures/get_bb_config.js +5 -5
  60. package/dest/fixtures/ha_setup.d.ts +71 -0
  61. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  62. package/dest/fixtures/ha_setup.js +119 -0
  63. package/dest/fixtures/index.d.ts +3 -1
  64. package/dest/fixtures/index.d.ts.map +1 -1
  65. package/dest/fixtures/index.js +2 -0
  66. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  67. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  68. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  69. package/dest/fixtures/logging.d.ts +1 -1
  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 +60 -41
  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 +26 -5
  83. package/dest/fixtures/token_utils.d.ts.map +1 -1
  84. package/dest/fixtures/token_utils.js +33 -9
  85. package/dest/fixtures/utils.d.ts +5 -192
  86. package/dest/fixtures/utils.d.ts.map +1 -1
  87. package/dest/fixtures/utils.js +4 -648
  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.d.ts +1 -1
  92. package/dest/fixtures/web3signer.js +1 -1
  93. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  94. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  95. package/dest/fixtures/with_telemetry_utils.js +2 -2
  96. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  97. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  98. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  99. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  100. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  101. package/dest/forward-compatibility/wallet_service.js +109 -0
  102. package/dest/index.d.ts +1 -1
  103. package/dest/install_legacy_contracts.d.cts +10 -0
  104. package/dest/install_legacy_contracts.d.cts.map +1 -0
  105. package/dest/legacy-jest-resolver.d.cts +3 -0
  106. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  107. package/dest/multi-node/block-production/setup.d.ts +97 -0
  108. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  109. package/dest/multi-node/block-production/setup.js +158 -0
  110. package/dest/multi-node/governance/setup.d.ts +67 -0
  111. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  112. package/dest/multi-node/governance/setup.js +126 -0
  113. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  114. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  115. package/dest/multi-node/multi_node_test_context.js +347 -0
  116. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  117. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  118. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  119. package/dest/multi-node/slashing/setup.d.ts +167 -0
  120. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  121. package/dest/multi-node/slashing/setup.js +275 -0
  122. package/dest/p2p/p2p_network.d.ts +325 -0
  123. package/dest/p2p/p2p_network.d.ts.map +1 -0
  124. package/dest/p2p/p2p_network.js +389 -0
  125. package/dest/p2p/reqresp/utils.d.ts +19 -0
  126. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  127. package/dest/p2p/reqresp/utils.js +193 -0
  128. package/dest/p2p/shared.d.ts +72 -0
  129. package/dest/p2p/shared.d.ts.map +1 -0
  130. package/dest/p2p/shared.js +212 -0
  131. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  132. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  133. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  134. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  135. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  136. package/dest/quality_of_service/prometheus_client.js +67 -0
  137. package/dest/shared/cross_chain_test_harness.d.ts +11 -8
  138. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  139. package/dest/shared/cross_chain_test_harness.js +45 -40
  140. package/dest/shared/gas_portal_test_harness.d.ts +9 -6
  141. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  142. package/dest/shared/gas_portal_test_harness.js +28 -16
  143. package/dest/shared/index.d.ts +3 -2
  144. package/dest/shared/index.d.ts.map +1 -1
  145. package/dest/shared/index.js +1 -0
  146. package/dest/shared/jest_setup.d.ts +1 -1
  147. package/dest/shared/jest_setup.js +41 -1
  148. package/dest/shared/mock_state_view.d.ts +86 -0
  149. package/dest/shared/mock_state_view.d.ts.map +1 -0
  150. package/dest/shared/mock_state_view.js +186 -0
  151. package/dest/shared/submit-transactions.d.ts +4 -4
  152. package/dest/shared/submit-transactions.d.ts.map +1 -1
  153. package/dest/shared/submit-transactions.js +19 -14
  154. package/dest/shared/timing_env.d.js +5 -0
  155. package/dest/shared/timing_env.js +365 -0
  156. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  157. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  158. package/dest/shared/uniswap_l1_l2.js +86 -54
  159. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  160. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  161. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  162. package/dest/simulators/index.d.ts +1 -1
  163. package/dest/simulators/lending_simulator.d.ts +11 -4
  164. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  165. package/dest/simulators/lending_simulator.js +33 -19
  166. package/dest/simulators/token_simulator.d.ts +1 -1
  167. package/dest/simulators/token_simulator.d.ts.map +1 -1
  168. package/dest/simulators/token_simulator.js +3 -24
  169. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  170. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  171. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  172. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  173. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  174. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  175. package/dest/single-node/fees/bridging_race.notest.d.ts +2 -0
  176. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  177. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +21 -10
  178. package/dest/single-node/fees/fees_test.d.ts +93 -0
  179. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  180. package/dest/single-node/fees/fees_test.js +274 -0
  181. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  182. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  183. package/dest/single-node/l1-reorgs/setup.js +57 -0
  184. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  185. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  186. package/dest/single-node/partial-proofs/setup.js +5 -0
  187. package/dest/single-node/proving/setup.d.ts +5 -0
  188. package/dest/single-node/proving/setup.d.ts.map +1 -0
  189. package/dest/single-node/proving/setup.js +5 -0
  190. package/dest/single-node/recovery/setup.d.ts +5 -0
  191. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  192. package/dest/single-node/recovery/setup.js +5 -0
  193. package/dest/single-node/setup.d.ts +49 -0
  194. package/dest/single-node/setup.d.ts.map +1 -0
  195. package/dest/single-node/setup.js +56 -0
  196. package/dest/single-node/single_node_test_context.d.ts +360 -0
  197. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  198. package/dest/single-node/single_node_test_context.js +833 -0
  199. package/dest/spartan/setup_test_wallets.d.ts +18 -6
  200. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  201. package/dest/spartan/setup_test_wallets.js +169 -30
  202. package/dest/spartan/tx_metrics.d.ts +111 -0
  203. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  204. package/dest/spartan/tx_metrics.js +507 -0
  205. package/dest/spartan/utils/bot.d.ts +28 -0
  206. package/dest/spartan/utils/bot.d.ts.map +1 -0
  207. package/dest/spartan/utils/bot.js +142 -0
  208. package/dest/spartan/utils/chaos.d.ts +79 -0
  209. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  210. package/dest/spartan/utils/chaos.js +142 -0
  211. package/dest/spartan/utils/clients.d.ts +39 -0
  212. package/dest/spartan/utils/clients.d.ts.map +1 -0
  213. package/dest/spartan/utils/clients.js +90 -0
  214. package/dest/spartan/utils/config.d.ts +19 -0
  215. package/dest/spartan/utils/config.d.ts.map +1 -0
  216. package/dest/spartan/utils/config.js +23 -0
  217. package/dest/spartan/utils/health.d.ts +63 -0
  218. package/dest/spartan/utils/health.d.ts.map +1 -0
  219. package/dest/spartan/utils/health.js +202 -0
  220. package/dest/spartan/utils/helm.d.ts +15 -0
  221. package/dest/spartan/utils/helm.d.ts.map +1 -0
  222. package/dest/spartan/utils/helm.js +47 -0
  223. package/dest/spartan/utils/index.d.ts +11 -0
  224. package/dest/spartan/utils/index.d.ts.map +1 -0
  225. package/dest/spartan/utils/index.js +22 -0
  226. package/dest/spartan/utils/k8s.d.ts +128 -0
  227. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  228. package/dest/spartan/utils/k8s.js +381 -0
  229. package/dest/spartan/utils/nodes.d.ts +40 -0
  230. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  231. package/dest/spartan/utils/nodes.js +461 -0
  232. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  233. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  234. package/dest/spartan/utils/pod_logs.js +74 -0
  235. package/dest/spartan/utils/scripts.d.ts +30 -0
  236. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  237. package/dest/spartan/utils/scripts.js +81 -0
  238. package/dest/spartan/utils.d.ts +2 -218
  239. package/dest/spartan/utils.d.ts.map +1 -1
  240. package/dest/spartan/utils.js +1 -749
  241. package/dest/test-wallet/test_wallet.d.ts +105 -0
  242. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  243. package/dest/test-wallet/test_wallet.js +323 -0
  244. package/dest/test-wallet/utils.d.ts +76 -0
  245. package/dest/test-wallet/utils.d.ts.map +1 -0
  246. package/dest/test-wallet/utils.js +126 -0
  247. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  248. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  249. package/dest/test-wallet/wallet_worker_script.js +56 -0
  250. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  251. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  252. package/dest/test-wallet/worker_wallet.js +155 -0
  253. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  254. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  255. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  256. package/package.json +57 -47
  257. package/src/automine/README.md +60 -0
  258. package/src/automine/automine_test_context.ts +153 -0
  259. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  260. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  261. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  262. package/src/automine/delivery/onchain_delivery_harness.ts +177 -0
  263. package/src/automine/token/blacklist_token_contract_test.ts +208 -0
  264. package/src/automine/token/token_contract_test.ts +146 -0
  265. package/src/automine/token/token_test_helpers.ts +138 -0
  266. package/src/bench/client_flows/benchmark.ts +45 -2
  267. package/src/bench/client_flows/client_flows_benchmark.ts +227 -211
  268. package/src/bench/client_flows/config.ts +9 -1
  269. package/src/bench/client_flows/data_extractor.ts +7 -28
  270. package/src/bench/utils.ts +144 -25
  271. package/src/composed/ha/ha_full_setup.ts +466 -0
  272. package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +1 -1
  273. package/src/fixtures/authwit_proxy.ts +54 -0
  274. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  275. package/src/fixtures/e2e_prover_test.ts +175 -214
  276. package/src/fixtures/elu_monitor.ts +126 -0
  277. package/src/fixtures/fixtures.ts +110 -5
  278. package/src/fixtures/get_acvm_config.ts +1 -1
  279. package/src/fixtures/get_bb_config.ts +7 -6
  280. package/src/fixtures/ha_setup.ts +192 -0
  281. package/src/fixtures/index.ts +2 -0
  282. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  283. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  284. package/src/fixtures/setup.ts +987 -0
  285. package/src/fixtures/setup_p2p_test.ts +72 -58
  286. package/src/fixtures/timing.ts +97 -0
  287. package/src/fixtures/token_utils.ts +47 -11
  288. package/src/fixtures/utils.ts +26 -947
  289. package/src/fixtures/wait_helpers.ts +333 -0
  290. package/src/fixtures/web3signer.ts +1 -1
  291. package/src/fixtures/with_telemetry_utils.ts +2 -2
  292. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  293. package/src/forward-compatibility/wallet_service.ts +106 -0
  294. package/src/guides/up_quick_start.sh +8 -5
  295. package/src/infra/README.md +12 -0
  296. package/src/install_legacy_contracts.cjs +75 -0
  297. package/src/legacy-jest-resolver.cjs +112 -0
  298. package/src/multi-node/README.md +95 -0
  299. package/src/multi-node/block-production/setup.ts +272 -0
  300. package/src/multi-node/governance/setup.ts +172 -0
  301. package/src/multi-node/multi_node_test_context.ts +447 -0
  302. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  303. package/src/multi-node/slashing/setup.ts +433 -0
  304. package/src/p2p/README.md +78 -0
  305. package/src/p2p/p2p_network.ts +542 -0
  306. package/src/p2p/reqresp/utils.ts +263 -0
  307. package/src/p2p/shared.ts +329 -0
  308. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  309. package/src/quality_of_service/prometheus_client.ts +113 -0
  310. package/src/shared/cross_chain_test_harness.ts +51 -43
  311. package/src/shared/gas_portal_test_harness.ts +36 -18
  312. package/src/shared/index.ts +2 -1
  313. package/src/shared/jest_setup.ts +51 -1
  314. package/src/shared/mock_state_view.ts +188 -0
  315. package/src/shared/submit-transactions.ts +22 -19
  316. package/src/shared/timing_env.d.mts +39 -0
  317. package/src/shared/timing_env.mjs +363 -0
  318. package/src/shared/uniswap_l1_l2.ts +136 -115
  319. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  320. package/src/simulators/lending_simulator.ts +40 -20
  321. package/src/simulators/token_simulator.ts +6 -30
  322. package/src/single-node/README.md +60 -0
  323. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  324. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  325. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +23 -15
  326. package/src/single-node/fees/fees_test.ts +368 -0
  327. package/src/single-node/l1-reorgs/setup.ts +93 -0
  328. package/src/single-node/partial-proofs/setup.ts +8 -0
  329. package/src/single-node/proving/setup.ts +15 -0
  330. package/src/single-node/recovery/setup.ts +8 -0
  331. package/src/single-node/setup.ts +63 -0
  332. package/src/single-node/single_node_test_context.ts +1041 -0
  333. package/src/spartan/DEVELOP.md +7 -0
  334. package/src/spartan/setup_test_wallets.ts +243 -32
  335. package/src/spartan/tx_metrics.ts +460 -0
  336. package/src/spartan/utils/bot.ts +188 -0
  337. package/src/spartan/utils/chaos.ts +253 -0
  338. package/src/spartan/utils/clients.ts +100 -0
  339. package/src/spartan/utils/config.ts +29 -0
  340. package/src/spartan/utils/health.ts +255 -0
  341. package/src/spartan/utils/helm.ts +84 -0
  342. package/src/spartan/utils/index.ts +71 -0
  343. package/src/spartan/utils/k8s.ts +535 -0
  344. package/src/spartan/utils/nodes.ts +543 -0
  345. package/src/spartan/utils/pod_logs.ts +99 -0
  346. package/src/spartan/utils/scripts.ts +99 -0
  347. package/src/spartan/utils.ts +1 -942
  348. package/src/test-wallet/test_wallet.ts +429 -0
  349. package/src/test-wallet/utils.ts +205 -0
  350. package/src/test-wallet/wallet_worker_script.ts +66 -0
  351. package/src/test-wallet/worker_wallet.ts +214 -0
  352. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  353. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -54
  354. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  355. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +0 -185
  356. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -41
  357. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  358. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -107
  359. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
  360. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  361. package/dest/e2e_deploy_contract/deploy_test.js +0 -45
  362. package/dest/e2e_epochs/epochs_test.d.ts +0 -92
  363. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  364. package/dest/e2e_epochs/epochs_test.js +0 -336
  365. package/dest/e2e_fees/bridging_race.notest.d.ts +0 -2
  366. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  367. package/dest/e2e_fees/fees_test.d.ts +0 -84
  368. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  369. package/dest/e2e_fees/fees_test.js +0 -260
  370. package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
  371. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  372. package/dest/e2e_l1_publisher/write_json.js +0 -57
  373. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  374. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  375. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -29
  376. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  377. package/dest/e2e_nested_contract/nested_contract_test.js +0 -63
  378. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  379. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  380. package/dest/e2e_p2p/inactivity_slash_test.js +0 -135
  381. package/dest/e2e_p2p/p2p_network.d.ts +0 -108
  382. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  383. package/dest/e2e_p2p/p2p_network.js +0 -318
  384. package/dest/e2e_p2p/shared.d.ts +0 -46
  385. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  386. package/dest/e2e_p2p/shared.js +0 -183
  387. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -35
  388. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  389. package/dest/e2e_token_contract/token_contract_test.js +0 -126
  390. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  391. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  392. package/dest/fixtures/setup_l1_contracts.js +0 -17
  393. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  394. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  395. package/dest/fixtures/snapshot_manager.js +0 -505
  396. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  397. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  398. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +0 -256
  399. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -178
  400. package/src/e2e_deploy_contract/deploy_test.ts +0 -78
  401. package/src/e2e_epochs/epochs_test.ts +0 -437
  402. package/src/e2e_fees/fees_test.ts +0 -378
  403. package/src/e2e_l1_publisher/write_json.ts +0 -76
  404. package/src/e2e_nested_contract/nested_contract_test.ts +0 -95
  405. package/src/e2e_p2p/inactivity_slash_test.ts +0 -178
  406. package/src/e2e_p2p/p2p_network.ts +0 -472
  407. package/src/e2e_p2p/shared.ts +0 -282
  408. package/src/e2e_token_contract/token_contract_test.ts +0 -167
  409. package/src/fixtures/setup_l1_contracts.ts +0 -26
  410. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -1,107 +0,0 @@
1
- import { EthAddress } from '@aztec/aztec.js/addresses';
2
- import { createLogger } from '@aztec/aztec.js/log';
3
- import { createExtendedL1Client, deployL1Contract } from '@aztec/ethereum';
4
- import { InboxAbi, OutboxAbi, TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
5
- import { TokenContract } from '@aztec/noir-contracts.js/Token';
6
- import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
7
- import { getContract } from 'viem';
8
- import { MNEMONIC } from '../fixtures/fixtures.js';
9
- import { createSnapshotManager, deployAccounts, publicDeployAccounts } from '../fixtures/snapshot_manager.js';
10
- import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
11
- const { E2E_DATA_PATH: dataPath } = process.env;
12
- export class CrossChainMessagingTest {
13
- snapshotManager;
14
- logger;
15
- aztecNode;
16
- aztecNodeConfig;
17
- aztecNodeAdmin;
18
- ctx;
19
- l1Client;
20
- wallet;
21
- ownerAddress;
22
- user1Address;
23
- user2Address;
24
- crossChainTestHarness;
25
- ethAccount;
26
- l2Token;
27
- l2Bridge;
28
- inbox;
29
- outbox;
30
- cheatCodes;
31
- deployL1ContractsValues;
32
- constructor(testName, opts = {}, deployL1ContractsArgs = {}){
33
- this.logger = createLogger(`e2e:e2e_cross_chain_messaging:${testName}`);
34
- this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath, opts, {
35
- initialValidators: [],
36
- ...deployL1ContractsArgs
37
- });
38
- }
39
- async assumeProven() {
40
- await this.cheatCodes.rollup.markAsProven();
41
- }
42
- async setup() {
43
- this.ctx = await this.snapshotManager.setup();
44
- this.aztecNode = this.ctx.aztecNode;
45
- this.wallet = this.ctx.wallet;
46
- this.aztecNodeConfig = this.ctx.aztecNodeConfig;
47
- this.cheatCodes = this.ctx.cheatCodes;
48
- this.deployL1ContractsValues = this.ctx.deployL1ContractsValues;
49
- this.aztecNodeAdmin = this.ctx.aztecNode;
50
- }
51
- snapshot = (name, apply, restore = ()=>Promise.resolve())=>this.snapshotManager.snapshot(name, apply, restore);
52
- async teardown() {
53
- await this.snapshotManager.teardown();
54
- }
55
- async applyBaseSnapshots() {
56
- // Note that we are using the same `wallet`, `aztecNodeConfig` and `aztecNode` across all snapshots.
57
- // This is to not have issues with different networks.
58
- await this.snapshotManager.snapshot('3_accounts', deployAccounts(3, this.logger), ({ deployedAccounts }, { wallet, aztecNodeConfig, aztecNode })=>{
59
- [this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map((a)=>a.address);
60
- this.wallet = wallet;
61
- this.aztecNode = aztecNode;
62
- this.aztecNodeConfig = aztecNodeConfig;
63
- return Promise.resolve();
64
- });
65
- await this.snapshotManager.snapshot('e2e_cross_chain_messaging', async ()=>{
66
- // Create the token contract state.
67
- // Move this account thing to addAccounts above?
68
- this.logger.verbose(`Public deploy accounts...`);
69
- await publicDeployAccounts(this.wallet, [
70
- this.ownerAddress,
71
- this.user1Address,
72
- this.user2Address
73
- ]);
74
- this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
75
- const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
76
- 'Underlying',
77
- 'UND',
78
- this.l1Client.account.address
79
- ]).then(({ address })=>address);
80
- this.logger.verbose(`Setting up cross chain harness...`);
81
- this.crossChainTestHarness = await CrossChainTestHarness.new(this.aztecNode, this.l1Client, this.wallet, this.ownerAddress, this.logger, underlyingERC20Address);
82
- this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
83
- return this.crossChainTestHarness.toCrossChainContext();
84
- }, async (crossChainContext)=>{
85
- this.l2Token = await TokenContract.at(crossChainContext.l2Token, this.wallet);
86
- this.l2Bridge = await TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
87
- // There is an issue with the reviver so we are getting strings sometimes. Working around it here.
88
- this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
89
- const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
90
- const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
91
- const inbox = getContract({
92
- address: this.aztecNodeConfig.l1Contracts.inboxAddress.toString(),
93
- abi: InboxAbi,
94
- client: l1Client
95
- });
96
- const outbox = getContract({
97
- address: this.aztecNodeConfig.l1Contracts.outboxAddress.toString(),
98
- abi: OutboxAbi,
99
- client: l1Client
100
- });
101
- this.crossChainTestHarness = new CrossChainTestHarness(this.aztecNode, this.logger, this.l2Token, this.l2Bridge, this.ethAccount, tokenPortalAddress, crossChainContext.underlying, l1Client, this.aztecNodeConfig.l1Contracts, this.wallet, this.ownerAddress);
102
- this.l1Client = l1Client;
103
- this.inbox = inbox;
104
- this.outbox = outbox;
105
- });
106
- }
107
- }
@@ -1,36 +0,0 @@
1
- import type { ContractArtifact } from '@aztec/aztec.js/abi';
2
- import type { AztecAddress } from '@aztec/aztec.js/addresses';
3
- import { type ContractBase } from '@aztec/aztec.js/contracts';
4
- import { Fr } from '@aztec/aztec.js/fields';
5
- import type { PublicKeys } from '@aztec/aztec.js/keys';
6
- import { type Logger } from '@aztec/aztec.js/log';
7
- import type { AztecNode } from '@aztec/aztec.js/node';
8
- import type { Wallet } from '@aztec/aztec.js/wallet';
9
- import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
10
- import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
11
- import type { TestWallet } from '@aztec/test-wallet/server';
12
- export declare class DeployTest {
13
- private snapshotManager;
14
- logger: Logger;
15
- wallet: TestWallet;
16
- defaultAccountAddress: AztecAddress;
17
- aztecNode: AztecNode;
18
- aztecNodeAdmin: AztecNodeAdmin;
19
- constructor(testName: string);
20
- setup(): Promise<this>;
21
- teardown(): Promise<void>;
22
- private applyInitialAccountSnapshot;
23
- registerContract<T extends ContractBase>(wallet: Wallet, contractArtifact: ContractArtifactClass<T>, opts?: {
24
- salt?: Fr;
25
- publicKeys?: PublicKeys;
26
- initArgs?: any[];
27
- constructorName?: string;
28
- deployer?: AztecAddress;
29
- }): Promise<T>;
30
- }
31
- export type StatefulContractCtorArgs = Parameters<StatefulTestContract['methods']['constructor']>;
32
- export type ContractArtifactClass<T extends ContractBase> = {
33
- at(address: AztecAddress, wallet: Wallet): Promise<T>;
34
- artifact: ContractArtifact;
35
- };
36
- //# sourceMappingURL=deploy_test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy_test.d.ts","sourceRoot":"","sources":["../../src/e2e_deploy_contract/deploy_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8C,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAM5D,qBAAa,UAAU;IACrB,OAAO,CAAC,eAAe,CAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;gBAE3B,QAAQ,EAAE,MAAM;IAKtB,KAAK;IAQL,QAAQ;YAIA,2BAA2B;IAOnC,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAC3C,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC1C,IAAI,GAAE;QACJ,IAAI,CAAC,EAAE,EAAE,CAAC;QACV,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACpB,GACL,OAAO,CAAC,CAAC,CAAC;CAYd;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,YAAY,IAAI;IAC1D,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC"}
@@ -1,45 +0,0 @@
1
- import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
2
- import { Fr } from '@aztec/aztec.js/fields';
3
- import { createLogger } from '@aztec/aztec.js/log';
4
- import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
5
- const { E2E_DATA_PATH: dataPath } = process.env;
6
- export class DeployTest {
7
- snapshotManager;
8
- logger;
9
- wallet;
10
- defaultAccountAddress;
11
- aztecNode;
12
- aztecNodeAdmin;
13
- constructor(testName){
14
- this.logger = createLogger(`e2e:e2e_deploy_contract:${testName}`);
15
- this.snapshotManager = createSnapshotManager(`e2e_deploy_contract/${testName}`, dataPath);
16
- }
17
- async setup() {
18
- await this.applyInitialAccountSnapshot();
19
- const context = await this.snapshotManager.setup();
20
- ({ aztecNode: this.aztecNode, wallet: this.wallet } = context);
21
- this.aztecNodeAdmin = context.aztecNode;
22
- return this;
23
- }
24
- async teardown() {
25
- await this.snapshotManager.teardown();
26
- }
27
- async applyInitialAccountSnapshot() {
28
- await this.snapshotManager.snapshot('initial_account', deployAccounts(1, this.logger), ({ deployedAccounts })=>{
29
- this.defaultAccountAddress = deployedAccounts[0].address;
30
- return Promise.resolve();
31
- });
32
- }
33
- async registerContract(wallet, contractArtifact, opts = {}) {
34
- const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
35
- const instance = await getContractInstanceFromInstantiationParams(contractArtifact.artifact, {
36
- constructorArgs: initArgs ?? [],
37
- constructorArtifact: constructorName,
38
- salt: salt ?? Fr.random(),
39
- publicKeys,
40
- deployer
41
- });
42
- await wallet.registerContract(instance, contractArtifact.artifact);
43
- return contractArtifact.at(instance.address, wallet);
44
- }
45
- }
@@ -1,92 +0,0 @@
1
- import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
2
- import { Fr } from '@aztec/aztec.js/fields';
3
- import type { Logger } from '@aztec/aztec.js/log';
4
- import type { Wallet } from '@aztec/aztec.js/wallet';
5
- import { EpochCache } from '@aztec/epoch-cache';
6
- import { type ExtendedViemWalletClient } from '@aztec/ethereum';
7
- import { RollupContract } from '@aztec/ethereum/contracts';
8
- import { ChainMonitor, type Delayer } from '@aztec/ethereum/test';
9
- import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
10
- import { ProverNode, type ProverNodeConfig } from '@aztec/prover-node';
11
- import { type SequencerClient, type SequencerEvents } from '@aztec/sequencer-client';
12
- import { EthAddress, type L2BlockNumber } from '@aztec/stdlib/block';
13
- import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
14
- import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
15
- export declare const WORLD_STATE_BLOCK_HISTORY = 2;
16
- export declare const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
17
- export declare const ARCHIVER_POLL_INTERVAL = 50;
18
- export declare const DEFAULT_L1_BLOCK_TIME: number;
19
- export type EpochsTestOpts = Partial<SetupOptions> & {
20
- numberOfAccounts?: number;
21
- };
22
- export type TrackedSequencerEvent = {
23
- [K in keyof SequencerEvents]: Parameters<SequencerEvents[K]>[0] & {
24
- type: K;
25
- sequencerIndex: number;
26
- validator: EthAddress;
27
- };
28
- }[keyof SequencerEvents];
29
- /**
30
- * Tests building of epochs using fast block times and short epochs.
31
- * Spawns an aztec node and a prover node with fake proofs.
32
- * Sequencer is allowed to build empty blocks.
33
- */
34
- export declare class EpochsTestContext {
35
- context: EndToEndContext;
36
- l1Client: ExtendedViemWalletClient;
37
- rollup: RollupContract;
38
- constants: L1RollupConstants;
39
- logger: Logger;
40
- monitor: ChainMonitor;
41
- epochCache: EpochCache;
42
- proverDelayer: Delayer;
43
- sequencerDelayer: Delayer;
44
- proverNodes: ProverNode[];
45
- nodes: AztecNodeService[];
46
- epochDuration: number;
47
- L1_BLOCK_TIME_IN_S: number;
48
- L2_SLOT_DURATION_IN_S: number;
49
- static setup(opts?: EpochsTestOpts): Promise<EpochsTestContext>;
50
- static getSlotDurations(opts?: EpochsTestOpts): {
51
- ethereumSlotDuration: number;
52
- aztecSlotDuration: number;
53
- aztecEpochDuration: number;
54
- aztecProofSubmissionEpochs: number;
55
- };
56
- setup(opts?: EpochsTestOpts): Promise<void>;
57
- teardown(): Promise<void>;
58
- createProverNode(opts?: {
59
- dontStart?: boolean;
60
- } & Partial<ProverNodeConfig>): Promise<ProverNode>;
61
- createNonValidatorNode(opts?: Partial<AztecNodeConfig>): Promise<AztecNodeService>;
62
- createValidatorNode(privateKeys: `0x${string}`[], opts?: Partial<AztecNodeConfig> & {
63
- txDelayerMaxInclusionTimeIntoSlot?: number;
64
- dontStartSequencer?: boolean;
65
- }): Promise<AztecNodeService>;
66
- private createNode;
67
- private getNextPrivateKey;
68
- /** Waits until the epoch begins (ie until the immediately previous L1 block is mined). */
69
- waitUntilEpochStarts(epoch: number): Promise<bigint>;
70
- /** Waits until the given L2 block number is mined. */
71
- waitUntilL2BlockNumber(target: number, timeout?: number): Promise<void>;
72
- /** Waits until the given L2 block number is marked as proven. */
73
- waitUntilProvenL2BlockNumber(t: number, timeout?: number): Promise<number>;
74
- /** Waits until the last slot of the proof submission window for a given epoch. */
75
- waitUntilLastSlotOfProofSubmissionWindow(epochNumber: number | bigint): Promise<void>;
76
- /** Waits for the aztec node to sync to the target block number. */
77
- waitForNodeToSync(blockNumber: number, type: 'proven' | 'finalized' | 'historic'): Promise<void>;
78
- /** Registers the SpamContract on the given wallet. */
79
- registerSpamContract(wallet: Wallet, salt?: Fr): Promise<SpamContract>;
80
- /** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */
81
- createL1Client(): Promise<{
82
- client: ExtendedViemWalletClient;
83
- delayer: Delayer;
84
- }>;
85
- /** Verifies whether the given block number is found on the aztec node. */
86
- verifyHistoricBlock(blockNumber: L2BlockNumber, expectedSuccess: boolean): Promise<void>;
87
- watchSequencerEvents(sequencers: SequencerClient[], getMetadata?: (i: number) => Record<string, any>): {
88
- failEvents: TrackedSequencerEvent[];
89
- stateChanges: TrackedSequencerEvent[];
90
- };
91
- }
92
- //# sourceMappingURL=epochs_test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"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"}
@@ -1,336 +0,0 @@
1
- import { AztecNodeService } from '@aztec/aztec-node';
2
- import { getTimestampRangeForEpoch } from '@aztec/aztec.js/block';
3
- import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
4
- import { Fr } from '@aztec/aztec.js/fields';
5
- import { MerkleTreeId } from '@aztec/aztec.js/trees';
6
- import { EpochCache } from '@aztec/epoch-cache';
7
- import { DefaultL1ContractsConfig, createExtendedL1Client } from '@aztec/ethereum';
8
- import { RollupContract } from '@aztec/ethereum/contracts';
9
- import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
10
- import { SecretValue } from '@aztec/foundation/config';
11
- import { randomBytes } from '@aztec/foundation/crypto';
12
- import { withLogNameSuffix } from '@aztec/foundation/log';
13
- import { retryUntil } from '@aztec/foundation/retry';
14
- import { sleep } from '@aztec/foundation/sleep';
15
- import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
16
- import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
17
- import { SequencerState } from '@aztec/sequencer-client';
18
- import { EthAddress } from '@aztec/stdlib/block';
19
- import { getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers';
20
- import { tryStop } from '@aztec/stdlib/interfaces/server';
21
- import { join } from 'path';
22
- import { privateKeyToAccount } from 'viem/accounts';
23
- import { createAndSyncProverNode, getPrivateKeyFromIndex, setup } from '../fixtures/utils.js';
24
- export const WORLD_STATE_BLOCK_HISTORY = 2;
25
- export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
26
- export const ARCHIVER_POLL_INTERVAL = 50;
27
- export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
28
- /**
29
- * Tests building of epochs using fast block times and short epochs.
30
- * Spawns an aztec node and a prover node with fake proofs.
31
- * Sequencer is allowed to build empty blocks.
32
- */ export class EpochsTestContext {
33
- context;
34
- l1Client;
35
- rollup;
36
- constants;
37
- logger;
38
- monitor;
39
- epochCache;
40
- proverDelayer;
41
- sequencerDelayer;
42
- proverNodes = [];
43
- nodes = [];
44
- epochDuration;
45
- L1_BLOCK_TIME_IN_S;
46
- L2_SLOT_DURATION_IN_S;
47
- static async setup(opts = {}) {
48
- const test = new EpochsTestContext();
49
- await test.setup(opts);
50
- return test;
51
- }
52
- static getSlotDurations(opts = {}) {
53
- const envEthereumSlotDuration = process.env.L1_BLOCK_TIME ? parseInt(process.env.L1_BLOCK_TIME) : DEFAULT_L1_BLOCK_TIME;
54
- const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
55
- const aztecSlotDuration = opts.aztecSlotDuration ?? ethereumSlotDuration * 2;
56
- const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
57
- const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
58
- return {
59
- ethereumSlotDuration,
60
- aztecSlotDuration,
61
- aztecEpochDuration,
62
- aztecProofSubmissionEpochs
63
- };
64
- }
65
- async setup(opts = {}) {
66
- const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs } = EpochsTestContext.getSlotDurations(opts);
67
- this.L1_BLOCK_TIME_IN_S = ethereumSlotDuration;
68
- this.L2_SLOT_DURATION_IN_S = aztecSlotDuration;
69
- // Set up system without any account nor protocol contracts
70
- // and with faster block times and shorter epochs.
71
- const context = await setup(opts.numberOfAccounts ?? 0, {
72
- automineL1Setup: true,
73
- checkIntervalMs: 50,
74
- archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
75
- worldStateBlockCheckIntervalMS: WORLD_STATE_BLOCK_CHECK_INTERVAL,
76
- skipProtocolContracts: true,
77
- salt: 1,
78
- aztecEpochDuration,
79
- aztecSlotDuration,
80
- ethereumSlotDuration,
81
- aztecProofSubmissionEpochs,
82
- aztecTargetCommitteeSize: opts.initialValidators?.length ?? 0,
83
- minTxsPerBlock: 0,
84
- realProofs: false,
85
- startProverNode: true,
86
- proverTestDelayMs: opts.proverTestDelayMs ?? 0,
87
- // We use numeric incremental prover ids for simplicity, but we can switch to
88
- // using the prover's eth address if the proverId is used for something in the rollup contract
89
- // Use numeric EthAddress for deterministic prover id
90
- proverId: EthAddress.fromNumber(1),
91
- worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
92
- exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
93
- slasherFlavor: 'none',
94
- ...opts
95
- });
96
- this.context = context;
97
- this.proverNodes = context.proverNode ? [
98
- context.proverNode
99
- ] : [];
100
- this.nodes = context.aztecNode ? [
101
- context.aztecNode
102
- ] : [];
103
- this.logger = context.logger;
104
- this.l1Client = context.deployL1ContractsValues.l1Client;
105
- this.rollup = RollupContract.getFromConfig(context.config);
106
- this.epochCache = await EpochCache.create(this.rollup, context.config, {
107
- dateProvider: context.dateProvider
108
- });
109
- // Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
110
- this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
111
- // This is hideous.
112
- // We ought to have a definite reference to the l1TxUtils that we're using in both places, provided by the test context.
113
- this.proverDelayer = context.proverNode ? context.proverNode.publisher.l1TxUtils.delayer : undefined;
114
- this.sequencerDelayer = context.sequencer ? context.sequencer.sequencer.publisher.l1TxUtils.delayer : undefined;
115
- if (context.proverNode && !this.proverDelayer || context.sequencer && !this.sequencerDelayer) {
116
- throw new Error(`Could not find prover or sequencer delayer`);
117
- }
118
- // Constants used for time calculation
119
- this.epochDuration = aztecEpochDuration;
120
- this.constants = {
121
- epochDuration: aztecEpochDuration,
122
- slotDuration: aztecSlotDuration,
123
- l1StartBlock: await this.rollup.getL1StartBlock(),
124
- l1GenesisTime: await this.rollup.getL1GenesisTime(),
125
- ethereumSlotDuration,
126
- proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs())
127
- };
128
- this.logger.info(`L2 genesis at L1 block ${this.constants.l1StartBlock} (timestamp ${this.constants.l1GenesisTime})`);
129
- }
130
- async teardown() {
131
- await this.monitor.stop();
132
- await Promise.all(this.proverNodes.map((node)=>tryStop(node, this.logger)));
133
- await Promise.all(this.nodes.map((node)=>tryStop(node, this.logger)));
134
- await this.context.teardown();
135
- }
136
- async createProverNode(opts = {}) {
137
- this.logger.warn('Creating and syncing a simulated prover node...');
138
- const proverNodePrivateKey = this.getNextPrivateKey();
139
- const suffix = (this.proverNodes.length + 1).toString();
140
- const proverNode = await withLogNameSuffix(suffix, ()=>createAndSyncProverNode(proverNodePrivateKey, {
141
- ...this.context.config
142
- }, {
143
- dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
144
- proverId: EthAddress.fromNumber(parseInt(suffix, 10)),
145
- dontStart: opts.dontStart,
146
- ...opts
147
- }, this.context.aztecNode, undefined, {
148
- dateProvider: this.context.dateProvider
149
- }));
150
- this.proverNodes.push(proverNode);
151
- return proverNode;
152
- }
153
- createNonValidatorNode(opts = {}) {
154
- this.logger.warn('Creating and syncing a node without a validator...');
155
- return this.createNode({
156
- ...opts,
157
- disableValidator: true
158
- });
159
- }
160
- createValidatorNode(privateKeys, opts = {}) {
161
- this.logger.warn('Creating and syncing a validator node...');
162
- return this.createNode({
163
- ...opts,
164
- disableValidator: false,
165
- validatorPrivateKeys: new SecretValue(privateKeys)
166
- });
167
- }
168
- async createNode(opts = {}) {
169
- const suffix = (this.nodes.length + 1).toString();
170
- const { mockGossipSubNetwork } = this.context;
171
- const resolvedConfig = {
172
- ...this.context.config,
173
- ...opts
174
- };
175
- const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
176
- const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
177
- const node = await withLogNameSuffix(suffix, ()=>AztecNodeService.createAndSync({
178
- ...resolvedConfig,
179
- dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
180
- validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
181
- p2pEnabled,
182
- p2pIp
183
- }, {
184
- dateProvider: this.context.dateProvider,
185
- p2pClientDeps: {
186
- p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined
187
- }
188
- }, {
189
- prefilledPublicData: this.context.prefilledPublicData,
190
- ...opts
191
- }));
192
- // REFACTOR: We're getting too much into the internals of the sequencer here.
193
- // We should have a single method for constructing an aztec node that returns a TestAztecNodeService
194
- // which directly exposes the delayer and sets any test config.
195
- if (opts.txDelayerMaxInclusionTimeIntoSlot !== undefined) {
196
- this.logger.info(`Setting tx delayer max inclusion time into slot to ${opts.txDelayerMaxInclusionTimeIntoSlot} seconds`);
197
- // Here we reach into the sequencer and hook in a tx delayer. The problem is that the sequencer's l1 utils only uses a public client, not a wallet.
198
- // The delayer needs a wallet (a client that can sign), so we have to create one here.
199
- const l1Client = createExtendedL1Client(resolvedConfig.l1RpcUrls, resolvedConfig.publisherPrivateKeys[0].getValue());
200
- const sequencer = node.getSequencer();
201
- const publisher = sequencer.sequencer.publisher;
202
- const delayed = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, this.L1_BLOCK_TIME_IN_S, l1Client);
203
- delayed.delayer.setMaxInclusionTimeIntoSlot(opts.txDelayerMaxInclusionTimeIntoSlot);
204
- publisher.l1TxUtils = delayed;
205
- }
206
- this.nodes.push(node);
207
- return node;
208
- }
209
- getNextPrivateKey() {
210
- const key = getPrivateKeyFromIndex(this.nodes.length + this.proverNodes.length + 1);
211
- return `0x${key.toString('hex')}`;
212
- }
213
- /** Waits until the epoch begins (ie until the immediately previous L1 block is mined). */ async waitUntilEpochStarts(epoch) {
214
- const [start] = getTimestampRangeForEpoch(BigInt(epoch), this.constants);
215
- this.logger.info(`Waiting until L1 timestamp ${start} is reached as the start of epoch ${epoch}`);
216
- await waitUntilL1Timestamp(this.l1Client, start - BigInt(this.L1_BLOCK_TIME_IN_S), undefined, 30 * this.epochDuration);
217
- return start;
218
- }
219
- /** Waits until the given L2 block number is mined. */ async waitUntilL2BlockNumber(target, timeout = 60) {
220
- await retryUntil(()=>Promise.resolve(target <= this.monitor.l2BlockNumber), `Wait until L2 block ${target}`, timeout, 0.1);
221
- }
222
- /** Waits until the given L2 block number is marked as proven. */ async waitUntilProvenL2BlockNumber(t, timeout = 60) {
223
- await retryUntil(()=>Promise.resolve(t <= this.monitor.l2ProvenBlockNumber), `Wait proven L2 block ${t}`, timeout, 0.1);
224
- return this.monitor.l2ProvenBlockNumber;
225
- }
226
- /** Waits until the last slot of the proof submission window for a given epoch. */ async waitUntilLastSlotOfProofSubmissionWindow(epochNumber) {
227
- const deadline = getProofSubmissionDeadlineTimestamp(BigInt(epochNumber), this.constants);
228
- const oneSlotBefore = deadline - BigInt(this.constants.slotDuration);
229
- const date = new Date(Number(oneSlotBefore) * 1000);
230
- this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
231
- oneSlotBefore
232
- });
233
- await waitUntilL1Timestamp(this.l1Client, oneSlotBefore);
234
- }
235
- /** Waits for the aztec node to sync to the target block number. */ async waitForNodeToSync(blockNumber, type) {
236
- const waitTime = ARCHIVER_POLL_INTERVAL + WORLD_STATE_BLOCK_CHECK_INTERVAL;
237
- let synched = false;
238
- while(!synched){
239
- await sleep(waitTime);
240
- const [syncState, tips] = await Promise.all([
241
- this.context.aztecNode.getWorldStateSyncStatus(),
242
- await this.context.aztecNode.getL2Tips()
243
- ]);
244
- this.logger.info(`Wait for node synch ${blockNumber} ${type}`, {
245
- blockNumber,
246
- type,
247
- syncState,
248
- tips
249
- });
250
- if (type === 'proven') {
251
- synched = tips.proven.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
252
- } else if (type === 'finalized') {
253
- synched = syncState.finalizedBlockNumber >= blockNumber;
254
- } else {
255
- synched = syncState.oldestHistoricBlockNumber >= blockNumber;
256
- }
257
- }
258
- }
259
- /** Registers the SpamContract on the given wallet. */ async registerSpamContract(wallet, salt = Fr.ZERO) {
260
- const instance = await getContractInstanceFromInstantiationParams(SpamContract.artifact, {
261
- constructorArgs: [],
262
- constructorArtifact: undefined,
263
- salt,
264
- publicKeys: undefined,
265
- deployer: undefined
266
- });
267
- await wallet.registerContract(instance, SpamContract.artifact);
268
- return SpamContract.at(instance.address, wallet);
269
- }
270
- /** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
271
- const { client, delayer } = withDelayer(createExtendedL1Client([
272
- ...this.l1Client.chain.rpcUrls.default.http
273
- ], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain), this.context.dateProvider, {
274
- ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S
275
- });
276
- expect(await client.getBalance({
277
- address: client.account.address
278
- })).toBeGreaterThan(0n);
279
- return {
280
- client,
281
- delayer
282
- };
283
- }
284
- /** Verifies whether the given block number is found on the aztec node. */ async verifyHistoricBlock(blockNumber, expectedSuccess) {
285
- // We use `findLeavesIndexes` here, but could use any function that queries the world-state
286
- // at a particular block, so we know whether that historic block is available or has been
287
- // pruned. Note that `getBlock` would not work here, since it only hits the archiver.
288
- const result = await this.context.aztecNode.findLeavesIndexes(blockNumber, MerkleTreeId.NULLIFIER_TREE, [
289
- Fr.ZERO
290
- ]).then((_)=>true).catch((_)=>false);
291
- expect(result).toBe(expectedSuccess);
292
- }
293
- watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
294
- const stateChanges = [];
295
- const failEvents = [];
296
- // Note we do not include the 'tx-count-check-failed' event here, since it is fine if we dont build
297
- // due to lack of txs available.
298
- const failEventsKeys = [
299
- 'block-build-failed',
300
- 'block-publish-failed',
301
- 'proposer-rollup-check-failed'
302
- ];
303
- const makeEvent = (i, eventName, args)=>({
304
- ...args,
305
- type: eventName,
306
- sequencerIndex: i + 2,
307
- ...getMetadata(i)
308
- });
309
- sequencers.forEach((sequencer, i)=>{
310
- const sequencerIndex = i + 2;
311
- sequencer.getSequencer().on('state-changed', (args)=>{
312
- const noisyStates = [
313
- SequencerState.IDLE,
314
- SequencerState.PROPOSER_CHECK,
315
- SequencerState.SYNCHRONIZING
316
- ];
317
- if (!noisyStates.includes(args.newState)) {
318
- const evt = makeEvent(i, 'state-changed', args);
319
- stateChanges.push(evt);
320
- this.logger.verbose(`Sequencer ${sequencerIndex} transitioned from state ${args.oldState} to state ${args.newState}`, evt);
321
- }
322
- });
323
- failEventsKeys.forEach((eventName)=>{
324
- sequencer.getSequencer().on(eventName, (args)=>{
325
- const evt = makeEvent(i, eventName, args);
326
- failEvents.push(evt);
327
- this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, undefined, evt);
328
- });
329
- });
330
- });
331
- return {
332
- failEvents,
333
- stateChanges
334
- };
335
- }
336
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=bridging_race.notest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridging_race.notest.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/bridging_race.notest.ts"],"names":[],"mappings":""}