@aztec/end-to-end 0.0.0-test.0 → 0.0.1-commit.03f7ef2
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 +80 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/client_flows_benchmark.js +336 -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 +77 -0
- package/dest/bench/utils.d.ts +12 -38
- 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 +21 -13
- 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 +20 -25
- 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 +51 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +16 -8
- 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 +65 -22
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +233 -49
- 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 +27 -12
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +106 -109
- 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 +58 -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 +10 -7
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +24 -20
- 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 +136 -0
- package/dest/e2e_p2p/p2p_network.d.ts +276 -23
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +188 -133
- package/dest/e2e_p2p/shared.d.ts +43 -7
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +164 -19
- package/dest/e2e_token_contract/token_contract_test.d.ts +12 -6
- 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/fixtures/e2e_prover_test.d.ts +61 -0
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +108 -112
- package/dest/fixtures/fixtures.d.ts +6 -8
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +5 -5
- package/dest/fixtures/get_acvm_config.d.ts +2 -2
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +3 -15
- package/dest/fixtures/get_bb_config.d.ts +2 -2
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +10 -17
- package/dest/fixtures/index.d.ts +1 -1
- package/dest/fixtures/l1_to_l2_messaging.d.ts +11 -7
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +45 -19
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/setup_p2p_test.d.ts +15 -14
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +82 -22
- package/dest/fixtures/snapshot_manager.d.ts +20 -14
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +154 -140
- package/dest/fixtures/token_utils.d.ts +10 -4
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +28 -12
- package/dest/fixtures/utils.d.ts +95 -54
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +456 -389
- 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/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts +2 -2
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +42 -35
- 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 +29 -31
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +51 -30
- package/dest/shared/index.d.ts +1 -1
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +1 -1
- package/dest/shared/submit-transactions.d.ts +6 -4
- 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 +16 -13
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +149 -117
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +7 -11
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +16 -17
- package/dest/simulators/token_simulator.d.ts +6 -3
- 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 +26 -11
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +202 -58
- package/dest/spartan/tx_metrics.d.ts +39 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +95 -0
- package/dest/spartan/utils.d.ts +129 -313
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +559 -151
- package/package.json +65 -58
- package/src/bench/client_flows/benchmark.ts +341 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +450 -0
- package/src/bench/client_flows/config.ts +61 -0
- package/src/bench/client_flows/data_extractor.ts +89 -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 +70 -107
- package/src/e2e_deploy_contract/deploy_test.ts +24 -39
- package/src/e2e_epochs/epochs_test.ts +299 -65
- package/src/e2e_fees/bridging_race.notest.ts +80 -0
- package/src/e2e_fees/fees_test.ts +151 -141
- package/src/e2e_l1_publisher/write_json.ts +77 -0
- package/src/e2e_multi_validator/utils.ts +258 -0
- package/src/e2e_nested_contract/nested_contract_test.ts +29 -19
- package/src/e2e_p2p/inactivity_slash_test.ts +179 -0
- package/src/e2e_p2p/p2p_network.ts +274 -171
- package/src/e2e_p2p/shared.ts +251 -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 +113 -160
- package/src/fixtures/fixtures.ts +5 -7
- package/src/fixtures/get_acvm_config.ts +4 -12
- package/src/fixtures/get_bb_config.ts +18 -13
- package/src/fixtures/l1_to_l2_messaging.ts +56 -24
- package/src/fixtures/setup_p2p_test.ts +127 -39
- package/src/fixtures/snapshot_manager.ts +196 -162
- package/src/fixtures/token_utils.ts +32 -15
- package/src/fixtures/utils.ts +562 -475
- package/src/fixtures/web3signer.ts +63 -0
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +7 -15
- package/src/quality_of_service/alert_checker.ts +1 -1
- package/src/shared/cross_chain_test_harness.ts +112 -80
- package/src/shared/gas_portal_test_harness.ts +59 -50
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +187 -192
- package/src/simulators/lending_simulator.ts +15 -16
- package/src/simulators/token_simulator.ts +21 -13
- package/src/spartan/DEVELOP.md +128 -0
- package/src/spartan/setup_test_wallets.ts +252 -93
- package/src/spartan/tx_metrics.ts +130 -0
- package/src/spartan/utils.ts +641 -146
- package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
- package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- 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/fixtures/setup_l1_contracts.ts +0 -27
- 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';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from '@aztec/
|
|
14
|
-
import {
|
|
15
|
-
import { InboxAbi, OutboxAbi, RollupAbi, TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
|
|
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';
|
|
6
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
7
|
+
import type {
|
|
8
|
+
DeployAztecL1ContractsArgs,
|
|
9
|
+
DeployAztecL1ContractsReturnType,
|
|
10
|
+
} from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
11
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
12
|
+
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
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,52 @@ 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
56
|
|
|
57
|
-
|
|
57
|
+
deployL1ContractsValues!: DeployAztecL1ContractsReturnType;
|
|
58
|
+
|
|
59
|
+
constructor(
|
|
60
|
+
testName: string,
|
|
61
|
+
opts: SetupOptions = {},
|
|
62
|
+
deployL1ContractsArgs: Partial<DeployAztecL1ContractsArgs> = {},
|
|
63
|
+
) {
|
|
58
64
|
this.logger = createLogger(`e2e:e2e_cross_chain_messaging:${testName}`);
|
|
59
|
-
this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath
|
|
65
|
+
this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath, opts, {
|
|
66
|
+
initialValidators: [],
|
|
67
|
+
...deployL1ContractsArgs,
|
|
68
|
+
});
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
async assumeProven() {
|
|
63
|
-
await this.
|
|
72
|
+
await this.cheatCodes.rollup.markAsProven();
|
|
64
73
|
}
|
|
65
74
|
|
|
66
75
|
async setup() {
|
|
67
|
-
|
|
68
|
-
this.aztecNode = aztecNode;
|
|
69
|
-
this.
|
|
70
|
-
this.aztecNodeConfig = aztecNodeConfig;
|
|
71
|
-
this.
|
|
76
|
+
this.ctx = await this.snapshotManager.setup();
|
|
77
|
+
this.aztecNode = this.ctx.aztecNode;
|
|
78
|
+
this.wallet = this.ctx.wallet;
|
|
79
|
+
this.aztecNodeConfig = this.ctx.aztecNodeConfig;
|
|
80
|
+
this.cheatCodes = this.ctx.cheatCodes;
|
|
81
|
+
this.deployL1ContractsValues = this.ctx.deployL1ContractsValues;
|
|
82
|
+
this.aztecNodeAdmin = this.ctx.aztecNode;
|
|
72
83
|
}
|
|
73
84
|
|
|
74
85
|
snapshot = <T>(
|
|
@@ -82,29 +93,18 @@ export class CrossChainMessagingTest {
|
|
|
82
93
|
}
|
|
83
94
|
|
|
84
95
|
async applyBaseSnapshots() {
|
|
85
|
-
// Note that we are using the same `
|
|
96
|
+
// Note that we are using the same `wallet`, `aztecNodeConfig` and `aztecNode` across all snapshots.
|
|
86
97
|
// This is to not have issues with different networks.
|
|
87
98
|
|
|
88
99
|
await this.snapshotManager.snapshot(
|
|
89
100
|
'3_accounts',
|
|
90
101
|
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;
|
|
102
|
+
({ deployedAccounts }, { wallet, aztecNodeConfig, aztecNode }) => {
|
|
103
|
+
[this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map(a => a.address);
|
|
104
|
+
this.wallet = wallet;
|
|
106
105
|
this.aztecNode = aztecNode;
|
|
107
106
|
this.aztecNodeConfig = aztecNodeConfig;
|
|
107
|
+
return Promise.resolve();
|
|
108
108
|
},
|
|
109
109
|
);
|
|
110
110
|
|
|
@@ -114,107 +114,70 @@ export class CrossChainMessagingTest {
|
|
|
114
114
|
// Create the token contract state.
|
|
115
115
|
// Move this account thing to addAccounts above?
|
|
116
116
|
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
|
-
});
|
|
117
|
+
await publicDeployAccounts(this.wallet, [this.ownerAddress, this.user1Address, this.user2Address]);
|
|
118
|
+
|
|
119
|
+
this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
134
120
|
|
|
135
|
-
|
|
136
|
-
|
|
121
|
+
const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
122
|
+
'Underlying',
|
|
123
|
+
'UND',
|
|
124
|
+
this.l1Client.account.address,
|
|
125
|
+
]).then(({ address }) => address);
|
|
137
126
|
|
|
138
127
|
this.logger.verbose(`Setting up cross chain harness...`);
|
|
139
128
|
this.crossChainTestHarness = await CrossChainTestHarness.new(
|
|
140
129
|
this.aztecNode,
|
|
141
|
-
this.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
this.wallets[0],
|
|
130
|
+
this.l1Client,
|
|
131
|
+
this.wallet,
|
|
132
|
+
this.ownerAddress,
|
|
145
133
|
this.logger,
|
|
146
134
|
underlyingERC20Address,
|
|
147
135
|
);
|
|
148
136
|
|
|
149
137
|
this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
|
|
150
138
|
|
|
151
|
-
return this.toCrossChainContext();
|
|
139
|
+
return this.crossChainTestHarness.toCrossChainContext();
|
|
152
140
|
},
|
|
153
|
-
|
|
154
|
-
this.l2Token =
|
|
155
|
-
this.l2Bridge =
|
|
141
|
+
crossChainContext => {
|
|
142
|
+
this.l2Token = TokenContract.at(crossChainContext.l2Token, this.wallet);
|
|
143
|
+
this.l2Bridge = TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
|
|
156
144
|
|
|
157
145
|
// There is an issue with the reviver so we are getting strings sometimes. Working around it here.
|
|
158
146
|
this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
|
|
159
|
-
this.ownerAddress = AztecAddress.fromString(crossChainContext.ownerAddress.toString());
|
|
160
147
|
const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
|
|
161
148
|
|
|
162
|
-
const
|
|
149
|
+
const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
163
150
|
|
|
164
151
|
const inbox = getContract({
|
|
165
152
|
address: this.aztecNodeConfig.l1Contracts.inboxAddress.toString(),
|
|
166
153
|
abi: InboxAbi,
|
|
167
|
-
client:
|
|
154
|
+
client: l1Client,
|
|
168
155
|
});
|
|
169
156
|
const outbox = getContract({
|
|
170
157
|
address: this.aztecNodeConfig.l1Contracts.outboxAddress.toString(),
|
|
171
158
|
abi: OutboxAbi,
|
|
172
|
-
client:
|
|
159
|
+
client: l1Client,
|
|
173
160
|
});
|
|
174
161
|
|
|
175
162
|
this.crossChainTestHarness = new CrossChainTestHarness(
|
|
176
163
|
this.aztecNode,
|
|
177
|
-
this.pxe,
|
|
178
164
|
this.logger,
|
|
179
165
|
this.l2Token,
|
|
180
166
|
this.l2Bridge,
|
|
181
167
|
this.ethAccount,
|
|
182
168
|
tokenPortalAddress,
|
|
183
169
|
crossChainContext.underlying,
|
|
184
|
-
|
|
185
|
-
walletClient,
|
|
170
|
+
l1Client,
|
|
186
171
|
this.aztecNodeConfig.l1Contracts,
|
|
187
|
-
this.
|
|
172
|
+
this.wallet,
|
|
173
|
+
this.ownerAddress,
|
|
188
174
|
);
|
|
189
175
|
|
|
190
|
-
this.
|
|
176
|
+
this.l1Client = l1Client;
|
|
191
177
|
this.inbox = inbox;
|
|
192
178
|
this.outbox = outbox;
|
|
179
|
+
return Promise.resolve();
|
|
193
180
|
},
|
|
194
181
|
);
|
|
195
182
|
}
|
|
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
183
|
}
|
|
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,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
|
|
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']>;
|
|
89
74
|
|
|
90
75
|
export type ContractArtifactClass<T extends ContractBase> = {
|
|
91
|
-
at(address: AztecAddress, wallet: Wallet):
|
|
76
|
+
at(address: AztecAddress, wallet: Wallet): T;
|
|
92
77
|
artifact: ContractArtifact;
|
|
93
78
|
};
|