@aztec/end-to-end 0.0.1-commit.5476d83 → 0.0.1-commit.5914bae

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 (265) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/benchmark.d.ts +3 -2
  3. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/benchmark.js +21 -1
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts +15 -16
  6. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  7. package/dest/bench/client_flows/client_flows_benchmark.js +138 -144
  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 +31 -19
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +11 -9
  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 +108 -114
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -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 +92 -71
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  23. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  24. package/dest/e2e_epochs/epochs_test.d.ts +27 -15
  25. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  26. package/dest/e2e_epochs/epochs_test.js +104 -52
  27. package/dest/e2e_fees/bridging_race.notest.js +4 -6
  28. package/dest/e2e_fees/fees_test.d.ts +21 -17
  29. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  30. package/dest/e2e_fees/fees_test.js +137 -145
  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_multi_validator/utils.js +1 -1
  35. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  36. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  37. package/dest/e2e_nested_contract/nested_contract_test.js +30 -40
  38. package/dest/e2e_p2p/inactivity_slash_test.d.ts +4 -4
  39. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  40. package/dest/e2e_p2p/inactivity_slash_test.js +7 -9
  41. package/dest/e2e_p2p/p2p_network.d.ts +16 -13
  42. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  43. package/dest/e2e_p2p/p2p_network.js +140 -114
  44. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  45. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  46. package/dest/e2e_p2p/reqresp/utils.js +177 -0
  47. package/dest/e2e_p2p/shared.d.ts +39 -7
  48. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  49. package/dest/e2e_p2p/shared.js +73 -22
  50. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  51. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  52. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  53. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  54. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  55. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  56. package/dest/e2e_token_contract/token_contract_test.d.ts +19 -10
  57. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  58. package/dest/e2e_token_contract/token_contract_test.js +100 -92
  59. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  60. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  61. package/dest/fixtures/authwit_proxy.js +34 -0
  62. package/dest/fixtures/e2e_prover_test.d.ts +13 -21
  63. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  64. package/dest/fixtures/e2e_prover_test.js +114 -133
  65. package/dest/fixtures/fixtures.d.ts +6 -3
  66. package/dest/fixtures/fixtures.d.ts.map +1 -1
  67. package/dest/fixtures/fixtures.js +8 -3
  68. package/dest/fixtures/get_acvm_config.js +1 -1
  69. package/dest/fixtures/ha_setup.d.ts +71 -0
  70. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  71. package/dest/fixtures/ha_setup.js +116 -0
  72. package/dest/fixtures/index.d.ts +2 -1
  73. package/dest/fixtures/index.d.ts.map +1 -1
  74. package/dest/fixtures/index.js +1 -0
  75. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  76. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  77. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  78. package/dest/fixtures/setup.d.ts +238 -0
  79. package/dest/fixtures/setup.d.ts.map +1 -0
  80. package/dest/fixtures/setup.js +609 -0
  81. package/dest/fixtures/setup_p2p_test.d.ts +16 -9
  82. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  83. package/dest/fixtures/setup_p2p_test.js +43 -32
  84. package/dest/fixtures/token_utils.d.ts +2 -2
  85. package/dest/fixtures/token_utils.d.ts.map +1 -1
  86. package/dest/fixtures/token_utils.js +12 -8
  87. package/dest/fixtures/utils.d.ts +5 -637
  88. package/dest/fixtures/utils.d.ts.map +1 -1
  89. package/dest/fixtures/utils.js +4 -647
  90. package/dest/fixtures/web3signer.js +1 -1
  91. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  92. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  93. package/dest/fixtures/with_telemetry_utils.js +2 -2
  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/legacy-jest-resolver.d.cts +3 -0
  101. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  102. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  103. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  104. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  105. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  106. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  107. package/dest/quality_of_service/prometheus_client.js +67 -0
  108. package/dest/shared/cross_chain_test_harness.d.ts +18 -6
  109. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  110. package/dest/shared/cross_chain_test_harness.js +27 -27
  111. package/dest/shared/gas_portal_test_harness.d.ts +12 -2
  112. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  113. package/dest/shared/gas_portal_test_harness.js +3 -3
  114. package/dest/shared/index.d.ts +3 -2
  115. package/dest/shared/index.d.ts.map +1 -1
  116. package/dest/shared/index.js +1 -0
  117. package/dest/shared/mock_state_view.d.ts +86 -0
  118. package/dest/shared/mock_state_view.d.ts.map +1 -0
  119. package/dest/shared/mock_state_view.js +186 -0
  120. package/dest/shared/submit-transactions.d.ts +4 -4
  121. package/dest/shared/submit-transactions.d.ts.map +1 -1
  122. package/dest/shared/submit-transactions.js +9 -11
  123. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  124. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  125. package/dest/shared/uniswap_l1_l2.js +58 -39
  126. package/dest/simulators/lending_simulator.d.ts +6 -2
  127. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  128. package/dest/simulators/lending_simulator.js +6 -6
  129. package/dest/simulators/token_simulator.d.ts +1 -1
  130. package/dest/simulators/token_simulator.d.ts.map +1 -1
  131. package/dest/simulators/token_simulator.js +3 -24
  132. package/dest/spartan/setup_test_wallets.d.ts +15 -5
  133. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  134. package/dest/spartan/setup_test_wallets.js +113 -42
  135. package/dest/spartan/tx_metrics.d.ts +88 -0
  136. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  137. package/dest/spartan/tx_metrics.js +422 -0
  138. package/dest/spartan/utils/bot.d.ts +28 -0
  139. package/dest/spartan/utils/bot.d.ts.map +1 -0
  140. package/dest/spartan/utils/bot.js +142 -0
  141. package/dest/spartan/utils/chaos.d.ts +79 -0
  142. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  143. package/dest/spartan/utils/chaos.js +142 -0
  144. package/dest/spartan/utils/clients.d.ts +39 -0
  145. package/dest/spartan/utils/clients.d.ts.map +1 -0
  146. package/dest/spartan/utils/clients.js +90 -0
  147. package/dest/spartan/utils/config.d.ts +39 -0
  148. package/dest/spartan/utils/config.d.ts.map +1 -0
  149. package/dest/spartan/utils/config.js +21 -0
  150. package/dest/spartan/utils/health.d.ts +63 -0
  151. package/dest/spartan/utils/health.d.ts.map +1 -0
  152. package/dest/spartan/utils/health.js +202 -0
  153. package/dest/spartan/utils/helm.d.ts +15 -0
  154. package/dest/spartan/utils/helm.d.ts.map +1 -0
  155. package/dest/spartan/utils/helm.js +47 -0
  156. package/dest/spartan/utils/index.d.ts +10 -0
  157. package/dest/spartan/utils/index.d.ts.map +1 -0
  158. package/dest/spartan/utils/index.js +20 -0
  159. package/dest/spartan/utils/k8s.d.ts +128 -0
  160. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  161. package/dest/spartan/utils/k8s.js +381 -0
  162. package/dest/spartan/utils/nodes.d.ts +41 -0
  163. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  164. package/dest/spartan/utils/nodes.js +461 -0
  165. package/dest/spartan/utils/scripts.d.ts +30 -0
  166. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  167. package/dest/spartan/utils/scripts.js +81 -0
  168. package/dest/spartan/utils.d.ts +2 -220
  169. package/dest/spartan/utils.d.ts.map +1 -1
  170. package/dest/spartan/utils.js +1 -782
  171. package/dest/test-wallet/test_wallet.d.ts +84 -0
  172. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  173. package/dest/test-wallet/test_wallet.js +249 -0
  174. package/dest/test-wallet/utils.d.ts +41 -0
  175. package/dest/test-wallet/utils.d.ts.map +1 -0
  176. package/dest/test-wallet/utils.js +71 -0
  177. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  178. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  179. package/dest/test-wallet/wallet_worker_script.js +48 -0
  180. package/dest/test-wallet/worker_wallet.d.ts +52 -0
  181. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  182. package/dest/test-wallet/worker_wallet.js +151 -0
  183. package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
  184. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  185. package/dest/test-wallet/worker_wallet_schema.js +10 -0
  186. package/package.json +47 -41
  187. package/src/bench/client_flows/benchmark.ts +24 -2
  188. package/src/bench/client_flows/client_flows_benchmark.ts +157 -216
  189. package/src/bench/client_flows/config.ts +9 -1
  190. package/src/bench/client_flows/data_extractor.ts +1 -1
  191. package/src/bench/utils.ts +36 -21
  192. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +123 -151
  193. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -126
  194. package/src/e2e_deploy_contract/deploy_test.ts +22 -15
  195. package/src/e2e_epochs/epochs_test.ts +172 -111
  196. package/src/e2e_fees/bridging_race.notest.ts +5 -11
  197. package/src/e2e_fees/fees_test.ts +178 -228
  198. package/src/e2e_l1_publisher/write_json.ts +16 -16
  199. package/src/e2e_multi_validator/utils.ts +1 -1
  200. package/src/e2e_nested_contract/nested_contract_test.ts +35 -56
  201. package/src/e2e_p2p/inactivity_slash_test.ts +8 -10
  202. package/src/e2e_p2p/p2p_network.ts +203 -180
  203. package/src/e2e_p2p/reqresp/utils.ts +235 -0
  204. package/src/e2e_p2p/shared.ts +129 -29
  205. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  206. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  207. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  208. package/src/e2e_token_contract/token_contract_test.ts +121 -119
  209. package/src/fixtures/authwit_proxy.ts +54 -0
  210. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  211. package/src/fixtures/e2e_prover_test.ts +136 -177
  212. package/src/fixtures/fixtures.ts +12 -5
  213. package/src/fixtures/get_acvm_config.ts +1 -1
  214. package/src/fixtures/ha_setup.ts +186 -0
  215. package/src/fixtures/index.ts +1 -0
  216. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  217. package/src/fixtures/setup.ts +905 -0
  218. package/src/fixtures/setup_p2p_test.ts +43 -47
  219. package/src/fixtures/token_utils.ts +10 -6
  220. package/src/fixtures/utils.ts +27 -966
  221. package/src/fixtures/web3signer.ts +1 -1
  222. package/src/fixtures/with_telemetry_utils.ts +2 -2
  223. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  224. package/src/forward-compatibility/wallet_service.ts +104 -0
  225. package/src/guides/up_quick_start.sh +3 -3
  226. package/src/legacy-jest-resolver.cjs +135 -0
  227. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  228. package/src/quality_of_service/prometheus_client.ts +113 -0
  229. package/src/shared/cross_chain_test_harness.ts +30 -43
  230. package/src/shared/gas_portal_test_harness.ts +3 -3
  231. package/src/shared/index.ts +2 -1
  232. package/src/shared/mock_state_view.ts +188 -0
  233. package/src/shared/submit-transactions.ts +14 -16
  234. package/src/shared/uniswap_l1_l2.ts +86 -102
  235. package/src/simulators/lending_simulator.ts +11 -7
  236. package/src/simulators/token_simulator.ts +6 -30
  237. package/src/spartan/DEVELOP.md +7 -0
  238. package/src/spartan/setup_test_wallets.ts +168 -27
  239. package/src/spartan/tx_metrics.ts +376 -0
  240. package/src/spartan/utils/bot.ts +188 -0
  241. package/src/spartan/utils/chaos.ts +253 -0
  242. package/src/spartan/utils/clients.ts +100 -0
  243. package/src/spartan/utils/config.ts +27 -0
  244. package/src/spartan/utils/health.ts +255 -0
  245. package/src/spartan/utils/helm.ts +84 -0
  246. package/src/spartan/utils/index.ts +68 -0
  247. package/src/spartan/utils/k8s.ts +535 -0
  248. package/src/spartan/utils/nodes.ts +538 -0
  249. package/src/spartan/utils/scripts.ts +99 -0
  250. package/src/spartan/utils.ts +1 -982
  251. package/src/test-wallet/test_wallet.ts +351 -0
  252. package/src/test-wallet/utils.ts +112 -0
  253. package/src/test-wallet/wallet_worker_script.ts +60 -0
  254. package/src/test-wallet/worker_wallet.ts +214 -0
  255. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  256. package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
  257. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  258. package/dest/fixtures/setup_l1_contracts.js +0 -17
  259. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  260. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  261. package/dest/fixtures/snapshot_manager.js +0 -505
  262. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  263. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  264. package/src/fixtures/setup_l1_contracts.ts +0 -26
  265. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -2,9 +2,9 @@
2
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
3
3
  import { Fr } from '@aztec/aztec.js/fields';
4
4
  import { CheatCodes } from '@aztec/aztec/testing';
5
- import type { RollupContract } from '@aztec/ethereum';
5
+ import type { RollupContract } from '@aztec/ethereum/contracts';
6
6
  import { SlotNumber } from '@aztec/foundation/branded-types';
7
- import { pedersenHash } from '@aztec/foundation/crypto';
7
+ import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
8
8
  import type { TestDateProvider } from '@aztec/foundation/timer';
9
9
  import type { LendingContract } from '@aztec/noir-contracts.js/Lending';
10
10
 
@@ -29,7 +29,7 @@ export class LendingAccount {
29
29
  * @returns Key in public space
30
30
  */
31
31
  public key() {
32
- return pedersenHash([this.address, this.secret]);
32
+ return poseidon2Hash([this.address, this.secret]);
33
33
  }
34
34
  }
35
35
 
@@ -94,7 +94,9 @@ export class LendingSimulator {
94
94
 
95
95
  async prepare() {
96
96
  this.accumulator = BASE;
97
- const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()) + BigInt(this.ethereumSlotDuration));
97
+ const slot = await this.rollup.getSlotAt(
98
+ BigInt(await this.cc.eth.lastBlockTimestamp()) + BigInt(this.ethereumSlotDuration),
99
+ );
98
100
  this.time = Number(await this.rollup.getTimestampForSlot(slot));
99
101
  }
100
102
 
@@ -103,7 +105,7 @@ export class LendingSimulator {
103
105
  return;
104
106
  }
105
107
 
106
- const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()));
108
+ const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.lastBlockTimestamp()));
107
109
  const targetSlot = SlotNumber(slot + diff);
108
110
  const ts = Number(await this.rollup.getTimestampForSlot(targetSlot));
109
111
  const timeDiff = ts - this.time;
@@ -186,14 +188,16 @@ export class LendingSimulator {
186
188
 
187
189
  expect(this.borrowed).toEqual(this.stableCoin.totalSupply - this.mintedOutside);
188
190
 
189
- const asset = await this.lendingContract.methods.get_asset(0).simulate({ from: this.account.address });
191
+ const { result: asset } = await this.lendingContract.methods.get_asset(0).simulate({ from: this.account.address });
190
192
 
191
193
  const interestAccumulator = asset['interest_accumulator'];
192
194
  expect(interestAccumulator).toEqual(this.accumulator);
193
195
  expect(asset['last_updated_ts']).toEqual(BigInt(this.time));
194
196
 
195
197
  for (const key of [this.account.address, AztecAddress.fromField(await this.account.key())]) {
196
- const privatePos = await this.lendingContract.methods.get_position(key).simulate({ from: this.account.address });
198
+ const { result: privatePos } = await this.lendingContract.methods
199
+ .get_position(key)
200
+ .simulate({ from: this.account.address });
197
201
  expect(new Fr(privatePos['collateral'])).toEqual(this.collateral[key.toString()] ?? Fr.ZERO);
198
202
  expect(new Fr(privatePos['static_debt'])).toEqual(this.staticDebt[key.toString()] ?? Fr.ZERO);
199
203
  expect(privatePos['debt']).toEqual(
@@ -109,7 +109,9 @@ export class TokenSimulator {
109
109
  await Promise.all(
110
110
  chunk(calls, 5).map(batch => new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress })),
111
111
  )
112
- ).flat();
112
+ )
113
+ .flat()
114
+ .map(r => r.result);
113
115
  expect(results[0]).toEqual(this.totalSupply);
114
116
 
115
117
  // Check that all our balances match
@@ -119,39 +121,13 @@ export class TokenSimulator {
119
121
  }
120
122
 
121
123
  async checkPrivate() {
122
- // Private calls
123
- const defaultLookups = [];
124
- const nonDefaultLookups = [];
125
-
126
124
  for (const address of this.accounts) {
127
- if (this.lookupProvider.has(address.toString())) {
128
- nonDefaultLookups.push(address);
129
- } else {
130
- defaultLookups.push(address);
131
- }
132
- }
133
-
134
- const defaultCalls = defaultLookups.map(address => this.token.methods.balance_of_private(address));
135
- const results = (
136
- await Promise.all(
137
- chunk(defaultCalls, 4).map(batch =>
138
- new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress }),
139
- ),
140
- )
141
- ).flat();
142
- for (let i = 0; i < defaultLookups.length; i++) {
143
- expect(results[i]).toEqual(this.balanceOfPrivate(defaultLookups[i]));
144
- }
145
-
146
- // We are just running individual calls for the non-default lookups
147
- // @todo We should also batch these
148
- for (const address of nonDefaultLookups) {
149
125
  const wallet = this.lookupProvider.get(address.toString());
150
126
  const asset = wallet ? this.token.withWallet(wallet) : this.token;
151
127
 
152
- const actualPrivateBalance = await asset.methods
153
- .balance_of_private({ address })
154
- .simulate({ from: this.defaultAddress });
128
+ const { result: actualPrivateBalance } = await asset.methods
129
+ .balance_of_private(address)
130
+ .simulate({ from: address });
155
131
  expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
156
132
  }
157
133
  }
@@ -61,10 +61,17 @@ The export is important there. The `AZTEC_DOCKER_IMAGE` env var is used as both:
61
61
  - the containers for the aztec infrastructure (validators, provers, etc)
62
62
 
63
63
  # Deploy Metrics
64
+
64
65
  ```bash
65
66
  ./spartan/bootstrap.sh metrics-kind
66
67
  ```
67
68
 
69
+ # Install Chaos Mesh
70
+
71
+ ```bash
72
+ ./spartan/bootstrap.sh chaos-mesh
73
+ ```
74
+
68
75
  # Deploy stuff
69
76
 
70
77
  ```bash
@@ -1,21 +1,27 @@
1
1
  import { generateSchnorrAccounts } from '@aztec/accounts/testing';
2
+ import { NO_FROM } from '@aztec/aztec.js/account';
2
3
  import { AztecAddress } from '@aztec/aztec.js/addresses';
4
+ import { NO_WAIT } from '@aztec/aztec.js/contracts';
3
5
  import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
4
6
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
5
7
  import { type FeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
6
8
  import { Fr } from '@aztec/aztec.js/fields';
7
- import { type AztecNode, createAztecNodeClient } from '@aztec/aztec.js/node';
9
+ import { type AztecNode, createAztecNodeClient, waitForTx } from '@aztec/aztec.js/node';
8
10
  import type { Wallet } from '@aztec/aztec.js/wallet';
9
- import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
11
+ import { createEthereumChain } from '@aztec/ethereum/chain';
12
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
10
13
  import type { Logger } from '@aztec/foundation/log';
11
14
  import { retryUntil } from '@aztec/foundation/retry';
12
15
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
13
16
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
14
- import { TestWallet, proveInteraction, registerInitialLocalNetworkAccountsInWallet } from '@aztec/test-wallet/server';
17
+ import { registerInitialLocalNetworkAccountsInWallet } from '@aztec/wallets/testing';
15
18
 
16
19
  import { getACVMConfig } from '../fixtures/get_acvm_config.js';
17
20
  import { getBBConfig } from '../fixtures/get_bb_config.js';
18
21
  import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
22
+ import { TestWallet } from '../test-wallet/test_wallet.js';
23
+ import { proveInteraction } from '../test-wallet/utils.js';
24
+ import { WorkerWallet } from '../test-wallet/worker_wallet.js';
19
25
 
20
26
  export interface TestAccounts {
21
27
  aztecNode: AztecNode;
@@ -83,11 +89,19 @@ export async function deploySponsoredTestAccountsWithTokens(
83
89
 
84
90
  const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
85
91
  const recipientDeployMethod = await recipientAccount.getDeployMethod();
86
- await recipientDeployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait({ timeout: 2400 });
92
+ await recipientDeployMethod.send({
93
+ from: NO_FROM,
94
+ fee: { paymentMethod },
95
+ wait: { timeout: 2400 },
96
+ });
87
97
  await Promise.all(
88
98
  fundedAccounts.map(async a => {
89
99
  const deployMethod = await a.getDeployMethod();
90
- await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait({ timeout: 2400 }); // increase timeout on purpose in order to account for two empty epochs
100
+ await deployMethod.send({
101
+ from: NO_FROM,
102
+ fee: { paymentMethod },
103
+ wait: { timeout: 2400 },
104
+ }); // increase timeout on purpose in order to account for two empty epochs
91
105
  logger.info(`Account deployed at ${a.address}`);
92
106
  }),
93
107
  );
@@ -115,11 +129,84 @@ export async function deploySponsoredTestAccountsWithTokens(
115
129
  };
116
130
  }
117
131
 
132
+ async function deployAccountWithDiagnostics(
133
+ account: { getDeployMethod: () => Promise<{ simulate: (opts: any) => any; send: (opts: any) => any }>; address: any },
134
+ paymentMethod: SponsoredFeePaymentMethod,
135
+ aztecNode: AztecNode,
136
+ logger: Logger,
137
+ accountLabel: string,
138
+ estimateGas?: boolean,
139
+ ): Promise<void> {
140
+ const deployMethod = await account.getDeployMethod();
141
+ let txHash;
142
+ try {
143
+ let gasSettings;
144
+ if (estimateGas) {
145
+ const sim = await deployMethod.simulate({ from: NO_FROM, fee: { paymentMethod } });
146
+ gasSettings = sim.estimatedGas;
147
+ logger.info(`${accountLabel} estimated gas: DA=${gasSettings.gasLimits.daGas} L2=${gasSettings.gasLimits.l2Gas}`);
148
+ }
149
+ const deployResult = await deployMethod.send({
150
+ from: NO_FROM,
151
+ fee: { paymentMethod, gasSettings },
152
+ wait: NO_WAIT,
153
+ });
154
+ txHash = deployResult.txHash;
155
+ await waitForTx(aztecNode, txHash, { timeout: 2400 });
156
+ logger.info(`${accountLabel} deployed at ${account.address}`);
157
+ } catch (error) {
158
+ const blockNumber = await aztecNode.getBlockNumber();
159
+ let receipt;
160
+ try {
161
+ receipt = await aztecNode.getTxReceipt(txHash);
162
+ } catch {
163
+ receipt = 'unavailable';
164
+ }
165
+ logger.error(`${accountLabel} deployment failed`, {
166
+ txHash: txHash.toString(),
167
+ receipt: JSON.stringify(receipt),
168
+ currentBlockNumber: blockNumber,
169
+ error: String(error),
170
+ });
171
+ throw error;
172
+ }
173
+ }
174
+
175
+ async function deployAccountsInBatches(
176
+ accounts: {
177
+ getDeployMethod: () => Promise<{ simulate: (opts: any) => any; send: (opts: any) => any }>;
178
+ address: any;
179
+ }[],
180
+ paymentMethod: SponsoredFeePaymentMethod,
181
+ aztecNode: AztecNode,
182
+ logger: Logger,
183
+ labelPrefix: string,
184
+ batchSize = 2,
185
+ estimateGas?: boolean,
186
+ ): Promise<void> {
187
+ for (let i = 0; i < accounts.length; i += batchSize) {
188
+ const batch = accounts.slice(i, i + batchSize);
189
+ await Promise.all(
190
+ batch.map((account, idx) =>
191
+ deployAccountWithDiagnostics(
192
+ account,
193
+ paymentMethod,
194
+ aztecNode,
195
+ logger,
196
+ `${labelPrefix}${i + idx + 1}`,
197
+ estimateGas,
198
+ ),
199
+ ),
200
+ );
201
+ }
202
+ }
203
+
118
204
  export async function deploySponsoredTestAccounts(
119
205
  wallet: TestWallet,
120
206
  aztecNode: AztecNode,
121
207
  logger: Logger,
122
208
  numberOfFundedWallets = 1,
209
+ opts?: { estimateGas?: boolean },
123
210
  ): Promise<TestAccountsWithoutTokens> {
124
211
  const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
125
212
  const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
@@ -128,14 +215,23 @@ export async function deploySponsoredTestAccounts(
128
215
  await registerSponsoredFPC(wallet);
129
216
 
130
217
  const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
131
- const recipientDeployMethod = await recipientAccount.getDeployMethod();
132
- await recipientDeployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait({ timeout: 2400 });
133
- await Promise.all(
134
- fundedAccounts.map(async a => {
135
- const deployMethod = await a.getDeployMethod();
136
- await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait({ timeout: 2400 }); // increase timeout on purpose in order to account for two empty epochs
137
- logger.info(`Account deployed at ${a.address}`);
138
- }),
218
+
219
+ await deployAccountWithDiagnostics(
220
+ recipientAccount,
221
+ paymentMethod,
222
+ aztecNode,
223
+ logger,
224
+ 'Recipient account',
225
+ opts?.estimateGas,
226
+ );
227
+ await deployAccountsInBatches(
228
+ fundedAccounts,
229
+ paymentMethod,
230
+ aztecNode,
231
+ logger,
232
+ 'Funded account ',
233
+ 2,
234
+ opts?.estimateGas,
139
235
  );
140
236
 
141
237
  return {
@@ -174,7 +270,7 @@ export async function deployTestAccountsWithTokens(
174
270
  fundedAccounts.map(async (a, i) => {
175
271
  const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
176
272
  const deployMethod = await a.getDeployMethod();
177
- await deployMethod.send({ from: AztecAddress.ZERO, fee: { paymentMethod } }).wait();
273
+ await deployMethod.send({ from: NO_FROM, fee: { paymentMethod } });
178
274
  logger.info(`Account deployed at ${a.address}`);
179
275
  }),
180
276
  );
@@ -218,7 +314,7 @@ async function bridgeL1FeeJuice(
218
314
  const claim = await portal.bridgeTokensPublic(recipient, amount, true /* mint */);
219
315
 
220
316
  const isSynced = async () =>
221
- (await aztecNode.getL1ToL2MessageBlock(Fr.fromHexString(claim.messageHash))) !== undefined;
317
+ (await aztecNode.getL1ToL2MessageCheckpoint(Fr.fromHexString(claim.messageHash))) !== undefined;
222
318
  await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 0.5);
223
319
 
224
320
  log.info(`Created a claim for ${amount} L1 fee juice to ${recipient}.`, claim);
@@ -250,14 +346,15 @@ async function deployTokenAndMint(
250
346
  logger: Logger,
251
347
  ) {
252
348
  logger.verbose(`Deploying TokenContract...`);
253
- const tokenContract = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS)
254
- .send({
255
- from: admin,
256
- fee: {
257
- paymentMethod,
258
- },
259
- })
260
- .deployed({ timeout: 600 });
349
+ const {
350
+ receipt: { contract: tokenContract },
351
+ } = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
352
+ from: admin,
353
+ fee: {
354
+ paymentMethod,
355
+ },
356
+ wait: { timeout: 600, returnReceipt: true },
357
+ });
261
358
 
262
359
  const tokenAddress = tokenContract.address;
263
360
 
@@ -267,8 +364,7 @@ async function deployTokenAndMint(
267
364
  accounts.map(acc =>
268
365
  TokenContract.at(tokenAddress, wallet)
269
366
  .methods.mint_to_public(acc, mintAmount)
270
- .send({ from: admin, fee: { paymentMethod } })
271
- .wait({ timeout: 600 }),
367
+ .send({ from: admin, fee: { paymentMethod }, wait: { timeout: 600 } }),
272
368
  ),
273
369
  );
274
370
 
@@ -308,17 +404,23 @@ export async function performTransfers({
308
404
 
309
405
  const provenTxs = await Promise.all(txs);
310
406
 
311
- await Promise.all(provenTxs.map(t => t.send().wait({ timeout: 600 })));
407
+ await Promise.all(provenTxs.map(t => t.send({ wait: { timeout: 600 } })));
312
408
 
313
409
  logger.info(`Completed round ${i + 1} / ${rounds}`);
314
410
  }
315
411
  }
316
412
 
413
+ export type WalletWrapper = {
414
+ wallet: TestWallet;
415
+ aztecNode: AztecNode;
416
+ cleanup: () => Promise<void>;
417
+ };
418
+
317
419
  export async function createWalletAndAztecNodeClient(
318
420
  nodeUrl: string,
319
421
  proverEnabled: boolean,
320
422
  logger: Logger,
321
- ): Promise<{ wallet: TestWallet; aztecNode: AztecNode; cleanup: () => Promise<void> }> {
423
+ ): Promise<WalletWrapper> {
322
424
  const aztecNode = createAztecNodeClient(nodeUrl);
323
425
  const [bbConfig, acvmConfig] = await Promise.all([getBBConfig(logger), getACVMConfig(logger)]);
324
426
  const pxeConfig = {
@@ -340,3 +442,42 @@ export async function createWalletAndAztecNodeClient(
340
442
  },
341
443
  };
342
444
  }
445
+
446
+ export type WorkerWalletWrapper = {
447
+ wallet: WorkerWallet;
448
+ aztecNode: AztecNode;
449
+ cleanup: () => Promise<void>;
450
+ };
451
+
452
+ export async function createWorkerWalletClient(
453
+ nodeUrl: string,
454
+ proverEnabled: boolean,
455
+ logger: Logger,
456
+ ): Promise<WorkerWalletWrapper> {
457
+ const aztecNode = createAztecNodeClient(nodeUrl);
458
+ const [bbConfig, acvmConfig] = await Promise.all([getBBConfig(logger), getACVMConfig(logger)]);
459
+
460
+ // Strip cleanup functions — they can't be structured-cloned for worker transfer
461
+ const { cleanup: bbCleanup, ...bbPaths } = bbConfig ?? {};
462
+ const { cleanup: acvmCleanup, ...acvmPaths } = acvmConfig ?? {};
463
+
464
+ const pxeConfig = {
465
+ dataDirectory: undefined,
466
+ dataStoreMapSizeKb: 1024 * 1024,
467
+ ...bbPaths,
468
+ ...acvmPaths,
469
+ proverEnabled,
470
+ };
471
+
472
+ const wallet = await WorkerWallet.create(nodeUrl, pxeConfig);
473
+
474
+ return {
475
+ wallet,
476
+ aztecNode,
477
+ async cleanup() {
478
+ await wallet.stop();
479
+ await bbCleanup?.();
480
+ await acvmCleanup?.();
481
+ },
482
+ };
483
+ }