@aztec/end-to-end 0.0.1-commit.fffb133c → 0.0.1-dev

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 (201) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts +2 -2
  3. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.js +21 -14
  5. package/dest/bench/client_flows/config.d.ts +2 -2
  6. package/dest/bench/client_flows/config.d.ts.map +1 -1
  7. package/dest/bench/client_flows/config.js +18 -0
  8. package/dest/bench/utils.d.ts +1 -1
  9. package/dest/bench/utils.d.ts.map +1 -1
  10. package/dest/bench/utils.js +6 -3
  11. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -3
  12. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  13. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +23 -13
  14. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +2 -2
  15. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  16. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +3 -2
  17. package/dest/e2e_deploy_contract/deploy_test.d.ts +2 -2
  18. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  19. package/dest/e2e_epochs/epochs_test.d.ts +17 -7
  20. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  21. package/dest/e2e_epochs/epochs_test.js +89 -42
  22. package/dest/e2e_fees/fees_test.d.ts +2 -2
  23. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  24. package/dest/e2e_fees/fees_test.js +19 -12
  25. package/dest/e2e_l1_publisher/write_json.d.ts +3 -2
  26. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  27. package/dest/e2e_l1_publisher/write_json.js +1 -7
  28. package/dest/e2e_nested_contract/nested_contract_test.d.ts +1 -1
  29. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  30. package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
  31. package/dest/e2e_p2p/inactivity_slash_test.d.ts +1 -1
  32. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  33. package/dest/e2e_p2p/inactivity_slash_test.js +1 -0
  34. package/dest/e2e_p2p/p2p_network.d.ts +4 -3
  35. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  36. package/dest/e2e_p2p/p2p_network.js +23 -6
  37. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  38. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  39. package/dest/e2e_p2p/reqresp/utils.js +177 -0
  40. package/dest/e2e_p2p/shared.d.ts +34 -2
  41. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  42. package/dest/e2e_p2p/shared.js +63 -5
  43. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  44. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  45. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  46. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  47. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  48. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  49. package/dest/e2e_token_contract/token_contract_test.d.ts +4 -2
  50. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  51. package/dest/e2e_token_contract/token_contract_test.js +19 -9
  52. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  53. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  54. package/dest/fixtures/authwit_proxy.js +34 -0
  55. package/dest/fixtures/e2e_prover_test.d.ts +4 -4
  56. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  57. package/dest/fixtures/e2e_prover_test.js +34 -41
  58. package/dest/fixtures/fixtures.d.ts +5 -1
  59. package/dest/fixtures/fixtures.d.ts.map +1 -1
  60. package/dest/fixtures/fixtures.js +6 -0
  61. package/dest/fixtures/ha_setup.d.ts +71 -0
  62. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  63. package/dest/fixtures/ha_setup.js +116 -0
  64. package/dest/fixtures/index.d.ts +2 -1
  65. package/dest/fixtures/index.d.ts.map +1 -1
  66. package/dest/fixtures/index.js +1 -0
  67. package/dest/fixtures/setup.d.ts +53 -31
  68. package/dest/fixtures/setup.d.ts.map +1 -1
  69. package/dest/fixtures/setup.js +117 -168
  70. package/dest/fixtures/setup_p2p_test.d.ts +16 -9
  71. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  72. package/dest/fixtures/setup_p2p_test.js +40 -29
  73. package/dest/fixtures/token_utils.d.ts +2 -2
  74. package/dest/fixtures/token_utils.d.ts.map +1 -1
  75. package/dest/fixtures/token_utils.js +5 -4
  76. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  77. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  78. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  79. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  80. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  81. package/dest/forward-compatibility/wallet_service.js +109 -0
  82. package/dest/install_legacy_contracts.d.cts +10 -0
  83. package/dest/install_legacy_contracts.d.cts.map +1 -0
  84. package/dest/legacy-jest-resolver.d.cts +3 -0
  85. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  86. package/dest/shared/cross_chain_test_harness.d.ts +1 -1
  87. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  88. package/dest/shared/cross_chain_test_harness.js +13 -13
  89. package/dest/shared/gas_portal_test_harness.js +3 -3
  90. package/dest/shared/index.d.ts +2 -1
  91. package/dest/shared/index.d.ts.map +1 -1
  92. package/dest/shared/index.js +1 -0
  93. package/dest/shared/mock_state_view.d.ts +86 -0
  94. package/dest/shared/mock_state_view.d.ts.map +1 -0
  95. package/dest/shared/mock_state_view.js +186 -0
  96. package/dest/shared/submit-transactions.d.ts +2 -2
  97. package/dest/shared/submit-transactions.d.ts.map +1 -1
  98. package/dest/shared/submit-transactions.js +1 -1
  99. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  100. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  101. package/dest/shared/uniswap_l1_l2.js +16 -21
  102. package/dest/simulators/lending_simulator.d.ts +1 -1
  103. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  104. package/dest/simulators/lending_simulator.js +4 -4
  105. package/dest/simulators/token_simulator.d.ts +1 -1
  106. package/dest/simulators/token_simulator.d.ts.map +1 -1
  107. package/dest/simulators/token_simulator.js +3 -24
  108. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  109. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  110. package/dest/spartan/setup_test_wallets.js +59 -16
  111. package/dest/spartan/tx_metrics.d.ts +35 -1
  112. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  113. package/dest/spartan/tx_metrics.js +150 -0
  114. package/dest/spartan/utils/bot.d.ts +3 -2
  115. package/dest/spartan/utils/bot.d.ts.map +1 -1
  116. package/dest/spartan/utils/bot.js +2 -1
  117. package/dest/spartan/utils/config.d.ts +4 -1
  118. package/dest/spartan/utils/config.d.ts.map +1 -1
  119. package/dest/spartan/utils/config.js +2 -1
  120. package/dest/spartan/utils/index.d.ts +5 -4
  121. package/dest/spartan/utils/index.d.ts.map +1 -1
  122. package/dest/spartan/utils/index.js +4 -2
  123. package/dest/spartan/utils/k8s.d.ts +31 -1
  124. package/dest/spartan/utils/k8s.d.ts.map +1 -1
  125. package/dest/spartan/utils/k8s.js +124 -0
  126. package/dest/spartan/utils/nodes.d.ts +11 -1
  127. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  128. package/dest/spartan/utils/nodes.js +198 -27
  129. package/dest/spartan/utils/scripts.d.ts +18 -4
  130. package/dest/spartan/utils/scripts.d.ts.map +1 -1
  131. package/dest/spartan/utils/scripts.js +19 -4
  132. package/dest/test-wallet/test_wallet.d.ts +84 -0
  133. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  134. package/dest/test-wallet/test_wallet.js +253 -0
  135. package/dest/test-wallet/utils.d.ts +41 -0
  136. package/dest/test-wallet/utils.d.ts.map +1 -0
  137. package/dest/test-wallet/utils.js +66 -0
  138. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  139. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  140. package/dest/test-wallet/wallet_worker_script.js +48 -0
  141. package/dest/test-wallet/worker_wallet.d.ts +52 -0
  142. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  143. package/dest/test-wallet/worker_wallet.js +151 -0
  144. package/dest/test-wallet/worker_wallet_schema.d.ts +277 -0
  145. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  146. package/dest/test-wallet/worker_wallet_schema.js +10 -0
  147. package/package.json +48 -40
  148. package/src/bench/client_flows/client_flows_benchmark.ts +44 -40
  149. package/src/bench/client_flows/config.ts +9 -1
  150. package/src/bench/utils.ts +8 -3
  151. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +31 -21
  152. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +7 -8
  153. package/src/e2e_deploy_contract/deploy_test.ts +3 -3
  154. package/src/e2e_epochs/epochs_test.ts +113 -70
  155. package/src/e2e_fees/bridging_race.notest.ts +1 -1
  156. package/src/e2e_fees/fees_test.ts +21 -29
  157. package/src/e2e_l1_publisher/write_json.ts +1 -6
  158. package/src/e2e_nested_contract/nested_contract_test.ts +7 -5
  159. package/src/e2e_p2p/inactivity_slash_test.ts +5 -4
  160. package/src/e2e_p2p/p2p_network.ts +35 -9
  161. package/src/e2e_p2p/reqresp/utils.ts +235 -0
  162. package/src/e2e_p2p/shared.ts +110 -5
  163. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  164. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  165. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  166. package/src/e2e_token_contract/token_contract_test.ts +26 -9
  167. package/src/fixtures/authwit_proxy.ts +54 -0
  168. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  169. package/src/fixtures/e2e_prover_test.ts +40 -44
  170. package/src/fixtures/fixtures.ts +10 -0
  171. package/src/fixtures/ha_setup.ts +186 -0
  172. package/src/fixtures/index.ts +1 -0
  173. package/src/fixtures/setup.ts +161 -228
  174. package/src/fixtures/setup_p2p_test.ts +40 -44
  175. package/src/fixtures/token_utils.ts +6 -3
  176. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  177. package/src/forward-compatibility/wallet_service.ts +104 -0
  178. package/src/guides/up_quick_start.sh +3 -5
  179. package/src/install_legacy_contracts.cjs +75 -0
  180. package/src/legacy-jest-resolver.cjs +112 -0
  181. package/src/shared/cross_chain_test_harness.ts +13 -9
  182. package/src/shared/gas_portal_test_harness.ts +1 -2
  183. package/src/shared/index.ts +1 -0
  184. package/src/shared/mock_state_view.ts +188 -0
  185. package/src/shared/submit-transactions.ts +6 -2
  186. package/src/shared/uniswap_l1_l2.ts +38 -37
  187. package/src/simulators/lending_simulator.ts +8 -4
  188. package/src/simulators/token_simulator.ts +6 -30
  189. package/src/spartan/setup_test_wallets.ts +104 -18
  190. package/src/spartan/tx_metrics.ts +126 -0
  191. package/src/spartan/utils/bot.ts +4 -1
  192. package/src/spartan/utils/config.ts +1 -0
  193. package/src/spartan/utils/index.ts +7 -1
  194. package/src/spartan/utils/k8s.ts +160 -0
  195. package/src/spartan/utils/nodes.ts +239 -24
  196. package/src/spartan/utils/scripts.ts +43 -7
  197. package/src/test-wallet/test_wallet.ts +355 -0
  198. package/src/test-wallet/utils.ts +107 -0
  199. package/src/test-wallet/wallet_worker_script.ts +60 -0
  200. package/src/test-wallet/worker_wallet.ts +214 -0
  201. package/src/test-wallet/worker_wallet_schema.ts +13 -0
@@ -1,10 +1,11 @@
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
1
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
3
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
3
4
  import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
4
5
  import { type Logger, createLogger } from '@aztec/aztec.js/log';
5
6
  import type { AztecNode } from '@aztec/aztec.js/node';
6
7
  import type { Wallet } from '@aztec/aztec.js/wallet';
7
- import { CheatCodes } from '@aztec/aztec/testing';
8
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
8
9
  import { createExtendedL1Client } from '@aztec/ethereum/client';
9
10
  import { RollupContract } from '@aztec/ethereum/contracts';
10
11
  import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
@@ -26,7 +27,6 @@ import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
26
27
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
27
28
  import { GasSettings } from '@aztec/stdlib/gas';
28
29
  import { deriveSigningKey } from '@aztec/stdlib/keys';
29
- import { TestWallet } from '@aztec/test-wallet/server';
30
30
 
31
31
  import { MNEMONIC } from '../../fixtures/fixtures.js';
32
32
  import { type EndToEndContext, type SetupOptions, deployAccounts, setup, teardown } from '../../fixtures/setup.js';
@@ -37,6 +37,7 @@ import {
37
37
  FeeJuicePortalTestingHarnessFactory,
38
38
  type GasBridgingTestHarness,
39
39
  } from '../../shared/gas_portal_test_harness.js';
40
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
40
41
  import { ProxyLogger } from './benchmark.js';
41
42
  import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
42
43
 
@@ -130,18 +131,21 @@ export class ClientFlowsBenchmark {
130
131
 
131
132
  async setup() {
132
133
  this.logger.info('Setting up subsystems from fresh');
134
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
135
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
133
136
  this.context = await setup(0, {
134
137
  ...this.setupOptions,
135
138
  fundSponsoredFPC: true,
136
139
  skipAccountDeployment: true,
137
140
  l1ContractsArgs: this.setupOptions,
141
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
138
142
  });
139
143
  await this.applyBaseSetup();
140
144
 
141
- await this.context.aztecNodeService!.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
145
+ await this.context.aztecNodeService.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
142
146
 
143
147
  const rollupContract = RollupContract.getFromConfig(this.context.config);
144
- this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider!, this.logger, 200).start();
148
+ this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
145
149
 
146
150
  return this;
147
151
  }
@@ -161,15 +165,15 @@ export class ClientFlowsBenchmark {
161
165
 
162
166
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
163
167
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
164
- const balanceBefore = await this.bananaCoin.methods
168
+ const { result: balanceBefore } = await this.bananaCoin.methods
165
169
  .balance_of_private(address)
166
- .simulate({ from: this.adminAddress });
170
+ .simulate({ from: address });
167
171
 
168
172
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
169
173
 
170
- const balanceAfter = await this.bananaCoin.methods
174
+ const { result: balanceAfter } = await this.bananaCoin.methods
171
175
  .balance_of_private(address)
172
- .simulate({ from: this.adminAddress });
176
+ .simulate({ from: address });
173
177
  expect(balanceAfter).toEqual(balanceBefore + amount);
174
178
  }
175
179
 
@@ -207,7 +211,7 @@ export class ClientFlowsBenchmark {
207
211
  const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
208
212
 
209
213
  this.adminWallet = this.context.wallet;
210
- this.aztecNode = this.context.aztecNodeService!;
214
+ this.aztecNode = this.context.aztecNodeService;
211
215
  this.cheatCodes = this.context.cheatCodes;
212
216
 
213
217
  this.adminAddress = adminAddress;
@@ -235,8 +239,8 @@ export class ClientFlowsBenchmark {
235
239
  this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
236
240
 
237
241
  this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
238
- aztecNode: this.context.aztecNodeService!,
239
- aztecNodeAdmin: this.context.aztecNodeService!,
242
+ aztecNode: this.context.aztecNodeService,
243
+ aztecNodeAdmin: this.context.aztecNodeService,
240
244
  l1Client: this.context.deployL1ContractsValues.l1Client,
241
245
  wallet: this.adminWallet,
242
246
  logger: this.logger,
@@ -245,13 +249,12 @@ export class ClientFlowsBenchmark {
245
249
 
246
250
  async applyDeployBananaToken() {
247
251
  this.logger.info('Applying banana token deployment');
248
- const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(
249
- this.adminWallet,
250
- this.adminAddress,
251
- 'BC',
252
- 'BC',
253
- 18n,
254
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
252
+ const {
253
+ receipt: { contract: bananaCoin, instance: bananaCoinInstance },
254
+ } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
255
+ from: this.adminAddress,
256
+ wait: { returnReceipt: true },
257
+ });
255
258
  this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
256
259
  this.bananaCoin = bananaCoin;
257
260
  this.bananaCoinInstance = bananaCoinInstance;
@@ -259,13 +262,12 @@ export class ClientFlowsBenchmark {
259
262
 
260
263
  async applyDeployCandyBarToken() {
261
264
  this.logger.info('Applying candy bar token deployment');
262
- const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(
263
- this.adminWallet,
264
- this.adminAddress,
265
- 'CBC',
266
- 'CBC',
267
- 18n,
268
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
265
+ const {
266
+ receipt: { contract: candyBarCoin, instance: candyBarCoinInstance },
267
+ } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
268
+ from: this.adminAddress,
269
+ wait: { returnReceipt: true },
270
+ });
269
271
  this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
270
272
  this.candyBarCoin = candyBarCoin;
271
273
  this.candyBarCoinInstance = candyBarCoinInstance;
@@ -277,11 +279,12 @@ export class ClientFlowsBenchmark {
277
279
  expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
278
280
 
279
281
  const bananaCoin = this.bananaCoin;
280
- const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(
281
- this.adminWallet,
282
- bananaCoin.address,
283
- this.adminAddress,
284
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
282
+ const {
283
+ receipt: { contract: bananaFPC, instance: bananaFPCInstance },
284
+ } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
285
+ from: this.adminAddress,
286
+ wait: { returnReceipt: true },
287
+ });
285
288
 
286
289
  this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
287
290
 
@@ -330,7 +333,7 @@ export class ClientFlowsBenchmark {
330
333
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
331
334
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
332
335
  await behchysDeployMethod.send({
333
- from: AztecAddress.ZERO,
336
+ from: NO_FROM,
334
337
  fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
335
338
  });
336
339
  // Register benchy on the user's Wallet, where we're going to be interacting from
@@ -344,14 +347,15 @@ export class ClientFlowsBenchmark {
344
347
 
345
348
  public async applyDeployAmm() {
346
349
  this.logger.info('Applying AMM deployment');
347
- const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(
348
- this.adminWallet,
349
- this.adminAddress,
350
- 'LPT',
351
- 'LPT',
352
- 18n,
353
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
354
- const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
350
+ const {
351
+ receipt: { contract: liquidityToken, instance: liquidityTokenInstance },
352
+ } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
353
+ from: this.adminAddress,
354
+ wait: { returnReceipt: true },
355
+ });
356
+ const {
357
+ receipt: { contract: amm, instance: ammInstance },
358
+ } = await AMMContract.deploy(
355
359
  this.adminWallet,
356
360
  this.bananaCoin.address,
357
361
  this.candyBarCoin.address,
@@ -374,7 +378,7 @@ export class ClientFlowsBenchmark {
374
378
  // The private fee paying method assembled on the app side requires knowledge of the maximum
375
379
  // fee the user is willing to pay
376
380
  const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
377
- const gasSettings = GasSettings.default({ maxFeesPerGas });
381
+ const gasSettings = GasSettings.fallback({ maxFeesPerGas });
378
382
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
379
383
  }
380
384
 
@@ -6,7 +6,7 @@ export type ClientFlowConfig = {
6
6
  recursions?: number[];
7
7
  };
8
8
 
9
- type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm';
9
+ type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm' | 'storageProof';
10
10
 
11
11
  export type ClientFlowsConfig = {
12
12
  [key in ClientFlows]: ClientFlowConfig;
@@ -34,6 +34,10 @@ export const KEY_FLOWS_CONFIG: ClientFlowsConfig = {
34
34
  feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
35
35
  recursions: [0, 1],
36
36
  },
37
+ storageProof: {
38
+ accounts: ['ecdsar1'],
39
+ feePaymentMethods: ['sponsored_fpc'],
40
+ },
37
41
  };
38
42
 
39
43
  export const FULL_FLOWS_CONFIG: ClientFlowsConfig = {
@@ -58,4 +62,8 @@ export const FULL_FLOWS_CONFIG: ClientFlowsConfig = {
58
62
  feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
59
63
  recursions: [0, 1, 2],
60
64
  },
65
+ storageProof: {
66
+ accounts: ['ecdsar1', 'schnorr'],
67
+ feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
68
+ },
61
69
  };
@@ -25,10 +25,10 @@ export async function benchmarkSetup(
25
25
  ) {
26
26
  const context = await setup(1, { ...opts, telemetryConfig: { benchmark: true } });
27
27
  const defaultAccountAddress = context.accounts[0];
28
- const contract = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
28
+ const { contract } = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
29
29
  context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
30
30
  const sequencer = (context.aztecNode as AztecNodeService).getSequencer()!;
31
- const telemetry = context.telemetryClient! as BenchmarkTelemetryClient;
31
+ const telemetry = context.telemetryClient as BenchmarkTelemetryClient;
32
32
  context.logger.warn(`Cleared benchmark data points from setup`);
33
33
  telemetry.clear();
34
34
  const origTeardown = context.teardown.bind(context);
@@ -149,7 +149,12 @@ export async function sendTxs(
149
149
  context.logger.info(`Creating ${txCount} txs`);
150
150
  const [from] = context.accounts;
151
151
  context.logger.info(`Sending ${txCount} txs`);
152
- return Promise.all(calls.map(call => call.send({ from, wait: NO_WAIT })));
152
+ return Promise.all(
153
+ calls.map(async call => {
154
+ const { txHash } = await call.send({ from, wait: NO_WAIT });
155
+ return txHash;
156
+ }),
157
+ );
153
158
  }
154
159
 
155
160
  export async function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
@@ -7,14 +7,16 @@ import type { TxHash } from '@aztec/aztec.js/tx';
7
7
  import type { CheatCodes } from '@aztec/aztec/testing';
8
8
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
9
9
  import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
10
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
10
11
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
11
12
  import type { SequencerClient } from '@aztec/sequencer-client';
12
- import type { TestWallet } from '@aztec/test-wallet/server';
13
+ import type { AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
13
14
 
14
15
  import { jest } from '@jest/globals';
15
16
 
16
17
  import { type EndToEndContext, deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
17
18
  import { TokenSimulator } from '../simulators/token_simulator.js';
19
+ import type { TestWallet } from '../test-wallet/test_wallet.js';
18
20
 
19
21
  export class Role {
20
22
  private isAdmin = false;
@@ -53,9 +55,10 @@ export class BlacklistTokenContractTest {
53
55
  asset!: TokenBlacklistContract;
54
56
  tokenSim!: TokenSimulator;
55
57
  badAccount!: InvalidAccountContract;
58
+ authwitProxy!: GenericProxyContract;
56
59
  cheatCodes!: CheatCodes;
57
60
  sequencer!: SequencerClient;
58
- aztecNode!: AztecNode;
61
+ aztecNode!: AztecNode & AztecNodeDebug;
59
62
 
60
63
  adminAddress!: AztecAddress;
61
64
  otherAddress!: AztecAddress;
@@ -66,11 +69,7 @@ export class BlacklistTokenContractTest {
66
69
  }
67
70
 
68
71
  async crossTimestampOfChange() {
69
- await this.cheatCodes.warpL2TimeAtLeastBy(
70
- this.sequencer,
71
- this.aztecNode,
72
- BlacklistTokenContractTest.CHANGE_ROLES_DELAY,
73
- );
72
+ await this.cheatCodes.warpL2TimeAtLeastBy(this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
74
73
  }
75
74
 
76
75
  /**
@@ -92,7 +91,7 @@ export class BlacklistTokenContractTest {
92
91
  });
93
92
 
94
93
  this.cheatCodes = this.context.cheatCodes;
95
- this.aztecNode = this.context.aztecNodeService!;
94
+ this.aztecNode = this.context.aztecNodeService;
96
95
  this.sequencer = this.context.sequencer!;
97
96
  this.wallet = this.context.wallet;
98
97
  this.adminAddress = deployedAccounts[0].address;
@@ -105,15 +104,26 @@ export class BlacklistTokenContractTest {
105
104
  await publicDeployAccounts(this.wallet, [this.adminAddress, this.otherAddress, this.blacklistedAddress]);
106
105
 
107
106
  this.logger.verbose(`Deploying TokenContract...`);
108
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
107
+ ({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
109
108
  from: this.adminAddress,
110
- });
109
+ }));
111
110
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
112
111
 
113
112
  this.logger.verbose(`Deploying bad account...`);
114
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({ from: this.adminAddress });
113
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
114
+ from: this.adminAddress,
115
+ }));
115
116
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
116
117
 
118
+ // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
119
+ // (so their notes are in scope), but msg_sender in the target must differ from the note owner
120
+ // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
121
+ this.logger.verbose(`Deploying generic proxy...`);
122
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
123
+ from: this.adminAddress,
124
+ }));
125
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
126
+
117
127
  await this.crossTimestampOfChange();
118
128
 
119
129
  this.tokenSim = new TokenSimulator(
@@ -124,9 +134,9 @@ export class BlacklistTokenContractTest {
124
134
  [this.adminAddress, this.otherAddress, this.blacklistedAddress],
125
135
  );
126
136
 
127
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
128
- new Role().withAdmin().toNoirStruct(),
129
- );
137
+ expect(
138
+ (await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
139
+ ).toEqual(new Role().withAdmin().toNoirStruct());
130
140
  }
131
141
 
132
142
  async setup() {
@@ -180,9 +190,9 @@ export class BlacklistTokenContractTest {
180
190
 
181
191
  await this.crossTimestampOfChange();
182
192
 
183
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
184
- adminMinterRole.toNoirStruct(),
185
- );
193
+ expect(
194
+ (await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
195
+ ).toEqual(adminMinterRole.toNoirStruct());
186
196
 
187
197
  this.logger.verbose(`Minting ${amount} publicly...`);
188
198
  await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress });
@@ -190,7 +200,7 @@ export class BlacklistTokenContractTest {
190
200
  this.logger.verbose(`Minting ${amount} privately...`);
191
201
  const secret = Fr.random();
192
202
  const secretHash = await computeSecretHash(secret);
193
- const receipt = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
203
+ const { receipt } = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
194
204
 
195
205
  await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
196
206
  await asset.methods.redeem_shield(this.adminAddress, amount, secret).send({ from: this.adminAddress });
@@ -198,20 +208,20 @@ export class BlacklistTokenContractTest {
198
208
 
199
209
  tokenSim.mintPublic(this.adminAddress, amount);
200
210
 
201
- const publicBalance = await asset.methods
211
+ const { result: publicBalance } = await asset.methods
202
212
  .balance_of_public(this.adminAddress)
203
213
  .simulate({ from: this.adminAddress });
204
214
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
205
215
  expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
206
216
 
207
217
  tokenSim.mintPrivate(this.adminAddress, amount);
208
- const privateBalance = await asset.methods
218
+ const { result: privateBalance } = await asset.methods
209
219
  .balance_of_private(this.adminAddress)
210
220
  .simulate({ from: this.adminAddress });
211
221
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
212
222
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
213
223
 
214
- const totalSupply = await asset.methods.total_supply().simulate({ from: this.adminAddress });
224
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({ from: this.adminAddress });
215
225
  this.logger.verbose(`Total supply: ${totalSupply}`);
216
226
  expect(totalSupply).toEqual(tokenSim.totalSupply);
217
227
  }
@@ -13,13 +13,12 @@ import type {
13
13
  } from '@aztec/ethereum/deploy-aztec-l1-contracts';
14
14
  import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
15
15
  import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
16
- import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
16
+ import { EpochNumber } from '@aztec/foundation/branded-types';
17
17
  import { sleep } from '@aztec/foundation/sleep';
18
18
  import { TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
19
19
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
20
20
  import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
21
21
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
22
- import type { TestWallet } from '@aztec/test-wallet/server';
23
22
 
24
23
  import { MNEMONIC } from '../fixtures/fixtures.js';
25
24
  import {
@@ -31,6 +30,7 @@ import {
31
30
  teardown,
32
31
  } from '../fixtures/setup.js';
33
32
  import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
33
+ import type { TestWallet } from '../test-wallet/test_wallet.js';
34
34
 
35
35
  export class CrossChainMessagingTest {
36
36
  private requireEpochProven: boolean;
@@ -86,9 +86,8 @@ export class CrossChainMessagingTest {
86
86
  }
87
87
 
88
88
  async advanceToEpochProven(l2TxReceipt: TxReceipt): Promise<EpochNumber> {
89
- const epoch = await this.rollup.getEpochNumberForCheckpoint(
90
- CheckpointNumber.fromBlockNumber(l2TxReceipt.blockNumber!),
91
- );
89
+ const block = await this.aztecNode.getBlock(l2TxReceipt.blockNumber!);
90
+ const epoch = await this.rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
92
91
  // Warp to the next epoch.
93
92
  await this.cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
94
93
  // Wait for the tx to be proven.
@@ -110,16 +109,16 @@ export class CrossChainMessagingTest {
110
109
 
111
110
  async applyBaseSetup() {
112
111
  // Set up base context fields
113
- this.aztecNode = this.context.aztecNodeService!;
112
+ this.aztecNode = this.context.aztecNodeService;
114
113
  this.wallet = this.context.wallet;
115
114
  this.aztecNodeConfig = this.context.config;
116
115
  this.cheatCodes = this.context.cheatCodes;
117
116
  this.deployL1ContractsValues = this.context.deployL1ContractsValues;
118
- this.aztecNodeAdmin = this.context.aztecNodeService!;
117
+ this.aztecNodeAdmin = this.context.aztecNodeService;
119
118
 
120
119
  if (this.requireEpochProven) {
121
120
  // Turn off the watcher to prevent it from keep marking blocks as proven.
122
- this.context.watcher!.setIsMarkingAsProven(false);
121
+ this.context.watcher.setIsMarkingAsProven(false);
123
122
  }
124
123
 
125
124
  // Deploy 3 accounts
@@ -8,9 +8,9 @@ import type { AztecNode } from '@aztec/aztec.js/node';
8
8
  import type { Wallet } from '@aztec/aztec.js/wallet';
9
9
  import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
10
10
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
11
- import type { TestWallet } from '@aztec/test-wallet/server';
12
11
 
13
12
  import { type EndToEndContext, deployAccounts, setup, teardown } from '../fixtures/setup.js';
13
+ import type { TestWallet } from '../test-wallet/test_wallet.js';
14
14
 
15
15
  export class DeployTest {
16
16
  public context!: EndToEndContext;
@@ -30,9 +30,9 @@ export class DeployTest {
30
30
  fundSponsoredFPC: true,
31
31
  skipAccountDeployment: true,
32
32
  });
33
- this.aztecNode = this.context.aztecNodeService!;
33
+ this.aztecNode = this.context.aztecNodeService;
34
34
  this.wallet = this.context.wallet;
35
- this.aztecNodeAdmin = this.context.aztecNodeService!;
35
+ this.aztecNodeAdmin = this.context.aztecNodeService;
36
36
  await this.applyInitialAccount();
37
37
  return this;
38
38
  }