@aztec/end-to-end 0.0.0-test.1 → 0.0.1-commit.017a351

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 (316) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/benchmark.d.ts +76 -0
  3. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  4. package/dest/bench/client_flows/benchmark.js +298 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts +79 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  7. package/dest/bench/client_flows/client_flows_benchmark.js +318 -0
  8. package/dest/bench/client_flows/config.d.ts +14 -0
  9. package/dest/bench/client_flows/config.d.ts.map +1 -0
  10. package/dest/bench/client_flows/config.js +124 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  12. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  13. package/dest/bench/client_flows/data_extractor.js +79 -0
  14. package/dest/bench/utils.d.ts +16 -41
  15. package/dest/bench/utils.d.ts.map +1 -1
  16. package/dest/bench/utils.js +46 -72
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +30 -20
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  19. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +137 -106
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +44 -33
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  22. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +136 -103
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts +20 -11
  24. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  25. package/dest/e2e_deploy_contract/deploy_test.js +28 -28
  26. package/dest/e2e_epochs/epochs_test.d.ts +98 -24
  27. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  28. package/dest/e2e_epochs/epochs_test.js +366 -61
  29. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  30. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  31. package/dest/e2e_fees/bridging_race.notest.js +61 -0
  32. package/dest/e2e_fees/fees_test.d.ts +42 -24
  33. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  34. package/dest/e2e_fees/fees_test.js +194 -182
  35. package/dest/e2e_l1_publisher/write_json.d.ts +11 -0
  36. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  37. package/dest/e2e_l1_publisher/write_json.js +56 -0
  38. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  39. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  40. package/dest/e2e_multi_validator/utils.js +214 -0
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts +16 -16
  42. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  43. package/dest/e2e_nested_contract/nested_contract_test.js +38 -43
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  46. package/dest/e2e_p2p/inactivity_slash_test.js +137 -0
  47. package/dest/e2e_p2p/p2p_network.d.ts +287 -31
  48. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  49. package/dest/e2e_p2p/p2p_network.js +281 -183
  50. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  51. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  52. package/dest/e2e_p2p/reqresp/utils.js +206 -0
  53. package/dest/e2e_p2p/shared.d.ts +73 -8
  54. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  55. package/dest/e2e_p2p/shared.js +205 -27
  56. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  57. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  58. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  59. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  60. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  61. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  62. package/dest/e2e_token_contract/token_contract_test.d.ts +30 -15
  63. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  64. package/dest/e2e_token_contract/token_contract_test.js +110 -76
  65. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  66. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  67. package/dest/fixtures/authwit_proxy.js +34 -0
  68. package/dest/fixtures/e2e_prover_test.d.ts +56 -0
  69. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  70. package/dest/fixtures/e2e_prover_test.js +267 -0
  71. package/dest/fixtures/elu_monitor.d.ts +21 -0
  72. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  73. package/dest/fixtures/elu_monitor.js +102 -0
  74. package/dest/fixtures/fixtures.d.ts +79 -8
  75. package/dest/fixtures/fixtures.d.ts.map +1 -1
  76. package/dest/fixtures/fixtures.js +76 -5
  77. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  78. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  79. package/dest/fixtures/get_acvm_config.js +3 -15
  80. package/dest/fixtures/get_bb_config.d.ts +2 -2
  81. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  82. package/dest/fixtures/get_bb_config.js +10 -17
  83. package/dest/fixtures/ha_setup.d.ts +71 -0
  84. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  85. package/dest/fixtures/ha_setup.js +116 -0
  86. package/dest/fixtures/index.d.ts +2 -1
  87. package/dest/fixtures/index.d.ts.map +1 -1
  88. package/dest/fixtures/index.js +1 -0
  89. package/dest/fixtures/l1_to_l2_messaging.d.ts +11 -7
  90. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  91. package/dest/fixtures/l1_to_l2_messaging.js +45 -19
  92. package/dest/fixtures/logging.d.ts +1 -1
  93. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  94. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  95. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  96. package/dest/fixtures/setup.d.ts +272 -0
  97. package/dest/fixtures/setup.d.ts.map +1 -0
  98. package/dest/fixtures/setup.js +735 -0
  99. package/dest/fixtures/setup_p2p_test.d.ts +28 -16
  100. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  101. package/dest/fixtures/setup_p2p_test.js +103 -32
  102. package/dest/fixtures/token_utils.d.ts +10 -4
  103. package/dest/fixtures/token_utils.d.ts.map +1 -1
  104. package/dest/fixtures/token_utils.js +30 -13
  105. package/dest/fixtures/utils.d.ts +5 -153
  106. package/dest/fixtures/utils.d.ts.map +1 -1
  107. package/dest/fixtures/utils.js +4 -552
  108. package/dest/fixtures/web3signer.d.ts +5 -0
  109. package/dest/fixtures/web3signer.d.ts.map +1 -0
  110. package/dest/fixtures/web3signer.js +53 -0
  111. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  112. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  113. package/dest/fixtures/with_telemetry_utils.js +2 -2
  114. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  115. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  116. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  117. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  118. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  119. package/dest/forward-compatibility/wallet_service.js +109 -0
  120. package/dest/index.d.ts +1 -1
  121. package/dest/install_legacy_contracts.d.cts +10 -0
  122. package/dest/install_legacy_contracts.d.cts.map +1 -0
  123. package/dest/legacy-jest-resolver.d.cts +3 -0
  124. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  125. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  126. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  127. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  128. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  129. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  130. package/dest/quality_of_service/prometheus_client.js +67 -0
  131. package/dest/shared/cross_chain_test_harness.d.ts +46 -27
  132. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  133. package/dest/shared/cross_chain_test_harness.js +113 -55
  134. package/dest/shared/gas_portal_test_harness.d.ts +39 -28
  135. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  136. package/dest/shared/gas_portal_test_harness.js +64 -34
  137. package/dest/shared/index.d.ts +3 -2
  138. package/dest/shared/index.d.ts.map +1 -1
  139. package/dest/shared/index.js +1 -0
  140. package/dest/shared/jest_setup.d.ts +1 -1
  141. package/dest/shared/jest_setup.js +42 -2
  142. package/dest/shared/mock_state_view.d.ts +86 -0
  143. package/dest/shared/mock_state_view.d.ts.map +1 -0
  144. package/dest/shared/mock_state_view.js +186 -0
  145. package/dest/shared/submit-transactions.d.ts +6 -4
  146. package/dest/shared/submit-transactions.d.ts.map +1 -1
  147. package/dest/shared/submit-transactions.js +15 -16
  148. package/dest/shared/uniswap_l1_l2.d.ts +3 -25
  149. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  150. package/dest/shared/uniswap_l1_l2.js +202 -135
  151. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  152. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  153. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  154. package/dest/simulators/index.d.ts +1 -1
  155. package/dest/simulators/lending_simulator.d.ts +16 -9
  156. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  157. package/dest/simulators/lending_simulator.js +38 -27
  158. package/dest/simulators/token_simulator.d.ts +6 -3
  159. package/dest/simulators/token_simulator.d.ts.map +1 -1
  160. package/dest/simulators/token_simulator.js +12 -30
  161. package/dest/spartan/setup_test_wallets.d.ts +36 -11
  162. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  163. package/dest/spartan/setup_test_wallets.js +301 -63
  164. package/dest/spartan/tx_metrics.d.ts +102 -0
  165. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  166. package/dest/spartan/tx_metrics.js +475 -0
  167. package/dest/spartan/utils/bot.d.ts +28 -0
  168. package/dest/spartan/utils/bot.d.ts.map +1 -0
  169. package/dest/spartan/utils/bot.js +142 -0
  170. package/dest/spartan/utils/chaos.d.ts +79 -0
  171. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  172. package/dest/spartan/utils/chaos.js +142 -0
  173. package/dest/spartan/utils/clients.d.ts +39 -0
  174. package/dest/spartan/utils/clients.d.ts.map +1 -0
  175. package/dest/spartan/utils/clients.js +90 -0
  176. package/dest/spartan/utils/config.d.ts +19 -0
  177. package/dest/spartan/utils/config.d.ts.map +1 -0
  178. package/dest/spartan/utils/config.js +23 -0
  179. package/dest/spartan/utils/health.d.ts +63 -0
  180. package/dest/spartan/utils/health.d.ts.map +1 -0
  181. package/dest/spartan/utils/health.js +202 -0
  182. package/dest/spartan/utils/helm.d.ts +15 -0
  183. package/dest/spartan/utils/helm.d.ts.map +1 -0
  184. package/dest/spartan/utils/helm.js +47 -0
  185. package/dest/spartan/utils/index.d.ts +11 -0
  186. package/dest/spartan/utils/index.d.ts.map +1 -0
  187. package/dest/spartan/utils/index.js +22 -0
  188. package/dest/spartan/utils/k8s.d.ts +128 -0
  189. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  190. package/dest/spartan/utils/k8s.js +381 -0
  191. package/dest/spartan/utils/nodes.d.ts +40 -0
  192. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  193. package/dest/spartan/utils/nodes.js +461 -0
  194. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  195. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  196. package/dest/spartan/utils/pod_logs.js +74 -0
  197. package/dest/spartan/utils/scripts.d.ts +30 -0
  198. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  199. package/dest/spartan/utils/scripts.js +81 -0
  200. package/dest/spartan/utils.d.ts +2 -415
  201. package/dest/spartan/utils.d.ts.map +1 -1
  202. package/dest/spartan/utils.js +1 -445
  203. package/dest/test-wallet/test_wallet.d.ts +85 -0
  204. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  205. package/dest/test-wallet/test_wallet.js +273 -0
  206. package/dest/test-wallet/utils.d.ts +41 -0
  207. package/dest/test-wallet/utils.d.ts.map +1 -0
  208. package/dest/test-wallet/utils.js +66 -0
  209. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  210. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  211. package/dest/test-wallet/wallet_worker_script.js +53 -0
  212. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  213. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  214. package/dest/test-wallet/worker_wallet.js +155 -0
  215. package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
  216. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  217. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  218. package/package.json +79 -64
  219. package/src/bench/client_flows/benchmark.ts +382 -0
  220. package/src/bench/client_flows/client_flows_benchmark.ts +399 -0
  221. package/src/bench/client_flows/config.ts +69 -0
  222. package/src/bench/client_flows/data_extractor.ts +89 -0
  223. package/src/bench/utils.ts +49 -87
  224. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +164 -172
  225. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +194 -183
  226. package/src/e2e_deploy_contract/deploy_test.ts +42 -49
  227. package/src/e2e_epochs/epochs_test.ts +451 -93
  228. package/src/e2e_fees/bridging_race.notest.ts +74 -0
  229. package/src/e2e_fees/fees_test.ts +249 -262
  230. package/src/e2e_l1_publisher/write_json.ts +77 -0
  231. package/src/e2e_multi_validator/utils.ts +258 -0
  232. package/src/e2e_nested_contract/nested_contract_test.ts +51 -60
  233. package/src/e2e_p2p/inactivity_slash_test.ts +180 -0
  234. package/src/e2e_p2p/p2p_network.ts +391 -240
  235. package/src/e2e_p2p/reqresp/utils.ts +274 -0
  236. package/src/e2e_p2p/shared.ts +304 -39
  237. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  238. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  239. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  240. package/src/e2e_token_contract/token_contract_test.ts +140 -124
  241. package/src/fixtures/authwit_proxy.ts +54 -0
  242. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  243. package/src/fixtures/e2e_prover_test.ts +329 -0
  244. package/src/fixtures/elu_monitor.ts +126 -0
  245. package/src/fixtures/fixtures.ts +98 -7
  246. package/src/fixtures/get_acvm_config.ts +4 -12
  247. package/src/fixtures/get_bb_config.ts +19 -13
  248. package/src/fixtures/ha_setup.ts +188 -0
  249. package/src/fixtures/index.ts +1 -0
  250. package/src/fixtures/l1_to_l2_messaging.ts +56 -24
  251. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  252. package/src/fixtures/setup.ts +1056 -0
  253. package/src/fixtures/setup_p2p_test.ts +142 -54
  254. package/src/fixtures/token_utils.ts +34 -16
  255. package/src/fixtures/utils.ts +29 -820
  256. package/src/fixtures/web3signer.ts +63 -0
  257. package/src/fixtures/with_telemetry_utils.ts +2 -2
  258. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  259. package/src/forward-compatibility/wallet_service.ts +104 -0
  260. package/src/guides/up_quick_start.sh +9 -19
  261. package/src/install_legacy_contracts.cjs +75 -0
  262. package/src/legacy-jest-resolver.cjs +112 -0
  263. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +2 -2
  264. package/src/quality_of_service/prometheus_client.ts +113 -0
  265. package/src/shared/cross_chain_test_harness.ts +116 -90
  266. package/src/shared/gas_portal_test_harness.ts +75 -56
  267. package/src/shared/index.ts +2 -1
  268. package/src/shared/jest_setup.ts +52 -2
  269. package/src/shared/mock_state_view.ts +188 -0
  270. package/src/shared/submit-transactions.ts +19 -20
  271. package/src/shared/uniswap_l1_l2.ts +259 -234
  272. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  273. package/src/simulators/lending_simulator.ts +43 -26
  274. package/src/simulators/token_simulator.ts +18 -34
  275. package/src/spartan/DEVELOP.md +128 -0
  276. package/src/spartan/setup_test_wallets.ts +420 -96
  277. package/src/spartan/tx_metrics.ts +434 -0
  278. package/src/spartan/utils/bot.ts +188 -0
  279. package/src/spartan/utils/chaos.ts +253 -0
  280. package/src/spartan/utils/clients.ts +100 -0
  281. package/src/spartan/utils/config.ts +29 -0
  282. package/src/spartan/utils/health.ts +255 -0
  283. package/src/spartan/utils/helm.ts +84 -0
  284. package/src/spartan/utils/index.ts +71 -0
  285. package/src/spartan/utils/k8s.ts +535 -0
  286. package/src/spartan/utils/nodes.ts +543 -0
  287. package/src/spartan/utils/pod_logs.ts +99 -0
  288. package/src/spartan/utils/scripts.ts +99 -0
  289. package/src/spartan/utils.ts +1 -582
  290. package/src/test-wallet/test_wallet.ts +376 -0
  291. package/src/test-wallet/utils.ts +108 -0
  292. package/src/test-wallet/wallet_worker_script.ts +63 -0
  293. package/src/test-wallet/worker_wallet.ts +218 -0
  294. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  295. package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
  296. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  297. package/dest/e2e_prover/e2e_prover_test.js +0 -291
  298. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  299. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  300. package/dest/fixtures/setup_l1_contracts.js +0 -17
  301. package/dest/fixtures/snapshot_manager.d.ts +0 -87
  302. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  303. package/dest/fixtures/snapshot_manager.js +0 -479
  304. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  305. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  306. package/dest/sample-dapp/connect.js +0 -12
  307. package/dest/sample-dapp/contracts.js +0 -10
  308. package/dest/sample-dapp/deploy.js +0 -35
  309. package/dest/sample-dapp/index.js +0 -98
  310. package/src/e2e_prover/e2e_prover_test.ts +0 -418
  311. package/src/fixtures/setup_l1_contracts.ts +0 -27
  312. package/src/fixtures/snapshot_manager.ts +0 -617
  313. package/src/sample-dapp/connect.mjs +0 -16
  314. package/src/sample-dapp/contracts.mjs +0 -14
  315. package/src/sample-dapp/deploy.mjs +0 -40
  316. package/src/sample-dapp/index.mjs +0 -128
@@ -1,73 +1,91 @@
1
- import { type AccountWallet, type AztecAddress, type AztecNode, ChainMonitor, CheatCodes, type Logger, type PXE } from '@aztec/aztec.js';
2
- import { type DeployL1ContractsArgs } from '@aztec/ethereum';
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { type Logger } from '@aztec/aztec.js/log';
3
+ import type { AztecNode } from '@aztec/aztec.js/node';
4
+ import { CheatCodes } from '@aztec/aztec/testing';
5
+ import { RollupContract } from '@aztec/ethereum/contracts';
6
+ import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
7
+ import { ChainMonitor } from '@aztec/ethereum/test';
8
+ import { BlockNumber } from '@aztec/foundation/branded-types';
3
9
  import { EthAddress } from '@aztec/foundation/eth-address';
4
10
  import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscription';
5
- import { CounterContract } from '@aztec/noir-contracts.js/Counter';
6
11
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
7
12
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
13
+ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
8
14
  import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
15
+ import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
9
16
  import { GasSettings } from '@aztec/stdlib/gas';
10
- import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
11
- import { type BalancesFn, type SetupOptions } from '../fixtures/utils.js';
17
+ import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
18
+ import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
19
+ import { type BalancesFn } from '../fixtures/utils.js';
12
20
  import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
21
+ import { TestWallet } from '../test-wallet/test_wallet.js';
13
22
  /**
14
- * Test fixture for testing fees. Provides the following snapshots:
23
+ * Test fixture for testing fees. Provides the following setup steps:
15
24
  * InitialAccounts: Initializes 3 Schnorr account contracts.
16
25
  * PublicDeployAccounts: Deploys the accounts publicly.
17
26
  * DeployFeeJuice: Deploys the Fee Juice contract.
18
27
  * FPCSetup: Deploys BananaCoin and FPC contracts, and bridges gas from L1.
28
+ * SponsoredFPCSetup: Deploys Sponsored FPC contract, and bridges gas from L1.
19
29
  * FundAlice: Mints private and public bananas to Alice.
20
30
  * SetupSubscription: Deploys a counter contract and a subscription contract, and mints Fee Juice to the subscription contract.
21
31
  */
22
32
  export declare class FeesTest {
23
33
  private numberOfAccounts;
24
- private snapshotManager;
25
- private wallets;
34
+ private setupOptions;
35
+ private accounts;
36
+ context: EndToEndContext;
26
37
  logger: Logger;
27
- pxe: PXE;
28
38
  aztecNode: AztecNode;
39
+ aztecNodeAdmin: AztecNodeAdmin;
29
40
  cheatCodes: CheatCodes;
30
- aliceWallet: AccountWallet;
41
+ wallet: TestWallet;
31
42
  aliceAddress: AztecAddress;
32
- bobWallet: AccountWallet;
33
43
  bobAddress: AztecAddress;
34
44
  sequencerAddress: AztecAddress;
35
45
  coinbase: EthAddress;
36
46
  fpcAdmin: AztecAddress;
37
47
  gasSettings: GasSettings;
48
+ rollupContract: RollupContract;
38
49
  feeJuiceContract: FeeJuiceContract;
39
50
  bananaCoin: BananaCoin;
40
51
  bananaFPC: FPCContract;
52
+ sponsoredFPC: SponsoredFPCContract;
41
53
  counterContract: CounterContract;
42
54
  subscriptionContract: AppSubscriptionContract;
43
55
  feeJuiceBridgeTestHarness: GasBridgingTestHarness;
44
- context: SubsystemsContext;
45
56
  chainMonitor: ChainMonitor;
46
57
  getCoinbaseBalance: () => Promise<bigint>;
47
58
  getCoinbaseSequencerRewards: () => Promise<bigint>;
48
59
  getGasBalanceFn: BalancesFn;
49
60
  getBananaPublicBalanceFn: BalancesFn;
50
61
  getBananaPrivateBalanceFn: BalancesFn;
51
- getProverFee: (blockNumber: number) => Promise<bigint>;
62
+ getProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
63
+ getCommittedProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
64
+ getCommittedBurn: (blockNumber: BlockNumber) => Promise<bigint>;
52
65
  readonly ALICE_INITIAL_BANANAS: bigint;
53
66
  readonly SUBSCRIPTION_AMOUNT: bigint;
54
67
  readonly APP_SPONSORED_TX_GAS_LIMIT: bigint;
55
- constructor(testName: string, numberOfAccounts?: number, setupOptions?: Partial<SetupOptions & DeployL1ContractsArgs>);
56
- setup(): Promise<this>;
68
+ constructor(testName: string, numberOfAccounts?: number, setupOptions?: Partial<SetupOptions & DeployAztecL1ContractsArgs>);
69
+ setup(opts?: Partial<SetupOptions>): Promise<this>;
57
70
  teardown(): Promise<void>;
58
71
  setIsMarkingAsProven(b: boolean): void;
59
72
  catchUpProvenChain(): Promise<void>;
60
- mintAndBridgeFeeJuice(address: AztecAddress, amount: bigint): Promise<void>;
73
+ getBlockRewards(): Promise<{
74
+ sequencerBlockRewards: bigint;
75
+ proverBlockRewards: bigint;
76
+ }>;
77
+ mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress): Promise<void>;
61
78
  /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
62
79
  mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
63
- applyBaseSnapshots(): Promise<void>;
64
- applyInitialAccountsSnapshot(): Promise<void>;
65
- applyPublicDeployAccountsSnapshot(): Promise<void>;
66
- applySetupFeeJuiceSnapshot(): Promise<void>;
67
- applyDeployBananaTokenSnapshot(): Promise<void>;
68
- applyFPCSetupSnapshot(): Promise<void>;
80
+ applyBaseSetup(): Promise<void>;
81
+ applyEnsureAuthRegistryPublished(): Promise<void>;
82
+ applyInitialAccounts(): Promise<void>;
83
+ applyPublicDeployAccounts(): Promise<void>;
84
+ applySetupFeeJuice(): Promise<void>;
85
+ applyDeployBananaToken(): Promise<void>;
86
+ applyFPCSetup(): Promise<void>;
87
+ applySponsoredFPCSetup(): Promise<void>;
69
88
  applyFundAliceWithBananas(): Promise<void>;
70
89
  applyFundAliceWithPrivateBananas(): Promise<void>;
71
- applySetupSubscription(): Promise<void>;
72
90
  }
73
- //# sourceMappingURL=fees_test.d.ts.map
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxJQUFJLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFL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
@@ -1 +1 @@
1
- {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAiC,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAMlB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,UAAU,EAAoC,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAuC,KAAK,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACxH,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IA8CjB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IA9CtB,OAAO,CAAC,QAAQ,CAAsB;IAC/B,OAAO,EAAG,eAAe,CAAC;IAE1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,UAAU,EAAG,UAAU,CAAC;IAExB,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,UAAU,EAAG,YAAY,CAAC;IAC1B,gBAAgB,EAAG,YAAY,CAAC;IAChC,QAAQ,EAAG,UAAU,CAAC;IAEtB,QAAQ,EAAG,YAAY,CAAC;IAExB,WAAW,EAAG,WAAW,CAAC;IAE1B,cAAc,EAAG,cAAc,CAAC;IAEhC,gBAAgB,EAAG,gBAAgB,CAAC;IACpC,UAAU,EAAG,UAAU,CAAC;IACxB,SAAS,EAAG,WAAW,CAAC;IACxB,YAAY,EAAG,oBAAoB,CAAC;IACpC,eAAe,EAAG,eAAe,CAAC;IAClC,oBAAoB,EAAG,uBAAuB,CAAC;IAC/C,yBAAyB,EAAG,sBAAsB,CAAC;IAEnD,YAAY,EAAG,YAAY,CAAC;IAE5B,kBAAkB,EAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,2BAA2B,EAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,eAAe,EAAG,UAAU,CAAC;IAC7B,wBAAwB,EAAG,UAAU,CAAC;IACtC,yBAAyB,EAAG,UAAU,CAAC;IACvC,YAAY,EAAG,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,qBAAqB,EAAG,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,gBAAgB,EAAG,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAExE,SAAgB,qBAAqB,SAAgB;IACrD,SAAgB,mBAAmB,SAAgB;IACnD,SAAgB,0BAA0B,SAAgB;IAE1D,YACE,QAAQ,EAAE,MAAM,EACR,gBAAgB,SAAI,EACpB,YAAY,GAAE,OAAO,CAAC,YAAY,GAAG,0BAA0B,CAAM,EAQ9E;IAEK,KAAK,CAAC,IAAI,GAAE,OAAO,CAAC,YAAY,CAAM,iBAoB3C;IAEK,QAAQ,kBAGb;IAED,oBAAoB,CAAC,CAAC,EAAE,OAAO,QAE9B;IAEK,kBAAkB,kBAKvB;IAEK,eAAe;;;OAWpB;IAEK,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,iBAIxE;IAED,sFAAsF;IAChF,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,iBAW7D;IAEY,cAAc,kBAM1B;IAEK,gCAAgC,kBAGrC;IAEK,oBAAoB,kBA2BzB;IAEK,yBAAyB,kBAG9B;IAEK,kBAAkB,kBAcvB;IAEK,sBAAsB,kBAe3B;IAEY,aAAa,kBA6EzB;IAEY,sBAAsB,kBAUlC;IAEY,yBAAyB,kBAOrC;IAEY,gCAAgC,kBAI5C;CACF"}
@@ -1,56 +1,57 @@
1
- import { getSchnorrWallet } from '@aztec/accounts/schnorr';
2
- import { ChainMonitor, CheatCodes, createLogger, sleep } from '@aztec/aztec.js';
3
- import { FEE_FUNDING_FOR_TESTER_ACCOUNT } from '@aztec/constants';
4
- import { RollupContract, createL1Clients } from '@aztec/ethereum';
1
+ import { createLogger } from '@aztec/aztec.js/log';
2
+ import { getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
3
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
4
+ import { RollupContract } from '@aztec/ethereum/contracts';
5
+ import { ChainMonitor } from '@aztec/ethereum/test';
5
6
  import { EthAddress } from '@aztec/foundation/eth-address';
6
- import { RollupAbi, TestERC20Abi } from '@aztec/l1-artifacts';
7
- import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscription';
8
- import { CounterContract } from '@aztec/noir-contracts.js/Counter';
7
+ import { sleep } from '@aztec/foundation/sleep';
8
+ import { TestERC20Abi } from '@aztec/l1-artifacts';
9
9
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
10
10
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
11
+ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
11
12
  import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
12
13
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
13
14
  import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
14
- import { computePartialAddress } from '@aztec/stdlib/contract';
15
15
  import { GasSettings } from '@aztec/stdlib/gas';
16
16
  import { getContract } from 'viem';
17
- import { MNEMONIC } from '../fixtures/fixtures.js';
18
- import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
17
+ import { MNEMONIC, getPaddedMaxFeesPerGas } from '../fixtures/fixtures.js';
18
+ import { deployAccounts, ensureAuthRegistryPublished, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
19
19
  import { mintTokensToPrivate } from '../fixtures/token_utils.js';
20
- import { ensureAccountsPubliclyDeployed, getBalancesFn, setupCanonicalFeeJuice } from '../fixtures/utils.js';
20
+ import { getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
21
21
  import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_harness.js';
22
- const { E2E_DATA_PATH: dataPath } = process.env;
23
22
  /**
24
- * Test fixture for testing fees. Provides the following snapshots:
23
+ * Test fixture for testing fees. Provides the following setup steps:
25
24
  * InitialAccounts: Initializes 3 Schnorr account contracts.
26
25
  * PublicDeployAccounts: Deploys the accounts publicly.
27
26
  * DeployFeeJuice: Deploys the Fee Juice contract.
28
27
  * FPCSetup: Deploys BananaCoin and FPC contracts, and bridges gas from L1.
28
+ * SponsoredFPCSetup: Deploys Sponsored FPC contract, and bridges gas from L1.
29
29
  * FundAlice: Mints private and public bananas to Alice.
30
30
  * SetupSubscription: Deploys a counter contract and a subscription contract, and mints Fee Juice to the subscription contract.
31
31
  */ export class FeesTest {
32
32
  numberOfAccounts;
33
- snapshotManager;
34
- wallets;
33
+ setupOptions;
34
+ accounts;
35
+ context;
35
36
  logger;
36
- pxe;
37
37
  aztecNode;
38
+ aztecNodeAdmin;
38
39
  cheatCodes;
39
- aliceWallet;
40
+ wallet;
40
41
  aliceAddress;
41
- bobWallet;
42
42
  bobAddress;
43
43
  sequencerAddress;
44
44
  coinbase;
45
45
  fpcAdmin;
46
46
  gasSettings;
47
+ rollupContract;
47
48
  feeJuiceContract;
48
49
  bananaCoin;
49
50
  bananaFPC;
51
+ sponsoredFPC;
50
52
  counterContract;
51
53
  subscriptionContract;
52
54
  feeJuiceBridgeTestHarness;
53
- context;
54
55
  chainMonitor;
55
56
  getCoinbaseBalance;
56
57
  getCoinbaseSequencerRewards;
@@ -58,212 +59,223 @@ const { E2E_DATA_PATH: dataPath } = process.env;
58
59
  getBananaPublicBalanceFn;
59
60
  getBananaPrivateBalanceFn;
60
61
  getProverFee;
62
+ getCommittedProverFee;
63
+ getCommittedBurn;
61
64
  ALICE_INITIAL_BANANAS;
62
65
  SUBSCRIPTION_AMOUNT;
63
66
  APP_SPONSORED_TX_GAS_LIMIT;
64
67
  constructor(testName, numberOfAccounts = 3, setupOptions = {}){
65
68
  this.numberOfAccounts = numberOfAccounts;
66
- this.wallets = [];
69
+ this.setupOptions = setupOptions;
70
+ this.accounts = [];
67
71
  this.ALICE_INITIAL_BANANAS = BigInt(1e22);
68
72
  this.SUBSCRIPTION_AMOUNT = BigInt(1e19);
69
73
  this.APP_SPONSORED_TX_GAS_LIMIT = BigInt(10e9);
70
74
  if (!numberOfAccounts) {
71
75
  throw new Error('There must be at least 1 initial account.');
72
76
  }
77
+ setupOptions.coinbase ??= EthAddress.random();
78
+ this.coinbase = setupOptions.coinbase;
73
79
  this.logger = createLogger(`e2e:e2e_fees:${testName}`);
74
- this.snapshotManager = createSnapshotManager(`e2e_fees/${testName}-${numberOfAccounts}`, dataPath, {
75
- startProverNode: true,
76
- ...setupOptions
77
- }, {
78
- ...setupOptions
79
- });
80
80
  }
81
- async setup() {
82
- const context = await this.snapshotManager.setup();
83
- await context.aztecNode.setConfig({
84
- feeRecipient: this.sequencerAddress,
85
- coinbase: this.coinbase
81
+ async setup(opts = {}) {
82
+ this.logger.verbose('Setting up fresh context...');
83
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
84
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
85
+ this.context = await setup(0, {
86
+ startProverNode: true,
87
+ ...this.setupOptions,
88
+ ...opts,
89
+ fundSponsoredFPC: true,
90
+ skipAccountDeployment: true,
91
+ l1ContractsArgs: {
92
+ ...this.setupOptions
93
+ },
94
+ txPublicSetupAllowListExtend: [
95
+ ...this.setupOptions.txPublicSetupAllowListExtend ?? [],
96
+ ...tokenAllowList
97
+ ]
86
98
  });
87
- const rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
88
- this.chainMonitor = new ChainMonitor(rollupContract, this.logger, 200).start();
99
+ this.rollupContract = RollupContract.getFromConfig(this.context.config);
100
+ this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
101
+ await this.applyBaseSetup();
89
102
  return this;
90
103
  }
91
104
  async teardown() {
92
- this.chainMonitor.stop();
93
- await this.snapshotManager.teardown();
105
+ await this.chainMonitor.stop();
106
+ await teardown(this.context);
94
107
  }
95
108
  setIsMarkingAsProven(b) {
96
109
  this.context.watcher.setIsMarkingAsProven(b);
97
110
  }
98
111
  async catchUpProvenChain() {
99
112
  const bn = await this.aztecNode.getBlockNumber();
100
- while(await this.aztecNode.getProvenBlockNumber() < bn){
113
+ while(await this.aztecNode.getBlockNumber('proven') < bn){
101
114
  await sleep(1000);
102
115
  }
103
116
  }
104
- async mintAndBridgeFeeJuice(address, amount) {
105
- const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(amount, address);
117
+ async getBlockRewards() {
118
+ const blockReward = await this.rollupContract.getCheckpointReward();
119
+ const rewardConfig = await this.rollupContract.getRewardConfig();
120
+ const balance = await this.feeJuiceBridgeTestHarness.getL1FeeJuiceBalance(rewardConfig.rewardDistributor);
121
+ const toDistribute = balance > blockReward ? blockReward : balance;
122
+ const sequencerBlockRewards = toDistribute * BigInt(rewardConfig.sequencerBps) / 10000n;
123
+ const proverBlockRewards = toDistribute - sequencerBlockRewards;
124
+ return {
125
+ sequencerBlockRewards,
126
+ proverBlockRewards
127
+ };
128
+ }
129
+ async mintAndBridgeFeeJuice(minter, recipient) {
130
+ const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(recipient);
106
131
  const { claimSecret: secret, messageLeafIndex: index } = claim;
107
- await this.feeJuiceContract.methods.claim(address, amount, secret, index).send().wait();
132
+ await this.feeJuiceContract.methods.claim(recipient, claim.claimAmount, secret, index).send({
133
+ from: minter
134
+ });
108
135
  }
109
136
  /** Alice mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
110
- const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate();
111
- await mintTokensToPrivate(this.bananaCoin, this.aliceWallet, address, amount);
112
- const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate();
137
+ const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
138
+ from: address
139
+ });
140
+ await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
141
+ const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
142
+ from: address
143
+ });
113
144
  expect(balanceAfter).toEqual(balanceBefore + amount);
114
145
  }
115
- async applyBaseSnapshots() {
116
- await this.applyInitialAccountsSnapshot();
117
- await this.applyPublicDeployAccountsSnapshot();
118
- await this.applySetupFeeJuiceSnapshot();
119
- await this.applyDeployBananaTokenSnapshot();
146
+ async applyBaseSetup() {
147
+ await this.applyInitialAccounts();
148
+ await this.applyEnsureAuthRegistryPublished();
149
+ await this.applyPublicDeployAccounts();
150
+ await this.applySetupFeeJuice();
151
+ await this.applyDeployBananaToken();
120
152
  }
121
- async applyInitialAccountsSnapshot() {
122
- await this.snapshotManager.snapshot('initial_accounts', deployAccounts(this.numberOfAccounts, this.logger), async ({ deployedAccounts }, { pxe, aztecNode, aztecNodeConfig })=>{
123
- this.pxe = pxe;
124
- this.aztecNode = aztecNode;
125
- this.gasSettings = GasSettings.default({
126
- maxFeesPerGas: (await this.aztecNode.getCurrentBaseFees()).mul(2)
127
- });
128
- this.cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, pxe);
129
- this.wallets = await Promise.all(deployedAccounts.map((a)=>getSchnorrWallet(pxe, a.address, a.signingKey)));
130
- this.wallets.forEach((w, i)=>this.logger.verbose(`Wallet ${i} address: ${w.getAddress()}`));
131
- [this.aliceWallet, this.bobWallet] = this.wallets.slice(0, 2);
132
- [this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.wallets.map((w)=>w.getAddress());
133
- // We set Alice as the FPC admin to avoid the need for deployment of another account.
134
- this.fpcAdmin = this.aliceAddress;
135
- const canonicalFeeJuice = await getCanonicalFeeJuice();
136
- this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.aliceWallet);
137
- if (this.numberOfAccounts > 1) {
138
- const bobInstance = (await this.bobWallet.getContractMetadata(this.bobAddress)).contractInstance;
139
- await this.aliceWallet.registerAccount(deployedAccounts[1].secret, await computePartialAddress(bobInstance));
140
- }
141
- this.coinbase = EthAddress.random();
142
- const { publicClient, walletClient } = createL1Clients(aztecNodeConfig.l1RpcUrls, MNEMONIC);
143
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
144
- aztecNode: aztecNode,
145
- pxeService: pxe,
146
- publicClient: publicClient,
147
- walletClient: walletClient,
148
- wallet: this.aliceWallet,
149
- logger: this.logger
150
- });
153
+ async applyEnsureAuthRegistryPublished() {
154
+ this.logger.info('Ensuring AuthRegistry published');
155
+ await ensureAuthRegistryPublished(this.wallet, this.aliceAddress);
156
+ }
157
+ async applyInitialAccounts() {
158
+ this.logger.info('Applying initial accounts setup');
159
+ const { deployedAccounts } = await deployAccounts(this.numberOfAccounts, this.logger)({
160
+ wallet: this.context.wallet,
161
+ initialFundedAccounts: this.context.initialFundedAccounts
162
+ });
163
+ this.wallet = this.context.wallet;
164
+ this.aztecNode = this.context.aztecNodeService;
165
+ this.aztecNodeAdmin = this.context.aztecNodeService;
166
+ this.gasSettings = GasSettings.fallback({
167
+ maxFeesPerGas: await getPaddedMaxFeesPerGas(this.aztecNode)
151
168
  });
169
+ this.cheatCodes = this.context.cheatCodes;
170
+ this.accounts = deployedAccounts.map((a)=>a.address);
171
+ this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
172
+ [this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
173
+ // We set Alice as the FPC admin to avoid the need for deployment of another account.
174
+ this.fpcAdmin = this.aliceAddress;
175
+ const canonicalFeeJuice = await getCanonicalFeeJuice();
176
+ this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
152
177
  }
153
- async applyPublicDeployAccountsSnapshot() {
154
- await this.snapshotManager.snapshot('public_deploy_accounts', ()=>ensureAccountsPubliclyDeployed(this.aliceWallet, this.wallets));
178
+ async applyPublicDeployAccounts() {
179
+ this.logger.info('Applying public deploy accounts setup');
180
+ await publicDeployAccounts(this.wallet, this.accounts);
155
181
  }
156
- async applySetupFeeJuiceSnapshot() {
157
- await this.snapshotManager.snapshot('setup_fee_juice', async (context)=>{
158
- await setupCanonicalFeeJuice(context.pxe);
159
- }, async (_data, context)=>{
160
- this.context = context;
161
- this.feeJuiceContract = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.aliceWallet);
162
- this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.logger);
163
- const { publicClient, walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
164
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
165
- aztecNode: context.aztecNode,
166
- pxeService: context.pxe,
167
- publicClient: publicClient,
168
- walletClient: walletClient,
169
- wallet: this.aliceWallet,
170
- logger: this.logger
171
- });
182
+ async applySetupFeeJuice() {
183
+ this.logger.info('Applying fee juice setup');
184
+ this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
185
+ this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.logger);
186
+ this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
187
+ aztecNode: this.context.aztecNodeService,
188
+ aztecNodeAdmin: this.context.aztecNodeService,
189
+ l1Client: this.context.deployL1ContractsValues.l1Client,
190
+ wallet: this.wallet,
191
+ logger: this.logger
172
192
  });
173
193
  }
174
- async applyDeployBananaTokenSnapshot() {
175
- await this.snapshotManager.snapshot('deploy_banana_token', async ()=>{
176
- const bananaCoin = await BananaCoin.deploy(this.aliceWallet, this.aliceAddress, 'BC', 'BC', 18n).send().deployed();
177
- this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
178
- return {
179
- bananaCoinAddress: bananaCoin.address
180
- };
181
- }, async ({ bananaCoinAddress })=>{
182
- this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.aliceWallet);
194
+ async applyDeployBananaToken() {
195
+ this.logger.info('Applying deploy banana token setup');
196
+ const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
197
+ from: this.aliceAddress
183
198
  });
199
+ this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
200
+ this.bananaCoin = bananaCoin;
201
+ this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.logger);
202
+ this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.logger);
184
203
  }
185
- async applyFPCSetupSnapshot() {
186
- await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
187
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
188
- expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPubliclyDeployed).toBe(true);
189
- const bananaCoin = this.bananaCoin;
190
- const bananaFPC = await FPCContract.deploy(this.aliceWallet, bananaCoin.address, this.fpcAdmin).send().deployed();
191
- this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
192
- await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(FEE_FUNDING_FOR_TESTER_ACCOUNT, bananaFPC.address);
193
- return {
194
- bananaFPCAddress: bananaFPC.address,
195
- feeJuiceAddress: feeJuiceContract.address,
196
- l1FeeJuiceAddress: this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress,
197
- rollupAddress: context.deployL1ContractsValues.l1ContractAddresses.rollupAddress
198
- };
199
- }, async (data, context)=>{
200
- const bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.aliceWallet);
201
- this.bananaFPC = bananaFPC;
202
- const logger = this.logger;
203
- this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, logger);
204
- this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, logger);
205
- this.getCoinbaseBalance = async ()=>{
206
- const { walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
207
- const gasL1 = getContract({
208
- address: data.l1FeeJuiceAddress.toString(),
209
- abi: TestERC20Abi,
210
- client: walletClient
211
- });
212
- return await gasL1.read.balanceOf([
213
- this.coinbase.toString()
214
- ]);
215
- };
216
- this.getCoinbaseSequencerRewards = async ()=>{
217
- const { walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
218
- const rollup = getContract({
219
- address: data.rollupAddress.toString(),
220
- abi: RollupAbi,
221
- client: walletClient
222
- });
223
- return await rollup.read.getSequencerRewards([
224
- this.coinbase.toString()
225
- ]);
226
- };
227
- this.getProverFee = async (blockNumber)=>{
228
- const { walletClient } = createL1Clients(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
229
- const rollup = getContract({
230
- address: data.rollupAddress.toString(),
231
- abi: RollupAbi,
232
- client: walletClient
233
- });
234
- const provingCostPerMana = await rollup.read.getProvingCostPerManaInFeeAsset();
235
- const block = await this.pxe.getBlock(blockNumber);
236
- const mana = block.header.totalManaUsed.toBigInt();
237
- return mana * provingCostPerMana;
238
- };
204
+ async applyFPCSetup() {
205
+ this.logger.info('Applying FPC setup');
206
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
207
+ expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
208
+ const bananaCoin = this.bananaCoin;
209
+ const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
210
+ from: this.aliceAddress
239
211
  });
212
+ this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
213
+ await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.aliceAddress);
214
+ this.bananaFPC = bananaFPC;
215
+ const l1FeeJuiceAddress = this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress;
216
+ this.getCoinbaseBalance = async ()=>{
217
+ const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
218
+ const gasL1 = getContract({
219
+ address: l1FeeJuiceAddress.toString(),
220
+ abi: TestERC20Abi,
221
+ client: l1Client
222
+ });
223
+ return await gasL1.read.balanceOf([
224
+ this.coinbase.toString()
225
+ ]);
226
+ };
227
+ this.getCoinbaseSequencerRewards = async ()=>{
228
+ return await this.rollupContract.getSequencerRewards(this.coinbase);
229
+ };
230
+ this.getProverFee = async (blockNumber)=>{
231
+ const block = await this.aztecNode.getBlock(blockNumber);
232
+ // @todo @lherskind As we deal with #13601
233
+ // Right now the value is from `FeeLib.sol`
234
+ const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
235
+ // We round up
236
+ const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
237
+ const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
238
+ const proverCost = mulDiv(mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, BigInt(await this.rollupContract.getEpochDuration())), 1n, await this.rollupContract.getManaTarget()) + await this.rollupContract.getProvingCostPerMana();
239
+ const price = await this.rollupContract.getEthPerFeeAsset();
240
+ const mana = block.header.totalManaUsed.toBigInt();
241
+ return mulDiv(mana * proverCost, 10n ** 12n, price);
242
+ };
243
+ /**
244
+ * Reads the prover fee that the rollup actually committed for the block's checkpoint, which is what
245
+ * RewardLib uses to pay prover rewards. Unlike `getProverFee`, this does not re-derive the value
246
+ * from current L1 fees or current eth-per-fee-asset price, so it is robust to pipelined fee-asset-price
247
+ * drift between propose-time and reward-payout-time.
248
+ */ this.getCommittedProverFee = async (blockNumber)=>{
249
+ const block = await this.aztecNode.getBlock(blockNumber);
250
+ const feeHeader = await this.rollupContract.getFeeHeader(BigInt(block.checkpointNumber));
251
+ return feeHeader.manaUsed * feeHeader.proverCost;
252
+ };
253
+ // RewardLib computes sequencerFee = checkpointFee - burn - proverFee where burn = manaUsed * congestionCost.
254
+ // The fixture's typical case keeps congestionCost at zero, but reading it explicitly avoids latent bugs
255
+ // when test load changes excess mana.
256
+ this.getCommittedBurn = async (blockNumber)=>{
257
+ const block = await this.aztecNode.getBlock(blockNumber);
258
+ const feeHeader = await this.rollupContract.getFeeHeader(BigInt(block.checkpointNumber));
259
+ return feeHeader.manaUsed * feeHeader.congestionCost;
260
+ };
261
+ }
262
+ async applySponsoredFPCSetup() {
263
+ this.logger.info('Applying sponsored FPC setup');
264
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
265
+ expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
266
+ const sponsoredFPCInstance = await setupSponsoredFPC(this.wallet);
267
+ this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
268
+ this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.wallet);
240
269
  }
241
270
  async applyFundAliceWithBananas() {
242
- await this.snapshotManager.snapshot('fund_alice', async ()=>{
243
- await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
244
- await this.bananaCoin.methods.mint_to_public(this.aliceAddress, this.ALICE_INITIAL_BANANAS).send().wait();
245
- }, ()=>Promise.resolve());
271
+ this.logger.info('Applying fund Alice with bananas setup');
272
+ await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
273
+ await this.bananaCoin.methods.mint_to_public(this.aliceAddress, this.ALICE_INITIAL_BANANAS).send({
274
+ from: this.aliceAddress
275
+ });
246
276
  }
247
277
  async applyFundAliceWithPrivateBananas() {
248
- await this.snapshotManager.snapshot('fund_alice_with_private_bananas', async ()=>{
249
- await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
250
- }, ()=>Promise.resolve());
251
- }
252
- async applySetupSubscription() {
253
- await this.snapshotManager.snapshot('setup_subscription', async ()=>{
254
- const counterContract = await CounterContract.deploy(this.bobWallet, 0, this.bobAddress).send().deployed();
255
- // Deploy subscription contract, that allows subscriptions for SUBSCRIPTION_AMOUNT of bananas
256
- const subscriptionContract = await AppSubscriptionContract.deploy(this.bobWallet, counterContract.address, this.bobAddress, this.bananaCoin.address, this.SUBSCRIPTION_AMOUNT, this.APP_SPONSORED_TX_GAS_LIMIT).send().deployed();
257
- // Mint some Fee Juice to the subscription contract
258
- // Could also use bridgeFromL1ToL2 from the harness, but this is more direct
259
- await this.mintAndBridgeFeeJuice(subscriptionContract.address, FEE_FUNDING_FOR_TESTER_ACCOUNT);
260
- return {
261
- counterContractAddress: counterContract.address,
262
- subscriptionContractAddress: subscriptionContract.address
263
- };
264
- }, async ({ counterContractAddress, subscriptionContractAddress })=>{
265
- this.counterContract = await CounterContract.at(counterContractAddress, this.bobWallet);
266
- this.subscriptionContract = await AppSubscriptionContract.at(subscriptionContractAddress, this.bobWallet);
267
- });
278
+ this.logger.info('Applying fund Alice with private bananas setup');
279
+ await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
268
280
  }
269
281
  }
@@ -0,0 +1,11 @@
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import { BatchedBlob, Blob } from '@aztec/blob-lib';
4
+ import { L2Block } from '@aztec/stdlib/block';
5
+ import { CheckpointHeader } from '@aztec/stdlib/rollup';
6
+ /**
7
+ * Creates a json object that can be used to test the solidity contract.
8
+ * The json object must be put into
9
+ */
10
+ export declare function writeJson(fileName: string, checkpointHeader: CheckpointHeader, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVfanNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV9sMV9wdWJsaXNoZXIvd3JpdGVfanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUE2RCxNQUFNLGlCQUFpQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU14RDs7O0dBR0c7QUFDSCx3QkFBc0IsU0FBUyxDQUM3QixRQUFRLEVBQUUsTUFBTSxFQUNoQixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFDbEMsS0FBSyxFQUFFLE9BQU8sRUFDZCxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQ25CLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFDYixXQUFXLEVBQUUsV0FBVyxFQUN4QixnQkFBZ0IsRUFBRSxZQUFZLEVBQzlCLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLENBb0RmIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAA6D,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMxD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoDf"}