@aztec/end-to-end 0.0.1-commit.03f7ef2 → 0.0.1-commit.04d373f

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 (271) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/benchmark.d.ts +17 -2
  3. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/benchmark.js +38 -1
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts +14 -15
  6. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  7. package/dest/bench/client_flows/client_flows_benchmark.js +132 -150
  8. package/dest/bench/client_flows/config.d.ts +2 -2
  9. package/dest/bench/client_flows/config.d.ts.map +1 -1
  10. package/dest/bench/client_flows/config.js +18 -0
  11. package/dest/bench/client_flows/data_extractor.js +3 -1
  12. package/dest/bench/utils.d.ts +9 -8
  13. package/dest/bench/utils.d.ts.map +1 -1
  14. package/dest/bench/utils.js +33 -19
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +12 -10
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +120 -117
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +30 -14
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +122 -70
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts +6 -5
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  23. package/dest/e2e_deploy_contract/deploy_test.js +20 -14
  24. package/dest/e2e_epochs/epochs_test.d.ts +39 -8
  25. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  26. package/dest/e2e_epochs/epochs_test.js +172 -51
  27. package/dest/e2e_fees/bridging_race.notest.js +3 -5
  28. package/dest/e2e_fees/fees_test.d.ts +18 -15
  29. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  30. package/dest/e2e_fees/fees_test.js +158 -143
  31. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  32. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  33. package/dest/e2e_l1_publisher/write_json.js +14 -16
  34. package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -10
  35. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  36. package/dest/e2e_nested_contract/nested_contract_test.js +32 -41
  37. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  38. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  39. package/dest/e2e_p2p/inactivity_slash_test.js +8 -6
  40. package/dest/e2e_p2p/p2p_network.d.ts +20 -17
  41. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  42. package/dest/e2e_p2p/p2p_network.js +167 -124
  43. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  44. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  45. package/dest/e2e_p2p/reqresp/utils.js +206 -0
  46. package/dest/e2e_p2p/shared.d.ts +30 -12
  47. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  48. package/dest/e2e_p2p/shared.js +88 -68
  49. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  50. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  51. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  52. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  53. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  54. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  55. package/dest/e2e_token_contract/token_contract_test.d.ts +20 -11
  56. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  57. package/dest/e2e_token_contract/token_contract_test.js +103 -93
  58. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  59. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  60. package/dest/fixtures/authwit_proxy.js +34 -0
  61. package/dest/fixtures/e2e_prover_test.d.ts +15 -20
  62. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  63. package/dest/fixtures/e2e_prover_test.js +115 -135
  64. package/dest/fixtures/elu_monitor.d.ts +21 -0
  65. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  66. package/dest/fixtures/elu_monitor.js +102 -0
  67. package/dest/fixtures/fixtures.d.ts +78 -2
  68. package/dest/fixtures/fixtures.d.ts.map +1 -1
  69. package/dest/fixtures/fixtures.js +75 -1
  70. package/dest/fixtures/get_bb_config.d.ts +1 -1
  71. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  72. package/dest/fixtures/get_bb_config.js +5 -5
  73. package/dest/fixtures/ha_setup.d.ts +71 -0
  74. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  75. package/dest/fixtures/ha_setup.js +116 -0
  76. package/dest/fixtures/index.d.ts +2 -1
  77. package/dest/fixtures/index.d.ts.map +1 -1
  78. package/dest/fixtures/index.js +1 -0
  79. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  80. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  81. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  82. package/dest/fixtures/setup.d.ts +266 -0
  83. package/dest/fixtures/setup.d.ts.map +1 -0
  84. package/dest/fixtures/setup.js +714 -0
  85. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  86. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  87. package/dest/fixtures/setup_p2p_test.js +43 -32
  88. package/dest/fixtures/token_utils.d.ts +2 -2
  89. package/dest/fixtures/token_utils.d.ts.map +1 -1
  90. package/dest/fixtures/token_utils.js +7 -6
  91. package/dest/fixtures/utils.d.ts +5 -194
  92. package/dest/fixtures/utils.d.ts.map +1 -1
  93. package/dest/fixtures/utils.js +4 -619
  94. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  95. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  96. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  97. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  98. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  99. package/dest/forward-compatibility/wallet_service.js +109 -0
  100. package/dest/install_legacy_contracts.d.cts +10 -0
  101. package/dest/install_legacy_contracts.d.cts.map +1 -0
  102. package/dest/legacy-jest-resolver.d.cts +3 -0
  103. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  104. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  105. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  106. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  107. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  108. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  109. package/dest/quality_of_service/prometheus_client.js +67 -0
  110. package/dest/shared/cross_chain_test_harness.d.ts +18 -6
  111. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  112. package/dest/shared/cross_chain_test_harness.js +33 -29
  113. package/dest/shared/gas_portal_test_harness.d.ts +18 -5
  114. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  115. package/dest/shared/gas_portal_test_harness.js +20 -11
  116. package/dest/shared/index.d.ts +3 -2
  117. package/dest/shared/index.d.ts.map +1 -1
  118. package/dest/shared/index.js +1 -0
  119. package/dest/shared/jest_setup.js +41 -1
  120. package/dest/shared/mock_state_view.d.ts +86 -0
  121. package/dest/shared/mock_state_view.d.ts.map +1 -0
  122. package/dest/shared/mock_state_view.js +186 -0
  123. package/dest/shared/submit-transactions.d.ts +4 -4
  124. package/dest/shared/submit-transactions.d.ts.map +1 -1
  125. package/dest/shared/submit-transactions.js +9 -11
  126. package/dest/shared/uniswap_l1_l2.d.ts +3 -28
  127. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  128. package/dest/shared/uniswap_l1_l2.js +88 -47
  129. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  130. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  131. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  132. package/dest/simulators/lending_simulator.d.ts +14 -3
  133. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  134. package/dest/simulators/lending_simulator.js +28 -16
  135. package/dest/simulators/token_simulator.d.ts +1 -1
  136. package/dest/simulators/token_simulator.d.ts.map +1 -1
  137. package/dest/simulators/token_simulator.js +3 -24
  138. package/dest/spartan/setup_test_wallets.d.ts +15 -5
  139. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  140. package/dest/spartan/setup_test_wallets.js +133 -43
  141. package/dest/spartan/tx_metrics.d.ts +68 -5
  142. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  143. package/dest/spartan/tx_metrics.js +399 -19
  144. package/dest/spartan/utils/bot.d.ts +28 -0
  145. package/dest/spartan/utils/bot.d.ts.map +1 -0
  146. package/dest/spartan/utils/bot.js +142 -0
  147. package/dest/spartan/utils/chaos.d.ts +79 -0
  148. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  149. package/dest/spartan/utils/chaos.js +142 -0
  150. package/dest/spartan/utils/clients.d.ts +39 -0
  151. package/dest/spartan/utils/clients.d.ts.map +1 -0
  152. package/dest/spartan/utils/clients.js +90 -0
  153. package/dest/spartan/utils/config.d.ts +19 -0
  154. package/dest/spartan/utils/config.d.ts.map +1 -0
  155. package/dest/spartan/utils/config.js +23 -0
  156. package/dest/spartan/utils/health.d.ts +63 -0
  157. package/dest/spartan/utils/health.d.ts.map +1 -0
  158. package/dest/spartan/utils/health.js +202 -0
  159. package/dest/spartan/utils/helm.d.ts +15 -0
  160. package/dest/spartan/utils/helm.d.ts.map +1 -0
  161. package/dest/spartan/utils/helm.js +47 -0
  162. package/dest/spartan/utils/index.d.ts +11 -0
  163. package/dest/spartan/utils/index.d.ts.map +1 -0
  164. package/dest/spartan/utils/index.js +22 -0
  165. package/dest/spartan/utils/k8s.d.ts +128 -0
  166. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  167. package/dest/spartan/utils/k8s.js +381 -0
  168. package/dest/spartan/utils/nodes.d.ts +40 -0
  169. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  170. package/dest/spartan/utils/nodes.js +461 -0
  171. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  172. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  173. package/dest/spartan/utils/pod_logs.js +74 -0
  174. package/dest/spartan/utils/scripts.d.ts +30 -0
  175. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  176. package/dest/spartan/utils/scripts.js +81 -0
  177. package/dest/spartan/utils.d.ts +2 -231
  178. package/dest/spartan/utils.d.ts.map +1 -1
  179. package/dest/spartan/utils.js +1 -853
  180. package/dest/test-wallet/test_wallet.d.ts +85 -0
  181. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  182. package/dest/test-wallet/test_wallet.js +273 -0
  183. package/dest/test-wallet/utils.d.ts +41 -0
  184. package/dest/test-wallet/utils.d.ts.map +1 -0
  185. package/dest/test-wallet/utils.js +66 -0
  186. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  187. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  188. package/dest/test-wallet/wallet_worker_script.js +48 -0
  189. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  190. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  191. package/dest/test-wallet/worker_wallet.js +155 -0
  192. package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
  193. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  194. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  195. package/package.json +53 -45
  196. package/src/bench/client_flows/benchmark.ts +43 -2
  197. package/src/bench/client_flows/client_flows_benchmark.ts +189 -240
  198. package/src/bench/client_flows/config.ts +9 -1
  199. package/src/bench/client_flows/data_extractor.ts +1 -1
  200. package/src/bench/utils.ts +38 -22
  201. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +141 -152
  202. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +166 -118
  203. package/src/e2e_deploy_contract/deploy_test.ts +24 -16
  204. package/src/e2e_epochs/epochs_test.ts +218 -94
  205. package/src/e2e_fees/bridging_race.notest.ts +4 -10
  206. package/src/e2e_fees/fees_test.ts +207 -230
  207. package/src/e2e_l1_publisher/write_json.ts +16 -16
  208. package/src/e2e_nested_contract/nested_contract_test.ts +38 -57
  209. package/src/e2e_p2p/inactivity_slash_test.ts +8 -6
  210. package/src/e2e_p2p/p2p_network.ts +239 -191
  211. package/src/e2e_p2p/reqresp/utils.ts +274 -0
  212. package/src/e2e_p2p/shared.ts +115 -86
  213. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  214. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  215. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  216. package/src/e2e_token_contract/token_contract_test.ts +129 -117
  217. package/src/fixtures/authwit_proxy.ts +54 -0
  218. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  219. package/src/fixtures/e2e_prover_test.ts +143 -185
  220. package/src/fixtures/elu_monitor.ts +126 -0
  221. package/src/fixtures/fixtures.ts +97 -1
  222. package/src/fixtures/get_bb_config.ts +7 -6
  223. package/src/fixtures/ha_setup.ts +188 -0
  224. package/src/fixtures/index.ts +1 -0
  225. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  226. package/src/fixtures/setup.ts +1037 -0
  227. package/src/fixtures/setup_p2p_test.ts +52 -52
  228. package/src/fixtures/token_utils.ts +7 -6
  229. package/src/fixtures/utils.ts +29 -907
  230. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  231. package/src/forward-compatibility/wallet_service.ts +104 -0
  232. package/src/guides/up_quick_start.sh +3 -5
  233. package/src/install_legacy_contracts.cjs +75 -0
  234. package/src/legacy-jest-resolver.cjs +112 -0
  235. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  236. package/src/quality_of_service/prometheus_client.ts +113 -0
  237. package/src/shared/cross_chain_test_harness.ts +34 -40
  238. package/src/shared/gas_portal_test_harness.ts +22 -12
  239. package/src/shared/index.ts +2 -1
  240. package/src/shared/jest_setup.ts +51 -1
  241. package/src/shared/mock_state_view.ts +188 -0
  242. package/src/shared/submit-transactions.ts +11 -16
  243. package/src/shared/uniswap_l1_l2.ts +114 -108
  244. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  245. package/src/simulators/lending_simulator.ts +34 -16
  246. package/src/simulators/token_simulator.ts +6 -30
  247. package/src/spartan/setup_test_wallets.ts +191 -29
  248. package/src/spartan/tx_metrics.ts +329 -25
  249. package/src/spartan/utils/bot.ts +188 -0
  250. package/src/spartan/utils/chaos.ts +253 -0
  251. package/src/spartan/utils/clients.ts +100 -0
  252. package/src/spartan/utils/config.ts +29 -0
  253. package/src/spartan/utils/health.ts +255 -0
  254. package/src/spartan/utils/helm.ts +84 -0
  255. package/src/spartan/utils/index.ts +71 -0
  256. package/src/spartan/utils/k8s.ts +535 -0
  257. package/src/spartan/utils/nodes.ts +543 -0
  258. package/src/spartan/utils/pod_logs.ts +99 -0
  259. package/src/spartan/utils/scripts.ts +99 -0
  260. package/src/spartan/utils.ts +1 -1077
  261. package/src/test-wallet/test_wallet.ts +376 -0
  262. package/src/test-wallet/utils.ts +108 -0
  263. package/src/test-wallet/wallet_worker_script.ts +60 -0
  264. package/src/test-wallet/worker_wallet.ts +218 -0
  265. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  266. package/dest/fixtures/snapshot_manager.d.ts +0 -93
  267. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  268. package/dest/fixtures/snapshot_manager.js +0 -493
  269. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  270. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  271. package/src/fixtures/snapshot_manager.ts +0 -651
@@ -1,4 +1,5 @@
1
1
  import { AztecNodeService } from '@aztec/aztec-node';
2
+ import { getAccountContractAddress } from '@aztec/aztec.js/account';
2
3
  import { getTimestampRangeForEpoch } from '@aztec/aztec.js/block';
3
4
  import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
4
5
  import { Fr } from '@aztec/aztec.js/fields';
@@ -7,14 +8,16 @@ import { EpochCache } from '@aztec/epoch-cache';
7
8
  import { createExtendedL1Client } from '@aztec/ethereum/client';
8
9
  import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
9
10
  import { RollupContract } from '@aztec/ethereum/contracts';
10
- import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
11
- import { EpochNumber } from '@aztec/foundation/branded-types';
11
+ import { createDelayer, waitUntilL1Timestamp, wrapClientWithDelayer } from '@aztec/ethereum/l1-tx-utils';
12
+ import { ChainMonitor } from '@aztec/ethereum/test';
13
+ import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
12
14
  import { SecretValue } from '@aztec/foundation/config';
13
15
  import { randomBytes } from '@aztec/foundation/crypto/random';
14
- import { withLogNameSuffix } from '@aztec/foundation/log';
16
+ import { withLoggerBindings } from '@aztec/foundation/log/server';
15
17
  import { retryUntil } from '@aztec/foundation/retry';
16
18
  import { sleep } from '@aztec/foundation/sleep';
17
19
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
20
+ import { TestContract } from '@aztec/noir-test-contracts.js/Test';
18
21
  import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
19
22
  import { SequencerState } from '@aztec/sequencer-client';
20
23
  import { EthAddress } from '@aztec/stdlib/block';
@@ -22,8 +25,9 @@ import { getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers
22
25
  import { tryStop } from '@aztec/stdlib/interfaces/server';
23
26
  import { join } from 'path';
24
27
  import { privateKeyToAccount } from 'viem/accounts';
28
+ import { SCHNORR_HARDCODED_PRIVATE_KEY, SchnorrHardcodedKeyAccountContract } from '../fixtures/schnorr_hardcoded_account_contract.js';
25
29
  import { createAndSyncProverNode, getPrivateKeyFromIndex, setup } from '../fixtures/utils.js';
26
- export const WORLD_STATE_BLOCK_HISTORY = 2;
30
+ export const WORLD_STATE_CHECKPOINT_HISTORY = 2;
27
31
  export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
28
32
  export const ARCHIVER_POLL_INTERVAL = 50;
29
33
  export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
@@ -54,7 +58,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
54
58
  static getSlotDurations(opts = {}) {
55
59
  const envEthereumSlotDuration = process.env.L1_BLOCK_TIME ? parseInt(process.env.L1_BLOCK_TIME) : DEFAULT_L1_BLOCK_TIME;
56
60
  const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
57
- const aztecSlotDuration = opts.aztecSlotDuration ?? ethereumSlotDuration * 2;
61
+ const aztecSlotDuration = opts.aztecSlotDuration ?? (opts.aztecSlotDurationInL1Slots ?? 2) * ethereumSlotDuration;
58
62
  const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
59
63
  const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
60
64
  const l1PublishingTime = opts.l1PublishingTime ?? 1;
@@ -70,9 +74,18 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
70
74
  const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs, l1PublishingTime } = EpochsTestContext.getSlotDurations(opts);
71
75
  this.L1_BLOCK_TIME_IN_S = ethereumSlotDuration;
72
76
  this.L2_SLOT_DURATION_IN_S = aztecSlotDuration;
77
+ // Auto-create a hardcoded account funded via genesis when:
78
+ // - skipInitialSequencer is set (no sequencer to deploy on-chain), or
79
+ // - useHardcodedAccount is explicitly requested (e.g. tight per-block gas budgets that
80
+ // can't fit a full account-deploy tx).
81
+ const useHardcodedAccount = (opts.skipInitialSequencer || opts.useHardcodedAccount) && !opts.skipHardcodedAccount;
82
+ let hardcodedAccountData;
83
+ if (useHardcodedAccount) {
84
+ hardcodedAccountData = await EpochsTestContext.getHardcodedAccountData(Fr.random(), Fr.random());
85
+ }
73
86
  // Set up system without any account nor protocol contracts
74
87
  // and with faster block times and shorter epochs.
75
- const context = await setup(opts.numberOfAccounts ?? 0, {
88
+ const context = await setup(useHardcodedAccount ? 0 : opts.numberOfAccounts ?? 0, {
76
89
  automineL1Setup: true,
77
90
  checkIntervalMs: 50,
78
91
  archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
@@ -86,17 +99,29 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
86
99
  realProofs: false,
87
100
  startProverNode: true,
88
101
  proverTestDelayMs: opts.proverTestDelayMs ?? 0,
89
- // We use numeric incremental prover ids for simplicity, but we can switch to
90
- // using the prover's eth address if the proverId is used for something in the rollup contract
91
- // Use numeric EthAddress for deterministic prover id
92
102
  proverId: EthAddress.fromNumber(1),
93
- worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
103
+ worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
94
104
  exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
95
- slasherFlavor: 'none',
105
+ slasherEnabled: false,
96
106
  l1PublishingTime,
97
- ...opts
107
+ ...opts,
108
+ ...hardcodedAccountData ? {
109
+ initialFundedAccounts: [
110
+ hardcodedAccountData
111
+ ],
112
+ numberOfAccounts: 0
113
+ } : {}
114
+ }, // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
115
+ // Can be overridden via opts.pxeOpts.
116
+ {
117
+ syncChainTip: 'checkpointed',
118
+ ...opts.pxeOpts
98
119
  });
99
120
  this.context = context;
121
+ // Register the hardcoded account in PXE (local only, no on-chain deployment needed).
122
+ if (hardcodedAccountData) {
123
+ await this.registerHardcodedAccount(hardcodedAccountData);
124
+ }
100
125
  this.proverNodes = context.proverNode ? [
101
126
  context.proverNode
102
127
  ] : [];
@@ -111,10 +136,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
111
136
  });
112
137
  // Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
113
138
  this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
114
- // This is hideous.
115
- // We ought to have a definite reference to the l1TxUtils that we're using in both places, provided by the test context.
116
- this.proverDelayer = context.proverNode ? context.proverNode.publisher.l1TxUtils.delayer : undefined;
117
- this.sequencerDelayer = context.sequencer ? context.sequencer.sequencer.publisher.l1TxUtils.delayer : undefined;
139
+ this.proverDelayer = context.proverDelayer;
140
+ this.sequencerDelayer = context.sequencerDelayer;
118
141
  if (context.proverNode && !this.proverDelayer || context.sequencer && !this.sequencerDelayer) {
119
142
  throw new Error(`Could not find prover or sequencer delayer`);
120
143
  }
@@ -126,7 +149,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
126
149
  l1StartBlock: await this.rollup.getL1StartBlock(),
127
150
  l1GenesisTime: await this.rollup.getL1GenesisTime(),
128
151
  ethereumSlotDuration,
129
- proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs())
152
+ proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
153
+ targetCommitteeSize: await this.rollup.getTargetCommitteeSize(),
154
+ rollupManaLimit: Number(await this.rollup.getManaLimit())
130
155
  };
131
156
  this.logger.info(`L2 genesis at L1 block ${this.constants.l1StartBlock} (timestamp ${this.constants.l1GenesisTime})`);
132
157
  }
@@ -136,19 +161,64 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
136
161
  await Promise.all(this.nodes.map((node)=>tryStop(node, this.logger)));
137
162
  await this.context.teardown();
138
163
  }
164
+ /**
165
+ * Computes InitialAccountData for a SchnorrHardcodedKeyAccountContract.
166
+ * This contract has a hardcoded signing key and no initializer, so it can be used without
167
+ * on-chain deployment. Pass the returned data in `initialFundedAccounts` so the address
168
+ * gets funded with fee juice in genesis.
169
+ */ static async getHardcodedAccountData(secret, salt) {
170
+ const contract = new SchnorrHardcodedKeyAccountContract();
171
+ const address = await getAccountContractAddress(contract, secret, salt);
172
+ const signingKey = SCHNORR_HARDCODED_PRIVATE_KEY;
173
+ return {
174
+ secret,
175
+ salt,
176
+ signingKey,
177
+ address
178
+ };
179
+ }
180
+ /**
181
+ * Registers a SchnorrHardcodedKeyAccountContract in PXE. The account must have been funded
182
+ * at genesis (via getHardcodedAccountData). No on-chain deployment or block mining needed.
183
+ */ async registerHardcodedAccount(accountData) {
184
+ const contract = new SchnorrHardcodedKeyAccountContract();
185
+ const wallet = this.context.wallet;
186
+ const accountManager = await wallet.createAccount({
187
+ secret: accountData.secret,
188
+ salt: accountData.salt,
189
+ contract
190
+ });
191
+ this.context.accounts = [
192
+ accountManager.address
193
+ ];
194
+ return accountManager.address;
195
+ }
139
196
  async createProverNode(opts = {}) {
140
197
  this.logger.warn('Creating and syncing a simulated prover node...');
141
198
  const proverNodePrivateKey = this.getNextPrivateKey();
142
- const suffix = (this.proverNodes.length + 1).toString();
143
- const proverNode = await withLogNameSuffix(suffix, ()=>createAndSyncProverNode(proverNodePrivateKey, {
144
- ...this.context.config
145
- }, {
146
- dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
147
- proverId: EthAddress.fromNumber(parseInt(suffix, 10)),
199
+ const proverIndex = this.proverNodes.length + 1;
200
+ const { mockGossipSubNetwork } = this.context;
201
+ const { proverNode } = await withLoggerBindings({
202
+ actor: `prover-${proverIndex}`
203
+ }, ()=>createAndSyncProverNode(proverNodePrivateKey, {
204
+ ...this.context.config,
205
+ p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined,
206
+ proverId: EthAddress.fromNumber(proverIndex),
148
207
  dontStart: opts.dontStart,
149
208
  ...opts
150
- }, this.context.aztecNode, undefined, {
151
- dateProvider: this.context.dateProvider
209
+ }, {
210
+ dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex'))
211
+ }, {
212
+ dateProvider: this.context.dateProvider,
213
+ p2pClientDeps: {
214
+ p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
215
+ rpcTxProviders: [
216
+ this.context.aztecNode
217
+ ]
218
+ }
219
+ }, {
220
+ genesis: this.context.genesis,
221
+ dontStart: opts.dontStart
152
222
  }));
153
223
  this.proverNodes.push(proverNode);
154
224
  return proverNode;
@@ -169,7 +239,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
169
239
  });
170
240
  }
171
241
  async createNode(opts = {}) {
172
- const suffix = (this.nodes.length + 1).toString();
242
+ const nodeIndex = this.nodes.length + 1;
243
+ const actorPrefix = opts.disableValidator ? 'node' : 'validator';
173
244
  const { mockGossipSubNetwork } = this.context;
174
245
  const resolvedConfig = {
175
246
  ...this.context.config,
@@ -177,35 +248,25 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
177
248
  };
178
249
  const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
179
250
  const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
180
- const node = await withLogNameSuffix(suffix, ()=>AztecNodeService.createAndSync({
251
+ const node = await withLoggerBindings({
252
+ actor: `${actorPrefix}-${nodeIndex}`
253
+ }, ()=>AztecNodeService.createAndSync({
181
254
  ...resolvedConfig,
182
255
  dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
183
256
  validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
257
+ nodeId: resolvedConfig.nodeId || `${actorPrefix}-${nodeIndex}`,
184
258
  p2pEnabled,
185
259
  p2pIp
186
260
  }, {
187
261
  dateProvider: this.context.dateProvider,
188
262
  p2pClientDeps: {
189
263
  p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined
190
- }
264
+ },
265
+ slashingProtectionDb: opts.slashingProtectionDb
191
266
  }, {
192
- prefilledPublicData: this.context.prefilledPublicData,
267
+ genesis: this.context.genesis,
193
268
  ...opts
194
269
  }));
195
- // REFACTOR: We're getting too much into the internals of the sequencer here.
196
- // We should have a single method for constructing an aztec node that returns a TestAztecNodeService
197
- // which directly exposes the delayer and sets any test config.
198
- if (opts.txDelayerMaxInclusionTimeIntoSlot !== undefined) {
199
- this.logger.info(`Setting tx delayer max inclusion time into slot to ${opts.txDelayerMaxInclusionTimeIntoSlot} seconds`);
200
- // 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.
201
- // The delayer needs a wallet (a client that can sign), so we have to create one here.
202
- const l1Client = createExtendedL1Client(resolvedConfig.l1RpcUrls, resolvedConfig.publisherPrivateKeys[0].getValue());
203
- const sequencer = node.getSequencer();
204
- const publisher = sequencer.sequencer.publisher;
205
- const delayed = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, this.L1_BLOCK_TIME_IN_S, l1Client);
206
- delayed.delayer.setMaxInclusionTimeIntoSlot(opts.txDelayerMaxInclusionTimeIntoSlot);
207
- publisher.l1TxUtils = delayed;
208
- }
209
270
  this.nodes.push(node);
210
271
  return node;
211
272
  }
@@ -233,7 +294,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
233
294
  this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
234
295
  oneSlotBefore
235
296
  });
236
- await waitUntilL1Timestamp(this.l1Client, oneSlotBefore);
297
+ // Use a timeout that accounts for the full proof submission window
298
+ const proofSubmissionWindowDuration = this.constants.proofSubmissionEpochs * this.epochDuration * this.L2_SLOT_DURATION_IN_S;
299
+ await waitUntilL1Timestamp(this.l1Client, oneSlotBefore, undefined, proofSubmissionWindowDuration * 2);
237
300
  }
238
301
  /** Waits for the aztec node to sync to the target block number. */ async waitForNodeToSync(blockNumber, type) {
239
302
  const waitTime = ARCHIVER_POLL_INTERVAL + WORLD_STATE_BLOCK_CHECK_INTERVAL;
@@ -242,7 +305,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
242
305
  await sleep(waitTime);
243
306
  const [syncState, tips] = await Promise.all([
244
307
  this.context.aztecNode.getWorldStateSyncStatus(),
245
- await this.context.aztecNode.getL2Tips()
308
+ await this.context.aztecNode.getChainTips()
246
309
  ]);
247
310
  this.logger.info(`Wait for node synch ${blockNumber} ${type}`, {
248
311
  blockNumber,
@@ -251,7 +314,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
251
314
  tips
252
315
  });
253
316
  if (type === 'proven') {
254
- synched = tips.proven.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
317
+ synched = tips.proven.block.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
255
318
  } else if (type === 'finalized') {
256
319
  synched = syncState.finalizedBlockNumber >= blockNumber;
257
320
  } else {
@@ -270,12 +333,25 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
270
333
  await wallet.registerContract(instance, SpamContract.artifact);
271
334
  return SpamContract.at(instance.address, wallet);
272
335
  }
336
+ /** Registers the TestContract on the given wallet. */ async registerTestContract(wallet, salt = Fr.ZERO) {
337
+ const instance = await getContractInstanceFromInstantiationParams(TestContract.artifact, {
338
+ constructorArgs: [],
339
+ constructorArtifact: undefined,
340
+ salt,
341
+ publicKeys: undefined,
342
+ deployer: undefined
343
+ });
344
+ await wallet.registerContract(instance, TestContract.artifact);
345
+ return TestContract.at(instance.address, wallet);
346
+ }
273
347
  /** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
274
- const { client, delayer } = withDelayer(createExtendedL1Client([
348
+ const rawClient = createExtendedL1Client([
275
349
  ...this.l1Client.chain.rpcUrls.default.http
276
- ], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain), this.context.dateProvider, {
350
+ ], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain);
351
+ const delayer = createDelayer(this.context.dateProvider, {
277
352
  ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S
278
- });
353
+ }, {});
354
+ const client = wrapClientWithDelayer(rawClient, delayer);
279
355
  expect(await client.getBalance({
280
356
  address: client.account.address
281
357
  })).toBeGreaterThan(0n);
@@ -293,7 +369,34 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
293
369
  ]).then((_)=>true).catch((_)=>false);
294
370
  expect(result).toBe(expectedSuccess);
295
371
  }
296
- watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
372
+ /** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */ async assertMultipleBlocksPerSlot(targetBlockCount) {
373
+ const archiver = this.context.aztecNode.getBlockSource();
374
+ const checkpoints = await archiver.getCheckpoints({
375
+ from: CheckpointNumber(1),
376
+ limit: 50
377
+ });
378
+ this.logger.warn(`Retrieved ${checkpoints.length} checkpoints from archiver`, {
379
+ checkpoints: checkpoints.map((pc)=>pc.checkpoint.getStats())
380
+ });
381
+ let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
382
+ let targetFound = false;
383
+ for (const checkpoint of checkpoints){
384
+ const blockCount = checkpoint.checkpoint.blocks.length;
385
+ targetFound = targetFound || blockCount >= targetBlockCount;
386
+ this.logger.verbose(`Checkpoint ${checkpoint.checkpoint.number} has ${blockCount} blocks`, {
387
+ checkpoint: checkpoint.checkpoint.getStats()
388
+ });
389
+ for(let i = 0; i < blockCount; i++){
390
+ const block = checkpoint.checkpoint.blocks[i];
391
+ expect(block.indexWithinCheckpoint).toBe(i);
392
+ expect(block.checkpointNumber).toBe(checkpoint.checkpoint.number);
393
+ expect(block.number).toBe(expectedBlockNumber);
394
+ expectedBlockNumber++;
395
+ }
396
+ }
397
+ expect(targetFound).toBe(true);
398
+ }
399
+ watchSequencerEvents(sequencers, getMetadata = ()=>({}), additionalFailEventKeys = []) {
297
400
  const stateChanges = [];
298
401
  const failEvents = [];
299
402
  // Note we do not include the 'block-tx-count-check-failed' event here, since it is fine if we dont build
@@ -301,7 +404,12 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
301
404
  const failEventsKeys = [
302
405
  'block-build-failed',
303
406
  'checkpoint-publish-failed',
304
- 'proposer-rollup-check-failed'
407
+ 'proposer-rollup-check-failed',
408
+ 'checkpoint-error',
409
+ 'checkpoint-publish-failed',
410
+ 'header-validation-failed',
411
+ 'pipelined-checkpoint-discarded',
412
+ ...additionalFailEventKeys
305
413
  ];
306
414
  const makeEvent = (i, eventName, args)=>({
307
415
  ...args,
@@ -325,6 +433,13 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
325
433
  });
326
434
  failEventsKeys.forEach((eventName)=>{
327
435
  sequencer.getSequencer().on(eventName, (args)=>{
436
+ // Skip benign block-build-failed events where the builder rejected the block because it
437
+ // could not collect enough valid txs. This is the same "not enough txs" case as
438
+ // block-tx-count-check-failed (which is already excluded above), just detected after we
439
+ // started processing txs rather than before.
440
+ if (eventName === 'block-build-failed' && args.reason === 'Insufficient valid txs') {
441
+ return;
442
+ }
328
443
  const evt = makeEvent(i, eventName, args);
329
444
  failEvents.push(evt);
330
445
  this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, undefined, evt);
@@ -336,4 +451,10 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
336
451
  stateChanges
337
452
  };
338
453
  }
454
+ assertNoFailuresFromSequencers(failEvents) {
455
+ if (failEvents.length > 0) {
456
+ this.logger.error(`Failed events from sequencers`, failEvents);
457
+ }
458
+ expect(failEvents).toEqual([]);
459
+ }
339
460
  }
@@ -16,10 +16,8 @@ describe('e2e_fees bridging_race', ()=>{
16
16
  minTxsPerBlock: 0
17
17
  });
18
18
  beforeAll(async ()=>{
19
- await t.applyInitialAccountsSnapshot();
20
- await t.applyPublicDeployAccountsSnapshot();
21
- await t.applySetupFeeJuiceSnapshot();
22
- ({ wallet, logger } = await t.setup());
19
+ await t.setup();
20
+ ({ wallet, logger } = t);
23
21
  });
24
22
  afterAll(async ()=>{
25
23
  await t.teardown();
@@ -56,7 +54,7 @@ describe('e2e_fees bridging_race', ()=>{
56
54
  const { claimSecret: secret, messageLeafIndex: index } = claim;
57
55
  await t.feeJuiceContract.methods.claim(bobsAddress, claim.claimAmount, secret, index).send({
58
56
  from: bobsAddress
59
- }).wait();
57
+ });
60
58
  const [balance] = await t.getGasBalanceFn(bobsAddress);
61
59
  expect(balance).toEqual(claim.claimAmount);
62
60
  });
@@ -15,12 +15,12 @@ import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
15
15
  import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
16
16
  import { GasSettings } from '@aztec/stdlib/gas';
17
17
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
18
- import { TestWallet } from '@aztec/test-wallet/server';
19
- import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
20
- import { type BalancesFn, type SetupOptions } from '../fixtures/utils.js';
18
+ import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
19
+ import { type BalancesFn } from '../fixtures/utils.js';
21
20
  import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
21
+ import { TestWallet } from '../test-wallet/test_wallet.js';
22
22
  /**
23
- * Test fixture for testing fees. Provides the following snapshots:
23
+ * Test fixture for testing fees. Provides the following setup steps:
24
24
  * InitialAccounts: Initializes 3 Schnorr account contracts.
25
25
  * PublicDeployAccounts: Deploys the accounts publicly.
26
26
  * DeployFeeJuice: Deploys the Fee Juice contract.
@@ -31,8 +31,9 @@ import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.j
31
31
  */
32
32
  export declare class FeesTest {
33
33
  private numberOfAccounts;
34
- private snapshotManager;
34
+ private setupOptions;
35
35
  private accounts;
36
+ context: EndToEndContext;
36
37
  logger: Logger;
37
38
  aztecNode: AztecNode;
38
39
  aztecNodeAdmin: AztecNodeAdmin;
@@ -52,7 +53,6 @@ export declare class FeesTest {
52
53
  counterContract: CounterContract;
53
54
  subscriptionContract: AppSubscriptionContract;
54
55
  feeJuiceBridgeTestHarness: GasBridgingTestHarness;
55
- context: SubsystemsContext;
56
56
  chainMonitor: ChainMonitor;
57
57
  getCoinbaseBalance: () => Promise<bigint>;
58
58
  getCoinbaseSequencerRewards: () => Promise<bigint>;
@@ -60,11 +60,13 @@ export declare class FeesTest {
60
60
  getBananaPublicBalanceFn: BalancesFn;
61
61
  getBananaPrivateBalanceFn: BalancesFn;
62
62
  getProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
63
+ getCommittedProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
64
+ getCommittedBurn: (blockNumber: BlockNumber) => Promise<bigint>;
63
65
  readonly ALICE_INITIAL_BANANAS: bigint;
64
66
  readonly SUBSCRIPTION_AMOUNT: bigint;
65
67
  readonly APP_SPONSORED_TX_GAS_LIMIT: bigint;
66
68
  constructor(testName: string, numberOfAccounts?: number, setupOptions?: Partial<SetupOptions & DeployAztecL1ContractsArgs>);
67
- setup(): Promise<this>;
69
+ setup(opts?: Partial<SetupOptions>): Promise<this>;
68
70
  teardown(): Promise<void>;
69
71
  setIsMarkingAsProven(b: boolean): void;
70
72
  catchUpProvenChain(): Promise<void>;
@@ -75,14 +77,15 @@ export declare class FeesTest {
75
77
  mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress): Promise<void>;
76
78
  /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
77
79
  mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
78
- applyBaseSnapshots(): Promise<void>;
79
- applyInitialAccountsSnapshot(): Promise<void>;
80
- applyPublicDeployAccountsSnapshot(): Promise<void>;
81
- applySetupFeeJuiceSnapshot(): Promise<void>;
82
- applyDeployBananaTokenSnapshot(): Promise<void>;
83
- applyFPCSetupSnapshot(): Promise<void>;
84
- applySponsoredFPCSetupSnapshot(): 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>;
85
88
  applyFundAliceWithBananas(): Promise<void>;
86
89
  applyFundAliceWithPrivateBananas(): Promise<void>;
87
90
  }
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0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
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":"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"}