@aztec/end-to-end 0.0.0-test.1 → 0.0.1-commit.b655e406
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.
- package/dest/bench/client_flows/benchmark.d.ts +61 -0
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/benchmark.js +261 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +73 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/client_flows_benchmark.js +311 -0
- package/dest/bench/client_flows/config.d.ts +14 -0
- package/dest/bench/client_flows/config.d.ts.map +1 -0
- package/dest/bench/client_flows/config.js +106 -0
- package/dest/bench/client_flows/data_extractor.d.ts +2 -0
- package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
- package/dest/bench/client_flows/data_extractor.js +99 -0
- package/dest/bench/utils.d.ts +10 -36
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +26 -66
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +20 -12
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +85 -57
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +18 -24
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +48 -69
- package/dest/e2e_deploy_contract/deploy_test.d.ts +14 -6
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +13 -19
- package/dest/e2e_epochs/epochs_test.d.ts +58 -17
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +224 -43
- package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/e2e_fees/bridging_race.notest.js +63 -0
- package/dest/e2e_fees/fees_test.d.ts +20 -9
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +98 -107
- package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
- package/dest/e2e_l1_publisher/write_json.js +57 -0
- package/dest/e2e_multi_validator/utils.d.ts +12 -0
- package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
- package/dest/e2e_multi_validator/utils.js +214 -0
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +9 -6
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +22 -19
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
- package/dest/e2e_p2p/inactivity_slash_test.js +135 -0
- package/dest/e2e_p2p/p2p_network.d.ts +69 -22
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +180 -129
- package/dest/e2e_p2p/shared.d.ts +41 -5
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +163 -19
- package/dest/e2e_token_contract/token_contract_test.d.ts +11 -5
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +50 -26
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.d.ts +14 -9
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +95 -100
- package/dest/fixtures/fixtures.d.ts +5 -6
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +4 -3
- package/dest/fixtures/get_acvm_config.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +2 -14
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +10 -17
- package/dest/fixtures/l1_to_l2_messaging.d.ts +8 -5
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +44 -18
- package/dest/fixtures/setup_l1_contracts.d.ts +3 -3
- package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
- package/dest/fixtures/setup_l1_contracts.js +4 -4
- package/dest/fixtures/setup_p2p_test.d.ts +14 -13
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +73 -21
- package/dest/fixtures/snapshot_manager.d.ts +15 -7
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +147 -121
- package/dest/fixtures/token_utils.d.ts +6 -3
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +23 -10
- package/dest/fixtures/utils.d.ts +76 -37
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +464 -368
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +53 -0
- package/dest/quality_of_service/alert_checker.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +41 -25
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +104 -50
- package/dest/shared/gas_portal_test_harness.d.ts +32 -24
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +50 -29
- package/dest/shared/jest_setup.js +1 -1
- package/dest/shared/submit-transactions.d.ts +5 -3
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +8 -7
- package/dest/shared/uniswap_l1_l2.d.ts +13 -11
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +138 -108
- package/dest/simulators/lending_simulator.d.ts +6 -6
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +13 -16
- package/dest/simulators/token_simulator.d.ts +5 -2
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +16 -13
- package/dest/spartan/setup_test_wallets.d.ts +23 -10
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +167 -58
- package/dest/spartan/utils.d.ts +106 -303
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +434 -130
- package/package.json +61 -56
- package/src/bench/client_flows/benchmark.ts +341 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +402 -0
- package/src/bench/client_flows/config.ts +61 -0
- package/src/bench/client_flows/data_extractor.ts +111 -0
- package/src/bench/utils.ts +22 -76
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +63 -105
- package/src/e2e_deploy_contract/deploy_test.ts +23 -38
- package/src/e2e_epochs/epochs_test.ts +274 -54
- package/src/e2e_fees/bridging_race.notest.ts +80 -0
- package/src/e2e_fees/fees_test.ts +137 -136
- package/src/e2e_l1_publisher/write_json.ts +76 -0
- package/src/e2e_multi_validator/utils.ts +258 -0
- package/src/e2e_nested_contract/nested_contract_test.ts +27 -18
- package/src/e2e_p2p/inactivity_slash_test.ts +178 -0
- package/src/e2e_p2p/p2p_network.ts +272 -166
- package/src/e2e_p2p/shared.ts +244 -29
- package/src/e2e_token_contract/token_contract_test.ts +43 -39
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +101 -145
- package/src/fixtures/fixtures.ts +4 -3
- package/src/fixtures/get_acvm_config.ts +3 -11
- package/src/fixtures/get_bb_config.ts +18 -13
- package/src/fixtures/l1_to_l2_messaging.ts +53 -23
- package/src/fixtures/setup_l1_contracts.ts +6 -7
- package/src/fixtures/setup_p2p_test.ts +112 -38
- package/src/fixtures/snapshot_manager.ts +187 -139
- package/src/fixtures/token_utils.ts +29 -12
- package/src/fixtures/utils.ts +552 -425
- package/src/fixtures/web3signer.ts +63 -0
- package/src/guides/up_quick_start.sh +6 -14
- package/src/quality_of_service/alert_checker.ts +1 -1
- package/src/shared/cross_chain_test_harness.ts +108 -79
- package/src/shared/gas_portal_test_harness.ts +58 -49
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +173 -176
- package/src/simulators/lending_simulator.ts +12 -15
- package/src/simulators/token_simulator.ts +21 -13
- package/src/spartan/DEVELOP.md +121 -0
- package/src/spartan/setup_test_wallets.ts +215 -93
- package/src/spartan/utils.ts +490 -130
- package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
- package/dest/sample-dapp/connect.js +0 -12
- package/dest/sample-dapp/contracts.js +0 -10
- package/dest/sample-dapp/deploy.js +0 -35
- package/dest/sample-dapp/index.js +0 -98
- package/src/sample-dapp/connect.mjs +0 -16
- package/src/sample-dapp/contracts.mjs +0 -14
- package/src/sample-dapp/deploy.mjs +0 -40
- 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
|
|
5
|
-
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
42
|
+
l1Client!: ExtendedViemWalletClient | undefined;
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
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.
|
|
68
|
+
await this.cheatCodes.rollup.markAsProven();
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
async setup() {
|
|
67
|
-
|
|
68
|
-
this.aztecNode = aztecNode;
|
|
69
|
-
this.
|
|
70
|
-
this.aztecNodeConfig = aztecNodeConfig;
|
|
71
|
-
this.
|
|
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 `
|
|
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
|
-
|
|
92
|
-
this.
|
|
93
|
-
this.
|
|
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,69 @@ 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.
|
|
118
|
-
|
|
119
|
-
|
|
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
|
-
|
|
136
|
-
|
|
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.
|
|
142
|
-
|
|
143
|
-
|
|
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
137
|
async crossChainContext => {
|
|
154
|
-
this.l2Token = await TokenContract.at(crossChainContext.l2Token, this.
|
|
155
|
-
this.l2Bridge = await TokenBridgeContract.at(crossChainContext.l2Bridge, this.
|
|
138
|
+
this.l2Token = await TokenContract.at(crossChainContext.l2Token, this.wallet);
|
|
139
|
+
this.l2Bridge = await 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
|
|
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:
|
|
150
|
+
client: l1Client,
|
|
168
151
|
});
|
|
169
152
|
const outbox = getContract({
|
|
170
153
|
address: this.aztecNodeConfig.l1Contracts.outboxAddress.toString(),
|
|
171
154
|
abi: OutboxAbi,
|
|
172
|
-
client:
|
|
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
|
-
|
|
185
|
-
walletClient,
|
|
166
|
+
l1Client,
|
|
186
167
|
this.aztecNodeConfig.l1Contracts,
|
|
187
|
-
this.
|
|
168
|
+
this.wallet,
|
|
169
|
+
this.ownerAddress,
|
|
188
170
|
);
|
|
189
171
|
|
|
190
|
-
this.
|
|
172
|
+
this.l1Client = l1Client;
|
|
191
173
|
this.inbox = inbox;
|
|
192
174
|
this.outbox = outbox;
|
|
193
175
|
},
|
|
194
176
|
);
|
|
195
177
|
}
|
|
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
178
|
}
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
|
28
|
-
public
|
|
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
|
-
({
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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,21 +58,16 @@ export class DeployTest {
|
|
|
68
58
|
} = {},
|
|
69
59
|
): Promise<T> {
|
|
70
60
|
const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
|
|
71
|
-
const instance = await
|
|
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(
|
|
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']>;
|