@aztec/end-to-end 0.82.2 → 0.82.3-nightly.20250330

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 (44) hide show
  1. package/dest/bench/client_flows/client_flows_benchmark.d.ts +52 -0
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  3. package/dest/bench/client_flows/client_flows_benchmark.js +236 -0
  4. package/dest/bench/client_flows/data_extractor.d.ts +23 -0
  5. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  6. package/dest/bench/client_flows/data_extractor.js +199 -0
  7. package/dest/bench/utils.d.ts +0 -12
  8. package/dest/bench/utils.d.ts.map +1 -1
  9. package/dest/bench/utils.js +0 -26
  10. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -12
  11. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  12. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +1 -13
  13. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  14. package/dest/e2e_fees/fees_test.js +1 -10
  15. package/dest/e2e_p2p/p2p_network.d.ts +5 -0
  16. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  17. package/dest/e2e_p2p/p2p_network.js +12 -3
  18. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  19. package/dest/e2e_p2p/shared.js +1 -0
  20. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  21. package/dest/fixtures/snapshot_manager.js +3 -1
  22. package/dest/fixtures/token_utils.d.ts +2 -1
  23. package/dest/fixtures/token_utils.d.ts.map +1 -1
  24. package/dest/fixtures/token_utils.js +14 -1
  25. package/dest/sample-dapp/contracts.js +4 -4
  26. package/dest/shared/capture_private_execution_steps.d.ts +2 -2
  27. package/dest/shared/capture_private_execution_steps.d.ts.map +1 -1
  28. package/dest/shared/capture_private_execution_steps.js +24 -6
  29. package/dest/shared/cross_chain_test_harness.d.ts +11 -0
  30. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  31. package/dest/shared/cross_chain_test_harness.js +12 -1
  32. package/package.json +32 -32
  33. package/src/bench/client_flows/client_flows_benchmark.ts +331 -0
  34. package/src/bench/client_flows/data_extractor.ts +217 -0
  35. package/src/bench/utils.ts +0 -28
  36. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +1 -25
  37. package/src/e2e_fees/fees_test.ts +1 -11
  38. package/src/e2e_p2p/p2p_network.ts +9 -5
  39. package/src/e2e_p2p/shared.ts +1 -0
  40. package/src/fixtures/snapshot_manager.ts +3 -1
  41. package/src/fixtures/token_utils.ts +22 -2
  42. package/src/sample-dapp/contracts.mjs +4 -4
  43. package/src/shared/capture_private_execution_steps.ts +43 -6
  44. package/src/shared/cross_chain_test_harness.ts +24 -0
@@ -0,0 +1,52 @@
1
+ import { type AccountWallet, AztecAddress, type AztecNode, type Logger, type PXE } from '@aztec/aztec.js';
2
+ import { CheatCodes } from '@aztec/aztec.js/testing';
3
+ import { type DeployL1ContractsArgs } from '@aztec/ethereum';
4
+ import { ChainMonitor } from '@aztec/ethereum/test';
5
+ import { EthAddress } from '@aztec/foundation/eth-address';
6
+ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
7
+ import { FPCContract } from '@aztec/noir-contracts.js/FPC';
8
+ import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
9
+ import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
10
+ import { type SubsystemsContext } from '../../fixtures/snapshot_manager.js';
11
+ import { type SetupOptions } from '../../fixtures/utils.js';
12
+ import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
13
+ import { type GasBridgingTestHarness } from '../../shared/gas_portal_test_harness.js';
14
+ export type AccountType = 'ecdsar1' | 'schnorr';
15
+ export declare class ClientFlowsBenchmark {
16
+ private snapshotManager;
17
+ logger: Logger;
18
+ pxe: PXE;
19
+ aztecNode: AztecNode;
20
+ cheatCodes: CheatCodes;
21
+ context: SubsystemsContext;
22
+ chainMonitor: ChainMonitor;
23
+ feeJuiceBridgeTestHarness: GasBridgingTestHarness;
24
+ adminWallet: AccountWallet;
25
+ adminAddress: AztecAddress;
26
+ sequencerAddress: AztecAddress;
27
+ coinbase: EthAddress;
28
+ feeJuiceContract: FeeJuiceContract;
29
+ bananaCoin: BananaCoin;
30
+ bananaFPC: FPCContract;
31
+ candyBarCoin: TokenContract;
32
+ amm: AMMContract;
33
+ liquidityToken: TokenContract;
34
+ userPXE: PXE;
35
+ constructor(testName?: string, setupOptions?: Partial<SetupOptions & DeployL1ContractsArgs>);
36
+ setup(): Promise<this>;
37
+ teardown(): Promise<void>;
38
+ mintAndBridgeFeeJuice(address: AztecAddress, amount: bigint): Promise<void>;
39
+ /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
40
+ mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
41
+ createBenchmarkingAccountManager(type: 'ecdsar1' | 'schnorr'): Promise<import("@aztec/aztec.js").AccountManager>;
42
+ applyBaseSnapshots(): Promise<void>;
43
+ applyInitialAccountsSnapshot(): Promise<void>;
44
+ applySetupFeeJuiceSnapshot(): Promise<void>;
45
+ applyDeployBananaTokenSnapshot(): Promise<void>;
46
+ applyDeployCandyBarTokenSnapshot(): Promise<void>;
47
+ applyFPCSetupSnapshot(): Promise<void>;
48
+ createCrossChainTestHarness(owner: AccountWallet): Promise<CrossChainTestHarness>;
49
+ createAndFundBenchmarkingWallet(accountType: AccountType): Promise<import("@aztec/aztec.js").AccountWalletWithSecretKey>;
50
+ applyDeployAmmSnapshot(): Promise<void>;
51
+ }
52
+ //# sourceMappingURL=client_flows_benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client_flows_benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/client_flows_benchmark.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,SAAS,EAEd,KAAK,MAAM,EACX,KAAK,GAAG,EAET,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,OAAO,EAAE,KAAK,qBAAqB,EAAqD,MAAM,iBAAiB,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO5F,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,KAAK,YAAY,EAA0B,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,yCAAyC,CAAC;AAIjD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,eAAe,CAAmB;IAEnC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAG,GAAG,CAAC;IACV,SAAS,EAAG,SAAS,CAAC;IACtB,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,EAAG,iBAAiB,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,yBAAyB,EAAG,sBAAsB,CAAC;IAGnD,WAAW,EAAG,aAAa,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAG5B,gBAAgB,EAAG,YAAY,CAAC;IAChC,QAAQ,EAAG,UAAU,CAAC;IAGtB,gBAAgB,EAAG,gBAAgB,CAAC;IAEpC,UAAU,EAAG,UAAU,CAAC;IACxB,SAAS,EAAG,WAAW,CAAC;IAExB,YAAY,EAAG,aAAa,CAAC;IAE7B,GAAG,EAAG,WAAW,CAAC;IAElB,cAAc,EAAG,aAAa,CAAC;IAG/B,OAAO,EAAG,GAAG,CAAC;gBAET,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,GAAE,OAAO,CAAC,YAAY,GAAG,qBAAqB,CAAM;IAUzF,KAAK;IAUL,QAAQ;IAKR,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAMjE,sFAAsF;IAChF,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IASxD,gCAAgC,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS;IAmBrD,kBAAkB;IAKzB,4BAA4B;IAkC5B,0BAA0B;IAwB1B,8BAA8B;IAgB9B,gCAAgC;IAgBzB,qBAAqB;IAwBrB,2BAA2B,CAAC,KAAK,EAAE,aAAa;IAyBhD,+BAA+B,CAAC,WAAW,EAAE,WAAW;IAmBxD,sBAAsB;CAyBpC"}
@@ -0,0 +1,236 @@
1
+ import { EcdsaRAccountContractArtifact, getEcdsaRAccount } from '@aztec/accounts/ecdsa';
2
+ import { SchnorrAccountContractArtifact, getSchnorrAccount, getSchnorrWallet } from '@aztec/accounts/schnorr';
3
+ import { FeeJuicePaymentMethodWithClaim, createLogger } from '@aztec/aztec.js';
4
+ import { CheatCodes } from '@aztec/aztec.js/testing';
5
+ import { FEE_FUNDING_FOR_TESTER_ACCOUNT } from '@aztec/constants';
6
+ import { RollupContract, createL1Clients, deployL1Contract } from '@aztec/ethereum';
7
+ import { ChainMonitor } from '@aztec/ethereum/test';
8
+ import { randomBytes } from '@aztec/foundation/crypto';
9
+ import { EthAddress } from '@aztec/foundation/eth-address';
10
+ import { Fr } from '@aztec/foundation/fields';
11
+ import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
12
+ import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
13
+ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
14
+ import { FPCContract } from '@aztec/noir-contracts.js/FPC';
15
+ import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
16
+ import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
17
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
18
+ import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
19
+ import { createPXEService, getPXEServiceConfig } from '@aztec/pxe/server';
20
+ import { deriveSigningKey } from '@aztec/stdlib/keys';
21
+ import { MNEMONIC } from '../../fixtures/fixtures.js';
22
+ import { createSnapshotManager, deployAccounts } from '../../fixtures/snapshot_manager.js';
23
+ import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
24
+ import { setupCanonicalFeeJuice } from '../../fixtures/utils.js';
25
+ import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
26
+ import { FeeJuicePortalTestingHarnessFactory } from '../../shared/gas_portal_test_harness.js';
27
+ const { E2E_DATA_PATH: dataPath } = process.env;
28
+ export class ClientFlowsBenchmark {
29
+ snapshotManager;
30
+ logger;
31
+ pxe;
32
+ aztecNode;
33
+ cheatCodes;
34
+ context;
35
+ chainMonitor;
36
+ feeJuiceBridgeTestHarness;
37
+ // The admin that aids in the setup of the test
38
+ adminWallet;
39
+ adminAddress;
40
+ // Aztec Node config
41
+ sequencerAddress;
42
+ coinbase;
43
+ // Contracts
44
+ feeJuiceContract;
45
+ // Asset in which fees are paid via FPC
46
+ bananaCoin;
47
+ bananaFPC;
48
+ // Random asset we want to trade
49
+ candyBarCoin;
50
+ // AMM contract
51
+ amm;
52
+ // Liquidity token for AMM
53
+ liquidityToken;
54
+ // PXE used by the benchmarking user. It can be set up with client-side proving enabled
55
+ userPXE;
56
+ constructor(testName, setupOptions = {}){
57
+ this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
58
+ this.snapshotManager = createSnapshotManager(`bench_client_flows${testName ? `/${testName}` : ''}`, dataPath, {
59
+ startProverNode: true,
60
+ ...setupOptions
61
+ }, {
62
+ ...setupOptions
63
+ });
64
+ }
65
+ async setup() {
66
+ const context = await this.snapshotManager.setup();
67
+ await context.aztecNode.setConfig({
68
+ feeRecipient: this.sequencerAddress,
69
+ coinbase: this.coinbase
70
+ });
71
+ const rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
72
+ this.chainMonitor = new ChainMonitor(rollupContract, this.logger, 200).start();
73
+ return this;
74
+ }
75
+ async teardown() {
76
+ this.chainMonitor.stop();
77
+ await this.snapshotManager.teardown();
78
+ }
79
+ async mintAndBridgeFeeJuice(address, amount) {
80
+ const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(amount, address);
81
+ const { claimSecret: secret, messageLeafIndex: index } = claim;
82
+ await this.feeJuiceContract.methods.claim(address, amount, secret, index).send().wait();
83
+ }
84
+ /** Admin mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
85
+ const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate();
86
+ await mintTokensToPrivate(this.bananaCoin, this.adminWallet, address, amount);
87
+ const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate();
88
+ expect(balanceAfter).toEqual(balanceBefore + amount);
89
+ }
90
+ async createBenchmarkingAccountManager(type) {
91
+ const benchysSecretKey = Fr.random();
92
+ const salt = Fr.random();
93
+ let benchysPrivateSigningKey;
94
+ let benchysAccountManager;
95
+ if (type === 'schnorr') {
96
+ benchysPrivateSigningKey = deriveSigningKey(benchysSecretKey);
97
+ benchysAccountManager = await getSchnorrAccount(this.userPXE, benchysSecretKey, benchysPrivateSigningKey, salt);
98
+ } else if (type === 'ecdsar1') {
99
+ benchysPrivateSigningKey = randomBytes(32);
100
+ benchysAccountManager = await getEcdsaRAccount(this.userPXE, benchysSecretKey, benchysPrivateSigningKey, salt);
101
+ } else {
102
+ throw new Error(`Unknown account type: ${type}`);
103
+ }
104
+ await benchysAccountManager.register();
105
+ return benchysAccountManager;
106
+ }
107
+ async applyBaseSnapshots() {
108
+ await this.applyInitialAccountsSnapshot();
109
+ await this.applySetupFeeJuiceSnapshot();
110
+ }
111
+ async applyInitialAccountsSnapshot() {
112
+ await this.snapshotManager.snapshot('initial_accounts', deployAccounts(2, this.logger), async ({ deployedAccounts }, { pxe, aztecNode, aztecNodeConfig })=>{
113
+ this.pxe = pxe;
114
+ this.aztecNode = aztecNode;
115
+ this.cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, pxe);
116
+ const deployedWallets = await Promise.all(deployedAccounts.map((a)=>getSchnorrWallet(pxe, a.address, a.signingKey)));
117
+ [this.adminWallet] = deployedWallets;
118
+ this.adminAddress = this.adminWallet.getAddress();
119
+ this.sequencerAddress = deployedWallets[1].getAddress();
120
+ const canonicalFeeJuice = await getCanonicalFeeJuice();
121
+ this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
122
+ this.coinbase = EthAddress.random();
123
+ const userPXEConfig = getPXEServiceConfig();
124
+ const l1Contracts = await aztecNode.getL1ContractAddresses();
125
+ const userPXEConfigWithContracts = {
126
+ ...userPXEConfig,
127
+ proverEnabled: [
128
+ 'true',
129
+ '1'
130
+ ].includes(process.env.REAL_PROOFS ?? ''),
131
+ l1Contracts
132
+ };
133
+ this.userPXE = await createPXEService(this.aztecNode, userPXEConfigWithContracts, 'pxe-user');
134
+ });
135
+ }
136
+ async applySetupFeeJuiceSnapshot() {
137
+ await this.snapshotManager.snapshot('setup_fee_juice', async (context)=>{
138
+ await setupCanonicalFeeJuice(context.pxe);
139
+ }, async (_data, context)=>{
140
+ this.context = context;
141
+ this.feeJuiceContract = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
142
+ this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
143
+ aztecNode: context.aztecNode,
144
+ aztecNodeAdmin: context.aztecNode,
145
+ pxeService: context.pxe,
146
+ publicClient: context.deployL1ContractsValues.publicClient,
147
+ walletClient: context.deployL1ContractsValues.walletClient,
148
+ wallet: this.adminWallet,
149
+ logger: this.logger
150
+ });
151
+ });
152
+ }
153
+ async applyDeployBananaTokenSnapshot() {
154
+ await this.snapshotManager.snapshot('deploy_banana_token', async ()=>{
155
+ const bananaCoin = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send().deployed();
156
+ this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
157
+ return {
158
+ bananaCoinAddress: bananaCoin.address
159
+ };
160
+ }, async ({ bananaCoinAddress })=>{
161
+ this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.adminWallet);
162
+ });
163
+ }
164
+ async applyDeployCandyBarTokenSnapshot() {
165
+ await this.snapshotManager.snapshot('deploy_candy_bar_token', async ()=>{
166
+ const candyBarCoin = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send().deployed();
167
+ this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
168
+ return {
169
+ candyBarCoinAddress: candyBarCoin.address
170
+ };
171
+ }, async ({ candyBarCoinAddress })=>{
172
+ this.candyBarCoin = await TokenContract.at(candyBarCoinAddress, this.adminWallet);
173
+ });
174
+ }
175
+ async applyFPCSetupSnapshot() {
176
+ await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
177
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
178
+ expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPubliclyDeployed).toBe(true);
179
+ const bananaCoin = this.bananaCoin;
180
+ const bananaFPC = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send().deployed();
181
+ this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
182
+ await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(FEE_FUNDING_FOR_TESTER_ACCOUNT, bananaFPC.address);
183
+ return {
184
+ bananaFPCAddress: bananaFPC.address
185
+ };
186
+ }, async (data)=>{
187
+ this.bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.adminWallet);
188
+ });
189
+ }
190
+ async createCrossChainTestHarness(owner) {
191
+ const { publicClient, walletClient } = createL1Clients(this.context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
192
+ const underlyingERC20Address = await deployL1Contract(walletClient, publicClient, TestERC20Abi, TestERC20Bytecode, [
193
+ 'Underlying',
194
+ 'UND',
195
+ walletClient.account.address
196
+ ]).then(({ address })=>address);
197
+ this.logger.verbose(`Setting up cross chain harness...`);
198
+ const crossChainTestHarness = await CrossChainTestHarness.new(this.aztecNode, this.pxe, publicClient, walletClient, owner, this.logger, underlyingERC20Address);
199
+ this.logger.verbose(`L2 token deployed to: ${crossChainTestHarness.l2Token.address}`);
200
+ return crossChainTestHarness;
201
+ }
202
+ async createAndFundBenchmarkingWallet(accountType) {
203
+ const benchysAccountManager = await this.createBenchmarkingAccountManager(accountType);
204
+ const benchysWallet = await benchysAccountManager.getWallet();
205
+ const benchysAddress = benchysAccountManager.getAddress();
206
+ const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(FEE_FUNDING_FOR_TESTER_ACCOUNT, benchysAddress);
207
+ const paymentMethod = new FeeJuicePaymentMethodWithClaim(benchysWallet, claim);
208
+ await benchysAccountManager.deploy({
209
+ fee: {
210
+ paymentMethod
211
+ }
212
+ }).wait();
213
+ // Register benchy on admin's PXE so we can check its balances
214
+ await this.pxe.registerContract({
215
+ instance: benchysAccountManager.getInstance(),
216
+ artifact: accountType === 'ecdsar1' ? EcdsaRAccountContractArtifact : SchnorrAccountContractArtifact
217
+ });
218
+ await this.pxe.registerAccount(benchysWallet.getSecretKey(), benchysWallet.getCompleteAddress().partialAddress);
219
+ return benchysWallet;
220
+ }
221
+ async applyDeployAmmSnapshot() {
222
+ await this.snapshotManager.snapshot('deploy_amm', async ()=>{
223
+ const liquidityToken = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send().deployed();
224
+ const amm = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send().deployed();
225
+ this.logger.info(`AMM deployed at ${amm.address}`);
226
+ await liquidityToken.methods.set_minter(amm.address, true).send().wait();
227
+ return {
228
+ ammAddress: amm.address,
229
+ liquidityTokenAddress: liquidityToken.address
230
+ };
231
+ }, async ({ ammAddress, liquidityTokenAddress })=>{
232
+ this.liquidityToken = await TokenContract.at(liquidityTokenAddress, this.adminWallet);
233
+ this.amm = await AMMContract.at(ammAddress, this.adminWallet);
234
+ });
235
+ }
236
+ }
@@ -0,0 +1,23 @@
1
+ import type { Logger } from '@aztec/aztec.js';
2
+ declare const logLevel: readonly ["silent", "fatal", "error", "warn", "info", "verbose", "debug", "trace"];
3
+ type LogLevel = (typeof logLevel)[number];
4
+ type Log = {
5
+ type: LogLevel;
6
+ timestamp: number;
7
+ prefix: string;
8
+ message: string;
9
+ data: any;
10
+ };
11
+ export declare class ProxyLogger {
12
+ private static instance;
13
+ private logs;
14
+ private constructor();
15
+ static create(): void;
16
+ static getInstance(): ProxyLogger;
17
+ createLogger(prefix: string): Logger;
18
+ private handleLog;
19
+ flushLogs(): void;
20
+ getLogs(): Log[];
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=data_extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data_extractor.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/data_extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAY9C,QAAA,MAAM,QAAQ,oFAAqF,CAAC;AACpG,KAAK,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,KAAK,GAAG,GAAG;IACT,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAEhB,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAsBF,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,IAAI,CAAa;IAEzB,OAAO;IAEP,MAAM,CAAC,MAAM;IAIb,MAAM,CAAC,WAAW;IAIlB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAiBpC,OAAO,CAAC,SAAS;IAIV,SAAS;IAIT,OAAO;CAGf"}
@@ -0,0 +1,199 @@
1
+ import { BBNativePrivateKernelProver } from '@aztec/bb-prover';
2
+ import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/wasm/bundle';
3
+ import { createLogger, logger } from '@aztec/foundation/log';
4
+ import { WASMSimulator } from '@aztec/simulator/client';
5
+ import { decode } from '@msgpack/msgpack';
6
+ import assert from 'node:assert';
7
+ import { readFile, readdir, writeFile } from 'node:fs/promises';
8
+ import { join } from 'node:path';
9
+ const logLevel = [
10
+ 'silent',
11
+ 'fatal',
12
+ 'error',
13
+ 'warn',
14
+ 'info',
15
+ 'verbose',
16
+ 'debug',
17
+ 'trace'
18
+ ];
19
+ const GATE_TYPES = [
20
+ 'ecc_op',
21
+ 'busread',
22
+ 'lookup',
23
+ 'pub_inputs',
24
+ 'arithmetic',
25
+ 'delta_range',
26
+ 'elliptic',
27
+ 'aux',
28
+ 'poseidon2_external',
29
+ 'poseidon2_internal',
30
+ 'overflow'
31
+ ];
32
+ export class ProxyLogger {
33
+ static instance;
34
+ logs = [];
35
+ constructor(){}
36
+ static create() {
37
+ ProxyLogger.instance = new ProxyLogger();
38
+ }
39
+ static getInstance() {
40
+ return ProxyLogger.instance;
41
+ }
42
+ createLogger(prefix) {
43
+ return new Proxy(createLogger(prefix), {
44
+ get: (target, prop)=>{
45
+ if (logLevel.includes(prop)) {
46
+ return function(...data) {
47
+ const loggingFn = prop;
48
+ const args = [
49
+ loggingFn,
50
+ prefix,
51
+ ...data
52
+ ];
53
+ ProxyLogger.getInstance().handleLog(...args);
54
+ target[loggingFn].call(this, ...[
55
+ data[0],
56
+ data[1]
57
+ ]);
58
+ };
59
+ } else {
60
+ return target[prop];
61
+ }
62
+ }
63
+ });
64
+ }
65
+ handleLog(type, prefix, message, data) {
66
+ this.logs.unshift({
67
+ type,
68
+ prefix,
69
+ message,
70
+ data,
71
+ timestamp: Date.now()
72
+ });
73
+ }
74
+ flushLogs() {
75
+ this.logs = [];
76
+ }
77
+ getLogs() {
78
+ return this.logs;
79
+ }
80
+ }
81
+ async function createProver(config = {}, log) {
82
+ const simulationProvider = new WASMSimulator();
83
+ if (!config.bbBinaryPath || !config.bbWorkingDirectory) {
84
+ return {
85
+ prover: new BBWASMBundlePrivateKernelProver(simulationProvider, 16, log),
86
+ type: 'wasm'
87
+ };
88
+ } else {
89
+ const bbConfig = config;
90
+ return {
91
+ prover: await BBNativePrivateKernelProver.new({
92
+ bbSkipCleanup: false,
93
+ ...bbConfig
94
+ }, simulationProvider, log),
95
+ type: 'native'
96
+ };
97
+ }
98
+ }
99
+ function getMinimumTrace(logs, proverType) {
100
+ const minimumMessage = 'Minimum required block sizes for structured trace:';
101
+ const minimumMessageIndex = logs.findIndex((log)=>log.message.includes(minimumMessage));
102
+ const candidateLogs = logs.slice(minimumMessageIndex - GATE_TYPES.length, minimumMessageIndex);
103
+ const traceLogs = proverType === 'wasm' ? candidateLogs.map((log)=>log.message) : logs.slice(minimumMessageIndex - GATE_TYPES.length, minimumMessageIndex).filter((log)=>GATE_TYPES.some((type)=>log.message.includes(`bb - ${type}`))).map((log)=>log.message.split('\n')).flat();
104
+ const traceSizes = traceLogs.map((log)=>{
105
+ const [gateType, gateSizeStr] = log.replace(/\n.*\)$/, '').replace(/bb - /, '').split(':').map((s)=>s.trim());
106
+ const gateSize = parseInt(gateSizeStr);
107
+ assert(GATE_TYPES.includes(gateType), `Gate type ${gateType} is not recognized`);
108
+ return {
109
+ [gateType]: gateSize
110
+ };
111
+ });
112
+ assert(traceSizes.length === GATE_TYPES.length, 'Decoded trace sizes do not match expected amount of gate types');
113
+ return traceSizes.reduce((acc, curr)=>({
114
+ ...acc,
115
+ ...curr
116
+ }), {});
117
+ }
118
+ async function main() {
119
+ ProxyLogger.create();
120
+ const proxyLogger = ProxyLogger.getInstance();
121
+ const ivcFolder = process.env.CAPTURE_IVC_FOLDER;
122
+ if (!ivcFolder) {
123
+ throw new Error('CAPTURE_IVC_FOLDER is not set');
124
+ }
125
+ const flows = await readdir(ivcFolder);
126
+ logger.info(`Flows in ${ivcFolder}: \n${flows.map((flowName)=>`\t- ${flowName}`).join('\n')}`);
127
+ const { prover, type: proverType } = await createProver({
128
+ bbBinaryPath: process.env.BB_BINARY_PATH,
129
+ bbWorkingDirectory: process.env.BB_WORKING_DIRECTORY
130
+ }, proxyLogger.createLogger('bb:prover'));
131
+ const userLog = createLogger('client_ivc_flows:data_processor');
132
+ for (const flow of flows){
133
+ userLog.info(`Processing flow ${flow}`);
134
+ const bytecode = await readFile(join(ivcFolder, flow, 'acir.msgpack'));
135
+ const acirStack = decode(bytecode);
136
+ const witnesses = await readFile(join(ivcFolder, flow, 'witnesses.json'));
137
+ const witnessStack = JSON.parse(witnesses.toString()).map((witnessMap)=>{
138
+ return new Map(Object.entries(witnessMap).map(([k, v])=>[
139
+ Number(k),
140
+ v
141
+ ]));
142
+ });
143
+ const stepsFile = await readFile(join(ivcFolder, flow, 'steps.json'));
144
+ const executionSteps = JSON.parse(stepsFile.toString());
145
+ const privateExecutionSteps = executionSteps.map((step, i)=>({
146
+ functionName: step.fnName,
147
+ gateCount: step.gateCount,
148
+ bytecode: acirStack[i],
149
+ witness: witnessStack[i]
150
+ }));
151
+ let minimumTrace;
152
+ let stats;
153
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
154
+ let error;
155
+ let currentLogs = [];
156
+ try {
157
+ await prover.createClientIvcProof(privateExecutionSteps);
158
+ } catch (e) {
159
+ userLog.error(`Failed to generate client ivc proof for ${flow}`, e);
160
+ error = e.message;
161
+ }
162
+ // Extract logs from this run from the proxy and write them to disk unconditionally
163
+ currentLogs = proxyLogger.getLogs();
164
+ await writeFile(join(ivcFolder, flow, 'logs.json'), JSON.stringify(currentLogs, null, 2));
165
+ if (!error) {
166
+ minimumTrace = getMinimumTrace(currentLogs, proverType);
167
+ stats = currentLogs[0].data;
168
+ }
169
+ const steps = executionSteps.reduce((acc, step, i)=>{
170
+ const previousAccGateCount = i === 0 ? 0 : acc[i - 1].accGateCount;
171
+ return [
172
+ ...acc,
173
+ {
174
+ fnName: step.fnName,
175
+ gateCount: step.gateCount,
176
+ accGateCount: previousAccGateCount + step.gateCount
177
+ }
178
+ ];
179
+ }, []);
180
+ const totalGateCount = steps[steps.length - 1].accGateCount;
181
+ const benchmark = {
182
+ proverType,
183
+ minimumTrace: minimumTrace,
184
+ totalGateCount,
185
+ stats,
186
+ steps,
187
+ error
188
+ };
189
+ await writeFile(join(ivcFolder, flow, 'benchmark.json'), JSON.stringify(benchmark, null, 2));
190
+ proxyLogger.flushLogs();
191
+ }
192
+ }
193
+ try {
194
+ await main();
195
+ } catch (e) {
196
+ // eslint-disable-next-line no-console
197
+ console.error(e);
198
+ process.exit(1);
199
+ }
@@ -23,18 +23,6 @@ type MetricFilter = {
23
23
  name: string;
24
24
  unit?: string;
25
25
  };
26
- /**
27
- * Creates and returns a directory with the current job name and a random number.
28
- * @param index - Index to merge into the dir path.
29
- * @returns A path to a created dir.
30
- */
31
- export declare function makeDataDirectory(index: number): string;
32
- /**
33
- * Returns the size in disk of a folder.
34
- * @param path - Path to the folder.
35
- * @returns Size in bytes.
36
- */
37
- export declare function getFolderSize(path: string): number;
38
26
  /**
39
27
  * Assembles and sends multiple transactions simultaneously to the node in context.
40
28
  * Each tx is the result of calling makeCall.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAmC,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAOxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAEtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACtE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAuBF;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AA0CF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,UAK9C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlD;AA+BD;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,oBAAoB,EAC9B,aAAa,GAAE,MAA6B,GAC3C,OAAO,CAAC,UAAU,CAAC,CAerB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAmC,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE9G,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,KAAK,UAAU,EAA2C,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAIxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAEtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACtE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAuBF;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAuEF;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,oBAAoB,EAC9B,aAAa,GAAE,MAA6B,GAC3C,OAAO,CAAC,UAAU,CAAC,CAerB"}
@@ -1,12 +1,8 @@
1
1
  import { BatchCall, INITIAL_L2_BLOCK_NUM } from '@aztec/aztec.js';
2
2
  import { mean, stdDev, times } from '@aztec/foundation/collection';
3
- import { randomInt } from '@aztec/foundation/crypto';
4
3
  import { BenchmarkingContract } from '@aztec/noir-contracts.js/Benchmarking';
5
4
  import { createPXEService } from '@aztec/pxe/server';
6
5
  import { writeFileSync } from 'fs';
7
- import { mkdirpSync } from 'fs-extra';
8
- import { globSync } from 'glob';
9
- import { join } from 'path';
10
6
  import { setup } from '../fixtures/utils.js';
11
7
  /**
12
8
  * Setup for benchmarks. Initializes a remote node with a single account and deploys a benchmark contract.
@@ -79,28 +75,6 @@ function getMetricValues(points) {
79
75
  };
80
76
  }
81
77
  }
82
- /**
83
- * Creates and returns a directory with the current job name and a random number.
84
- * @param index - Index to merge into the dir path.
85
- * @returns A path to a created dir.
86
- */ export function makeDataDirectory(index) {
87
- const testName = expect.getState().currentTestName.split(' ')[0].replaceAll('/', '_');
88
- const db = join('data', testName, index.toString(), `${randomInt(99)}`);
89
- mkdirpSync(db);
90
- return db;
91
- }
92
- /**
93
- * Returns the size in disk of a folder.
94
- * @param path - Path to the folder.
95
- * @returns Size in bytes.
96
- */ export function getFolderSize(path) {
97
- return globSync('**', {
98
- stat: true,
99
- cwd: path,
100
- nodir: true,
101
- withFileTypes: true
102
- }).reduce((accum, file)=>accum + file.size, 0);
103
- }
104
78
  /**
105
79
  * Returns a call to the benchmark contract. Each call has a private execution (account entrypoint),
106
80
  * a nested private call (create_note), a public call (increment_balance), and a nested public
@@ -31,17 +31,5 @@ export declare class CrossChainMessagingTest {
31
31
  snapshot: <T>(name: string, apply: (context: SubsystemsContext) => Promise<T>, restore?: (snapshotData: T, context: SubsystemsContext) => Promise<void>) => Promise<void>;
32
32
  teardown(): Promise<void>;
33
33
  applyBaseSnapshots(): Promise<void>;
34
- toCrossChainContext(): CrossChainContext;
35
34
  }
36
- type CrossChainContext = {
37
- l2Token: AztecAddress;
38
- l2Bridge: AztecAddress;
39
- tokenPortal: EthAddress;
40
- underlying: EthAddress;
41
- ethAccount: EthAddress;
42
- ownerAddress: AztecAddress;
43
- inbox: EthAddress;
44
- outbox: EthAddress;
45
- };
46
- export {};
47
35
  //# sourceMappingURL=cross_chain_messaging_test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cross_chain_messaging_test.d.ts","sourceRoot":"","sources":["../../src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,MAAM,EACX,KAAK,GAAG,EAET,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,gBAAgB,EAAqC,MAAM,iBAAiB,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAK3E,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAI9E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,eAAe,CAAmB;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,QAAQ,EAAE,eAAe,EAAE,CAAM;IACjC,SAAS,EAAG,SAAS,CAAC;IACtB,GAAG,EAAG,GAAG,CAAC;IACV,eAAe,EAAG,eAAe,CAAC;IAElC,YAAY,EAAG,gBAAgB,GAAG,SAAS,CAAC;IAE5C,WAAW,EAAG,aAAa,CAAC;IAC5B,WAAW,EAAG,aAAa,CAAC;IAC5B,qBAAqB,EAAG,qBAAqB,CAAC;IAC9C,UAAU,EAAG,UAAU,CAAC;IACxB,YAAY,EAAG,YAAY,CAAC;IAC5B,OAAO,EAAG,aAAa,CAAC;IACxB,QAAQ,EAAG,mBAAmB,CAAC;IAE/B,KAAK,EAAG,GAAG,CAAC;IACZ,MAAM,EAAG,GAAG,CAAC;IACb,UAAU,EAAG,UAAU,CAAC;gBAEZ,QAAQ,EAAE,MAAM;IAKtB,YAAY;IAIZ,KAAK;IAQX,QAAQ,YACA,MAAM,SACL,CAAC,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,YACxC,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,QAAQ,IAAI,CAAC,KACtE,QAAQ,IAAI,CAAC,CAAwD;IAElE,QAAQ;IAIR,kBAAkB;IAkGxB,mBAAmB,IAAI,iBAAiB;CAYzC;AAED,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"cross_chain_messaging_test.d.ts","sourceRoot":"","sources":["../../src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EACL,KAAK,aAAa,EAClB,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,MAAM,EACX,KAAK,GAAG,EAET,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,gBAAgB,EAAqC,MAAM,iBAAiB,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAK3E,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAI9E,qBAAa,uBAAuB;IAClC,OAAO,CAAC,eAAe,CAAmB;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,EAAE,CAAM;IAC9B,QAAQ,EAAE,eAAe,EAAE,CAAM;IACjC,SAAS,EAAG,SAAS,CAAC;IACtB,GAAG,EAAG,GAAG,CAAC;IACV,eAAe,EAAG,eAAe,CAAC;IAElC,YAAY,EAAG,gBAAgB,GAAG,SAAS,CAAC;IAE5C,WAAW,EAAG,aAAa,CAAC;IAC5B,WAAW,EAAG,aAAa,CAAC;IAC5B,qBAAqB,EAAG,qBAAqB,CAAC;IAC9C,UAAU,EAAG,UAAU,CAAC;IACxB,YAAY,EAAG,YAAY,CAAC;IAC5B,OAAO,EAAG,aAAa,CAAC;IACxB,QAAQ,EAAG,mBAAmB,CAAC;IAE/B,KAAK,EAAG,GAAG,CAAC;IACZ,MAAM,EAAG,GAAG,CAAC;IACb,UAAU,EAAG,UAAU,CAAC;gBAEZ,QAAQ,EAAE,MAAM;IAKtB,YAAY;IAIZ,KAAK;IAQX,QAAQ,YACA,MAAM,SACL,CAAC,OAAO,EAAE,iBAAiB,KAAK,QAAQ,CAAC,CAAC,YACxC,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,QAAQ,IAAI,CAAC,KACtE,QAAQ,IAAI,CAAC,CAAwD;IAElE,QAAQ;IAIR,kBAAkB;CAiGzB"}
@@ -74,7 +74,7 @@ export class CrossChainMessagingTest {
74
74
  this.logger.verbose(`Setting up cross chain harness...`);
75
75
  this.crossChainTestHarness = await CrossChainTestHarness.new(this.aztecNode, this.pxe, publicClient, walletClient, this.wallets[0], this.logger, underlyingERC20Address);
76
76
  this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
77
- return this.toCrossChainContext();
77
+ return this.crossChainTestHarness.toCrossChainContext();
78
78
  }, async (crossChainContext)=>{
79
79
  this.l2Token = await TokenContract.at(crossChainContext.l2Token, this.user1Wallet);
80
80
  this.l2Bridge = await TokenBridgeContract.at(crossChainContext.l2Bridge, this.user1Wallet);
@@ -99,16 +99,4 @@ export class CrossChainMessagingTest {
99
99
  this.outbox = outbox;
100
100
  });
101
101
  }
102
- toCrossChainContext() {
103
- return {
104
- l2Token: this.crossChainTestHarness.l2Token.address,
105
- l2Bridge: this.crossChainTestHarness.l2Bridge.address,
106
- tokenPortal: this.crossChainTestHarness.tokenPortalAddress,
107
- underlying: this.crossChainTestHarness.underlyingERC20Address,
108
- ethAccount: this.crossChainTestHarness.ethAccount,
109
- ownerAddress: this.crossChainTestHarness.ownerAddress,
110
- inbox: this.crossChainTestHarness.l1ContractAddresses.inboxAddress,
111
- outbox: this.crossChainTestHarness.l1ContractAddresses.outboxAddress
112
- };
113
- }
114
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}