@aztec/end-to-end 0.0.0-test.1 → 0.0.1-commit.5476d83

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 (174) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +61 -0
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  3. package/dest/bench/client_flows/benchmark.js +261 -0
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +80 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.js +334 -0
  7. package/dest/bench/client_flows/config.d.ts +14 -0
  8. package/dest/bench/client_flows/config.d.ts.map +1 -0
  9. package/dest/bench/client_flows/config.js +106 -0
  10. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  12. package/dest/bench/client_flows/data_extractor.js +77 -0
  13. package/dest/bench/utils.d.ts +12 -38
  14. package/dest/bench/utils.d.ts.map +1 -1
  15. package/dest/bench/utils.js +26 -66
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +21 -13
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +85 -57
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -25
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +50 -70
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts +16 -8
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  24. package/dest/e2e_deploy_contract/deploy_test.js +13 -19
  25. package/dest/e2e_epochs/epochs_test.d.ts +59 -18
  26. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  27. package/dest/e2e_epochs/epochs_test.js +226 -44
  28. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  29. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  30. package/dest/e2e_fees/bridging_race.notest.js +63 -0
  31. package/dest/e2e_fees/fees_test.d.ts +21 -10
  32. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  33. package/dest/e2e_fees/fees_test.js +103 -109
  34. package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
  35. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  36. package/dest/e2e_l1_publisher/write_json.js +58 -0
  37. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  38. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  39. package/dest/e2e_multi_validator/utils.js +214 -0
  40. package/dest/e2e_nested_contract/nested_contract_test.d.ts +10 -7
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  42. package/dest/e2e_nested_contract/nested_contract_test.js +24 -20
  43. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.js +139 -0
  46. package/dest/e2e_p2p/p2p_network.d.ts +275 -23
  47. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  48. package/dest/e2e_p2p/p2p_network.js +184 -131
  49. package/dest/e2e_p2p/shared.d.ts +43 -7
  50. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  51. package/dest/e2e_p2p/shared.js +164 -19
  52. package/dest/e2e_token_contract/token_contract_test.d.ts +12 -6
  53. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  54. package/dest/e2e_token_contract/token_contract_test.js +50 -26
  55. package/dest/fixtures/e2e_prover_test.d.ts +63 -0
  56. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  57. package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +104 -105
  58. package/dest/fixtures/fixtures.d.ts +6 -7
  59. package/dest/fixtures/fixtures.d.ts.map +1 -1
  60. package/dest/fixtures/fixtures.js +4 -3
  61. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  62. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  63. package/dest/fixtures/get_acvm_config.js +2 -14
  64. package/dest/fixtures/get_bb_config.d.ts +2 -2
  65. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  66. package/dest/fixtures/get_bb_config.js +10 -17
  67. package/dest/fixtures/index.d.ts +1 -1
  68. package/dest/fixtures/l1_to_l2_messaging.d.ts +9 -6
  69. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  70. package/dest/fixtures/l1_to_l2_messaging.js +44 -18
  71. package/dest/fixtures/logging.d.ts +1 -1
  72. package/dest/fixtures/setup_l1_contracts.d.ts +476 -5
  73. package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
  74. package/dest/fixtures/setup_l1_contracts.js +4 -4
  75. package/dest/fixtures/setup_p2p_test.d.ts +15 -14
  76. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  77. package/dest/fixtures/setup_p2p_test.js +81 -21
  78. package/dest/fixtures/snapshot_manager.d.ts +17 -9
  79. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  80. package/dest/fixtures/snapshot_manager.js +147 -121
  81. package/dest/fixtures/token_utils.d.ts +10 -4
  82. package/dest/fixtures/token_utils.d.ts.map +1 -1
  83. package/dest/fixtures/token_utils.js +28 -12
  84. package/dest/fixtures/utils.d.ts +524 -40
  85. package/dest/fixtures/utils.d.ts.map +1 -1
  86. package/dest/fixtures/utils.js +464 -369
  87. package/dest/fixtures/web3signer.d.ts +5 -0
  88. package/dest/fixtures/web3signer.d.ts.map +1 -0
  89. package/dest/fixtures/web3signer.js +53 -0
  90. package/dest/fixtures/with_telemetry_utils.d.ts +1 -1
  91. package/dest/index.d.ts +1 -1
  92. package/dest/quality_of_service/alert_checker.d.ts +2 -2
  93. package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
  94. package/dest/shared/cross_chain_test_harness.d.ts +39 -34
  95. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  96. package/dest/shared/cross_chain_test_harness.js +104 -50
  97. package/dest/shared/gas_portal_test_harness.d.ts +29 -31
  98. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  99. package/dest/shared/gas_portal_test_harness.js +51 -30
  100. package/dest/shared/index.d.ts +1 -1
  101. package/dest/shared/jest_setup.d.ts +1 -1
  102. package/dest/shared/jest_setup.js +1 -1
  103. package/dest/shared/submit-transactions.d.ts +6 -4
  104. package/dest/shared/submit-transactions.d.ts.map +1 -1
  105. package/dest/shared/submit-transactions.js +8 -7
  106. package/dest/shared/uniswap_l1_l2.d.ts +14 -12
  107. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  108. package/dest/shared/uniswap_l1_l2.js +146 -116
  109. package/dest/simulators/index.d.ts +1 -1
  110. package/dest/simulators/lending_simulator.d.ts +7 -11
  111. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  112. package/dest/simulators/lending_simulator.js +15 -16
  113. package/dest/simulators/token_simulator.d.ts +6 -3
  114. package/dest/simulators/token_simulator.d.ts.map +1 -1
  115. package/dest/simulators/token_simulator.js +16 -13
  116. package/dest/spartan/setup_test_wallets.d.ts +26 -11
  117. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  118. package/dest/spartan/setup_test_wallets.js +201 -58
  119. package/dest/spartan/utils.d.ts +118 -313
  120. package/dest/spartan/utils.d.ts.map +1 -1
  121. package/dest/spartan/utils.js +472 -135
  122. package/package.json +65 -58
  123. package/src/bench/client_flows/benchmark.ts +341 -0
  124. package/src/bench/client_flows/client_flows_benchmark.ts +447 -0
  125. package/src/bench/client_flows/config.ts +61 -0
  126. package/src/bench/client_flows/data_extractor.ts +89 -0
  127. package/src/bench/utils.ts +22 -76
  128. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
  129. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +65 -106
  130. package/src/e2e_deploy_contract/deploy_test.ts +24 -39
  131. package/src/e2e_epochs/epochs_test.ts +276 -55
  132. package/src/e2e_fees/bridging_race.notest.ts +80 -0
  133. package/src/e2e_fees/fees_test.ts +142 -138
  134. package/src/e2e_l1_publisher/write_json.ts +77 -0
  135. package/src/e2e_multi_validator/utils.ts +258 -0
  136. package/src/e2e_nested_contract/nested_contract_test.ts +29 -19
  137. package/src/e2e_p2p/inactivity_slash_test.ts +182 -0
  138. package/src/e2e_p2p/p2p_network.ts +279 -169
  139. package/src/e2e_p2p/shared.ts +247 -29
  140. package/src/e2e_token_contract/token_contract_test.ts +43 -39
  141. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  142. package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +107 -152
  143. package/src/fixtures/fixtures.ts +4 -3
  144. package/src/fixtures/get_acvm_config.ts +3 -11
  145. package/src/fixtures/get_bb_config.ts +18 -13
  146. package/src/fixtures/l1_to_l2_messaging.ts +53 -23
  147. package/src/fixtures/setup_l1_contracts.ts +6 -7
  148. package/src/fixtures/setup_p2p_test.ts +126 -38
  149. package/src/fixtures/snapshot_manager.ts +187 -139
  150. package/src/fixtures/token_utils.ts +32 -15
  151. package/src/fixtures/utils.ts +580 -434
  152. package/src/fixtures/web3signer.ts +63 -0
  153. package/src/guides/up_quick_start.sh +7 -15
  154. package/src/quality_of_service/alert_checker.ts +1 -1
  155. package/src/shared/cross_chain_test_harness.ts +108 -79
  156. package/src/shared/gas_portal_test_harness.ts +59 -50
  157. package/src/shared/jest_setup.ts +1 -1
  158. package/src/shared/submit-transactions.ts +12 -8
  159. package/src/shared/uniswap_l1_l2.ts +181 -184
  160. package/src/simulators/lending_simulator.ts +14 -15
  161. package/src/simulators/token_simulator.ts +21 -13
  162. package/src/spartan/DEVELOP.md +121 -0
  163. package/src/spartan/setup_test_wallets.ts +251 -93
  164. package/src/spartan/utils.ts +536 -136
  165. package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
  166. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  167. package/dest/sample-dapp/connect.js +0 -12
  168. package/dest/sample-dapp/contracts.js +0 -10
  169. package/dest/sample-dapp/deploy.js +0 -35
  170. package/dest/sample-dapp/index.js +0 -98
  171. package/src/sample-dapp/connect.mjs +0 -16
  172. package/src/sample-dapp/contracts.mjs +0 -14
  173. package/src/sample-dapp/deploy.mjs +0 -40
  174. package/src/sample-dapp/index.mjs +0 -128
@@ -1,20 +1,20 @@
1
- import { getSchnorrWallet } from '@aztec/accounts/schnorr';
2
1
  import type { AztecNodeConfig } from '@aztec/aztec-node';
2
+ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
3
+ import { type Logger, createLogger } from '@aztec/aztec.js/log';
4
+ import type { AztecNode } from '@aztec/aztec.js/node';
5
+ import { CheatCodes } from '@aztec/aztec/testing';
3
6
  import {
4
- type AccountWallet,
5
- AztecAddress,
6
- type AztecNode,
7
- CheatCodes,
8
- type CompleteAddress,
9
- EthAddress,
10
- type Logger,
11
- type PXE,
12
- createLogger,
13
- } from '@aztec/aztec.js';
14
- import { type ViemPublicClient, createL1Clients, deployL1Contract } from '@aztec/ethereum';
15
- import { InboxAbi, OutboxAbi, RollupAbi, TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
7
+ type DeployL1ContractsArgs,
8
+ type DeployL1ContractsReturnType,
9
+ type ExtendedViemWalletClient,
10
+ createExtendedL1Client,
11
+ deployL1Contract,
12
+ } from '@aztec/ethereum';
13
+ import { InboxAbi, OutboxAbi, TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
16
14
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
17
15
  import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
16
+ import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
17
+ import type { TestWallet } from '@aztec/test-wallet/server';
18
18
 
19
19
  import { getContract } from 'viem';
20
20
 
@@ -26,6 +26,7 @@ import {
26
26
  deployAccounts,
27
27
  publicDeployAccounts,
28
28
  } from '../fixtures/snapshot_manager.js';
29
+ import type { SetupOptions } from '../fixtures/utils.js';
29
30
  import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
30
31
 
31
32
  const { E2E_DATA_PATH: dataPath } = process.env;
@@ -33,42 +34,48 @@ const { E2E_DATA_PATH: dataPath } = process.env;
33
34
  export class CrossChainMessagingTest {
34
35
  private snapshotManager: ISnapshotManager;
35
36
  logger: Logger;
36
- wallets: AccountWallet[] = [];
37
- accounts: CompleteAddress[] = [];
38
37
  aztecNode!: AztecNode;
39
- pxe!: PXE;
40
38
  aztecNodeConfig!: AztecNodeConfig;
39
+ aztecNodeAdmin!: AztecNodeAdmin;
40
+ ctx!: SubsystemsContext;
41
41
 
42
- publicClient!: ViemPublicClient | undefined;
42
+ l1Client!: ExtendedViemWalletClient | undefined;
43
43
 
44
- user1Wallet!: AccountWallet;
45
- user2Wallet!: AccountWallet;
44
+ wallet!: TestWallet;
45
+ ownerAddress!: AztecAddress;
46
+ user1Address!: AztecAddress;
47
+ user2Address!: AztecAddress;
46
48
  crossChainTestHarness!: CrossChainTestHarness;
47
49
  ethAccount!: EthAddress;
48
- ownerAddress!: AztecAddress;
49
50
  l2Token!: TokenContract;
50
51
  l2Bridge!: TokenBridgeContract;
51
52
 
52
- rollup!: any; // GetContractReturnType<typeof RollupAbi> | undefined;
53
53
  inbox!: any; // GetContractReturnType<typeof InboxAbi> | undefined;
54
54
  outbox!: any; // GetContractReturnType<typeof OutboxAbi> | undefined;
55
- cheatcodes!: CheatCodes;
55
+ cheatCodes!: CheatCodes;
56
+
57
+ deployL1ContractsValues!: DeployL1ContractsReturnType;
56
58
 
57
- constructor(testName: string) {
59
+ constructor(testName: string, opts: SetupOptions = {}, deployL1ContractsArgs: Partial<DeployL1ContractsArgs> = {}) {
58
60
  this.logger = createLogger(`e2e:e2e_cross_chain_messaging:${testName}`);
59
- this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath);
61
+ this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath, opts, {
62
+ initialValidators: [],
63
+ ...deployL1ContractsArgs,
64
+ });
60
65
  }
61
66
 
62
67
  async assumeProven() {
63
- await this.cheatcodes.rollup.markAsProven(await this.rollup.read.getPendingBlockNumber());
68
+ await this.cheatCodes.rollup.markAsProven();
64
69
  }
65
70
 
66
71
  async setup() {
67
- const { aztecNode, pxe, aztecNodeConfig } = await this.snapshotManager.setup();
68
- this.aztecNode = aztecNode;
69
- this.pxe = pxe;
70
- this.aztecNodeConfig = aztecNodeConfig;
71
- this.cheatcodes = await CheatCodes.create(this.aztecNodeConfig.l1RpcUrls, this.pxe);
72
+ this.ctx = await this.snapshotManager.setup();
73
+ this.aztecNode = this.ctx.aztecNode;
74
+ this.wallet = this.ctx.wallet;
75
+ this.aztecNodeConfig = this.ctx.aztecNodeConfig;
76
+ this.cheatCodes = this.ctx.cheatCodes;
77
+ this.deployL1ContractsValues = this.ctx.deployL1ContractsValues;
78
+ this.aztecNodeAdmin = this.ctx.aztecNode;
72
79
  }
73
80
 
74
81
  snapshot = <T>(
@@ -82,29 +89,18 @@ export class CrossChainMessagingTest {
82
89
  }
83
90
 
84
91
  async applyBaseSnapshots() {
85
- // Note that we are using the same `pxe`, `aztecNodeConfig` and `aztecNode` across all snapshots.
92
+ // Note that we are using the same `wallet`, `aztecNodeConfig` and `aztecNode` across all snapshots.
86
93
  // This is to not have issues with different networks.
87
94
 
88
95
  await this.snapshotManager.snapshot(
89
96
  '3_accounts',
90
97
  deployAccounts(3, this.logger),
91
- async ({ deployedAccounts }, { pxe, aztecNodeConfig, aztecNode, deployL1ContractsValues }) => {
92
- this.wallets = await Promise.all(deployedAccounts.map(a => getSchnorrWallet(pxe, a.address, a.signingKey)));
93
- this.accounts = this.wallets.map(w => w.getCompleteAddress());
94
- this.wallets.forEach((w, i) => this.logger.verbose(`Wallet ${i} address: ${w.getAddress()}`));
95
-
96
- this.rollup = getContract({
97
- address: deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
98
- abi: RollupAbi,
99
- client: deployL1ContractsValues.walletClient,
100
- });
101
-
102
- this.user1Wallet = this.wallets[0];
103
- this.user2Wallet = this.wallets[1];
104
-
105
- this.pxe = pxe;
98
+ ({ deployedAccounts }, { wallet, aztecNodeConfig, aztecNode }) => {
99
+ [this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map(a => a.address);
100
+ this.wallet = wallet;
106
101
  this.aztecNode = aztecNode;
107
102
  this.aztecNodeConfig = aztecNodeConfig;
103
+ return Promise.resolve();
108
104
  },
109
105
  );
110
106
 
@@ -114,107 +110,70 @@ export class CrossChainMessagingTest {
114
110
  // Create the token contract state.
115
111
  // Move this account thing to addAccounts above?
116
112
  this.logger.verbose(`Public deploy accounts...`);
117
- await publicDeployAccounts(this.wallets[0], this.accounts.slice(0, 3));
118
-
119
- const { publicClient, walletClient } = createL1Clients(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
120
-
121
- const underlyingERC20Address = await deployL1Contract(
122
- walletClient,
123
- publicClient,
124
- TestERC20Abi,
125
- TestERC20Bytecode,
126
- ['Underlying', 'UND', walletClient.account.address],
127
- ).then(({ address }) => address);
128
-
129
- const underlyingERC20 = getContract({
130
- address: underlyingERC20Address!.toString(),
131
- abi: TestERC20Abi,
132
- client: walletClient,
133
- });
113
+ await publicDeployAccounts(this.wallet, [this.ownerAddress, this.user1Address, this.user2Address]);
114
+
115
+ this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
134
116
 
135
- // allow anyone to mint
136
- await underlyingERC20.write.setFreeForAll([true], {} as any);
117
+ const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
118
+ 'Underlying',
119
+ 'UND',
120
+ this.l1Client.account.address,
121
+ ]).then(({ address }) => address);
137
122
 
138
123
  this.logger.verbose(`Setting up cross chain harness...`);
139
124
  this.crossChainTestHarness = await CrossChainTestHarness.new(
140
125
  this.aztecNode,
141
- this.pxe,
142
- publicClient,
143
- walletClient,
144
- this.wallets[0],
126
+ this.l1Client,
127
+ this.wallet,
128
+ this.ownerAddress,
145
129
  this.logger,
146
130
  underlyingERC20Address,
147
131
  );
148
132
 
149
133
  this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
150
134
 
151
- return this.toCrossChainContext();
135
+ return this.crossChainTestHarness.toCrossChainContext();
152
136
  },
153
- async crossChainContext => {
154
- this.l2Token = await TokenContract.at(crossChainContext.l2Token, this.user1Wallet);
155
- this.l2Bridge = await TokenBridgeContract.at(crossChainContext.l2Bridge, this.user1Wallet);
137
+ crossChainContext => {
138
+ this.l2Token = TokenContract.at(crossChainContext.l2Token, this.wallet);
139
+ this.l2Bridge = TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
156
140
 
157
141
  // There is an issue with the reviver so we are getting strings sometimes. Working around it here.
158
142
  this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
159
- this.ownerAddress = AztecAddress.fromString(crossChainContext.ownerAddress.toString());
160
143
  const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
161
144
 
162
- const { publicClient, walletClient } = createL1Clients(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
145
+ const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
163
146
 
164
147
  const inbox = getContract({
165
148
  address: this.aztecNodeConfig.l1Contracts.inboxAddress.toString(),
166
149
  abi: InboxAbi,
167
- client: walletClient,
150
+ client: l1Client,
168
151
  });
169
152
  const outbox = getContract({
170
153
  address: this.aztecNodeConfig.l1Contracts.outboxAddress.toString(),
171
154
  abi: OutboxAbi,
172
- client: walletClient,
155
+ client: l1Client,
173
156
  });
174
157
 
175
158
  this.crossChainTestHarness = new CrossChainTestHarness(
176
159
  this.aztecNode,
177
- this.pxe,
178
160
  this.logger,
179
161
  this.l2Token,
180
162
  this.l2Bridge,
181
163
  this.ethAccount,
182
164
  tokenPortalAddress,
183
165
  crossChainContext.underlying,
184
- publicClient,
185
- walletClient,
166
+ l1Client,
186
167
  this.aztecNodeConfig.l1Contracts,
187
- this.user1Wallet,
168
+ this.wallet,
169
+ this.ownerAddress,
188
170
  );
189
171
 
190
- this.publicClient = publicClient;
172
+ this.l1Client = l1Client;
191
173
  this.inbox = inbox;
192
174
  this.outbox = outbox;
175
+ return Promise.resolve();
193
176
  },
194
177
  );
195
178
  }
196
-
197
- toCrossChainContext(): CrossChainContext {
198
- return {
199
- l2Token: this.crossChainTestHarness.l2Token.address,
200
- l2Bridge: this.crossChainTestHarness.l2Bridge.address,
201
- tokenPortal: this.crossChainTestHarness.tokenPortalAddress,
202
- underlying: this.crossChainTestHarness.underlyingERC20Address,
203
- ethAccount: this.crossChainTestHarness.ethAccount,
204
- ownerAddress: this.crossChainTestHarness.ownerAddress,
205
- inbox: this.crossChainTestHarness.l1ContractAddresses.inboxAddress,
206
- outbox: this.crossChainTestHarness.l1ContractAddresses.outboxAddress,
207
- };
208
- }
209
179
  }
210
-
211
- type CrossChainContext = {
212
- l2Token: AztecAddress;
213
- l2Bridge: AztecAddress;
214
- tokenPortal: EthAddress;
215
- underlying: EthAddress;
216
- ethAccount: EthAddress;
217
- ownerAddress: AztecAddress;
218
- inbox: EthAddress;
219
- outbox: EthAddress;
220
- };
@@ -1,19 +1,14 @@
1
- import { getSchnorrWallet } from '@aztec/accounts/schnorr';
2
- import {
3
- type AccountWallet,
4
- type AztecAddress,
5
- type AztecNode,
6
- type ContractArtifact,
7
- type ContractBase,
8
- Fr,
9
- type Logger,
10
- type PXE,
11
- type PublicKeys,
12
- type Wallet,
13
- createLogger,
14
- getContractInstanceFromDeployParams,
15
- } from '@aztec/aztec.js';
16
- import type { StatefulTestContract } from '@aztec/noir-contracts.js/StatefulTest';
1
+ import type { ContractArtifact } from '@aztec/aztec.js/abi';
2
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
3
+ import { type ContractBase, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
4
+ import { Fr } from '@aztec/aztec.js/fields';
5
+ import type { PublicKeys } from '@aztec/aztec.js/keys';
6
+ import { type Logger, createLogger } from '@aztec/aztec.js/log';
7
+ import type { AztecNode } from '@aztec/aztec.js/node';
8
+ import type { Wallet } from '@aztec/aztec.js/wallet';
9
+ import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
10
+ import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
11
+ import type { TestWallet } from '@aztec/test-wallet/server';
17
12
 
18
13
  import { type ISnapshotManager, createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
19
14
 
@@ -21,12 +16,11 @@ const { E2E_DATA_PATH: dataPath } = process.env;
21
16
 
22
17
  export class DeployTest {
23
18
  private snapshotManager: ISnapshotManager;
24
- private wallets: AccountWallet[] = [];
25
-
26
19
  public logger: Logger;
27
- public pxe!: PXE;
28
- public wallet!: AccountWallet;
20
+ public wallet!: TestWallet;
21
+ public defaultAccountAddress!: AztecAddress;
29
22
  public aztecNode!: AztecNode;
23
+ public aztecNodeAdmin!: AztecNodeAdmin;
30
24
 
31
25
  constructor(testName: string) {
32
26
  this.logger = createLogger(`e2e:e2e_deploy_contract:${testName}`);
@@ -36,7 +30,8 @@ export class DeployTest {
36
30
  async setup() {
37
31
  await this.applyInitialAccountSnapshot();
38
32
  const context = await this.snapshotManager.setup();
39
- ({ pxe: this.pxe, aztecNode: this.aztecNode } = context);
33
+ ({ aztecNode: this.aztecNode, wallet: this.wallet } = context);
34
+ this.aztecNodeAdmin = context.aztecNode;
40
35
  return this;
41
36
  }
42
37
 
@@ -45,15 +40,10 @@ export class DeployTest {
45
40
  }
46
41
 
47
42
  private async applyInitialAccountSnapshot() {
48
- await this.snapshotManager.snapshot(
49
- 'initial_account',
50
- deployAccounts(1, this.logger),
51
- async ({ deployedAccounts }, { pxe }) => {
52
- this.wallets = await Promise.all(deployedAccounts.map(a => getSchnorrWallet(pxe, a.address, a.signingKey)));
53
- this.wallets.forEach((w, i) => this.logger.verbose(`Wallet ${i} address: ${w.getAddress()}`));
54
- this.wallet = this.wallets[0];
55
- },
56
- );
43
+ await this.snapshotManager.snapshot('initial_account', deployAccounts(1, this.logger), ({ deployedAccounts }) => {
44
+ this.defaultAccountAddress = deployedAccounts[0].address;
45
+ return Promise.resolve();
46
+ });
57
47
  }
58
48
 
59
49
  async registerContract<T extends ContractBase>(
@@ -68,26 +58,21 @@ export class DeployTest {
68
58
  } = {},
69
59
  ): Promise<T> {
70
60
  const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
71
- const instance = await getContractInstanceFromDeployParams(contractArtifact.artifact, {
61
+ const instance = await getContractInstanceFromInstantiationParams(contractArtifact.artifact, {
72
62
  constructorArgs: initArgs ?? [],
73
63
  constructorArtifact: constructorName,
74
- salt,
64
+ salt: salt ?? Fr.random(),
75
65
  publicKeys,
76
66
  deployer,
77
67
  });
78
- await wallet.registerContract({ artifact: contractArtifact.artifact, instance });
68
+ await wallet.registerContract(instance, contractArtifact.artifact);
79
69
  return contractArtifact.at(instance.address, wallet);
80
70
  }
81
-
82
- async registerRandomAccount(): Promise<AztecAddress> {
83
- const completeAddress = await this.pxe.registerAccount(Fr.random(), Fr.random());
84
- return completeAddress.address;
85
- }
86
71
  }
87
72
 
88
73
  export type StatefulContractCtorArgs = Parameters<StatefulTestContract['methods']['constructor']>;
89
74
 
90
75
  export type ContractArtifactClass<T extends ContractBase> = {
91
- at(address: AztecAddress, wallet: Wallet): Promise<T>;
76
+ at(address: AztecAddress, wallet: Wallet): T;
92
77
  artifact: ContractArtifact;
93
78
  };