@aztec/end-to-end 0.0.0-test.1 → 0.0.1-commit.1142ef1
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 +79 -0
- package/dest/bench/utils.d.ts +14 -40
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +37 -70
- 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 +29 -28
- 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 +79 -82
- 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 +107 -110
- 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 +55 -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 -113
- 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 +147 -138
- 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 +92 -54
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +452 -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/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +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 +106 -52
- 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 +2 -2
- package/dest/shared/index.d.ts.map +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 +3 -25
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +170 -120
- 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 +27 -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 +151 -313
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +598 -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 +35 -81
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +103 -122
- 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 +150 -142
- package/src/e2e_l1_publisher/write_json.ts +74 -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 +252 -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 +112 -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 +189 -160
- package/src/fixtures/token_utils.ts +32 -15
- package/src/fixtures/utils.ts +556 -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 → grafana_client.ts} +2 -2
- package/src/shared/cross_chain_test_harness.ts +113 -87
- package/src/shared/gas_portal_test_harness.ts +59 -50
- package/src/shared/index.ts +1 -1
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +194 -211
- 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 +258 -93
- package/src/spartan/tx_metrics.ts +130 -0
- package/src/spartan/utils.ts +722 -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/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.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/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,22 +1,25 @@
|
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
import {
|
|
2
|
+
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { waitForProven } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { type Logger, createLogger } from '@aztec/aztec.js/log';
|
|
5
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
6
|
+
import type { TxReceipt } from '@aztec/aztec.js/tx';
|
|
7
|
+
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
9
|
+
import { InboxContract, OutboxContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
10
|
+
import type {
|
|
11
|
+
DeployAztecL1ContractsArgs,
|
|
12
|
+
DeployAztecL1ContractsReturnType,
|
|
13
|
+
} from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
14
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
15
|
+
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
16
|
+
import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
17
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
18
|
+
import { TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
|
|
16
19
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
17
20
|
import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
|
|
18
|
-
|
|
19
|
-
import {
|
|
21
|
+
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
22
|
+
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
20
23
|
|
|
21
24
|
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
22
25
|
import {
|
|
@@ -26,49 +29,83 @@ import {
|
|
|
26
29
|
deployAccounts,
|
|
27
30
|
publicDeployAccounts,
|
|
28
31
|
} from '../fixtures/snapshot_manager.js';
|
|
32
|
+
import type { SetupOptions } from '../fixtures/utils.js';
|
|
29
33
|
import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
|
|
30
34
|
|
|
31
35
|
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
32
36
|
|
|
33
37
|
export class CrossChainMessagingTest {
|
|
34
38
|
private snapshotManager: ISnapshotManager;
|
|
39
|
+
private requireEpochProven: boolean;
|
|
35
40
|
logger: Logger;
|
|
36
|
-
wallets: AccountWallet[] = [];
|
|
37
|
-
accounts: CompleteAddress[] = [];
|
|
38
41
|
aztecNode!: AztecNode;
|
|
39
|
-
pxe!: PXE;
|
|
40
42
|
aztecNodeConfig!: AztecNodeConfig;
|
|
43
|
+
aztecNodeAdmin!: AztecNodeAdmin;
|
|
44
|
+
ctx!: SubsystemsContext;
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
l1Client!: ExtendedViemWalletClient | undefined;
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
wallet!: TestWallet;
|
|
49
|
+
ownerAddress!: AztecAddress;
|
|
50
|
+
user1Address!: AztecAddress;
|
|
51
|
+
user2Address!: AztecAddress;
|
|
46
52
|
crossChainTestHarness!: CrossChainTestHarness;
|
|
47
53
|
ethAccount!: EthAddress;
|
|
48
|
-
ownerAddress!: AztecAddress;
|
|
49
54
|
l2Token!: TokenContract;
|
|
50
55
|
l2Bridge!: TokenBridgeContract;
|
|
51
56
|
|
|
52
|
-
rollup!:
|
|
53
|
-
inbox!:
|
|
54
|
-
outbox!:
|
|
55
|
-
|
|
57
|
+
rollup!: RollupContract;
|
|
58
|
+
inbox!: InboxContract;
|
|
59
|
+
outbox!: OutboxContract;
|
|
60
|
+
cheatCodes!: CheatCodes;
|
|
61
|
+
|
|
62
|
+
deployL1ContractsValues!: DeployAztecL1ContractsReturnType;
|
|
56
63
|
|
|
57
|
-
constructor(
|
|
64
|
+
constructor(
|
|
65
|
+
testName: string,
|
|
66
|
+
opts: SetupOptions = {},
|
|
67
|
+
deployL1ContractsArgs: Partial<DeployAztecL1ContractsArgs> = {},
|
|
68
|
+
) {
|
|
58
69
|
this.logger = createLogger(`e2e:e2e_cross_chain_messaging:${testName}`);
|
|
59
|
-
this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath
|
|
70
|
+
this.snapshotManager = createSnapshotManager(`e2e_cross_chain_messaging/${testName}`, dataPath, opts, {
|
|
71
|
+
initialValidators: [],
|
|
72
|
+
...deployL1ContractsArgs,
|
|
73
|
+
});
|
|
74
|
+
this.requireEpochProven = opts.startProverNode ?? false;
|
|
60
75
|
}
|
|
61
76
|
|
|
62
|
-
async
|
|
63
|
-
|
|
77
|
+
async setup() {
|
|
78
|
+
this.ctx = await this.snapshotManager.setup();
|
|
79
|
+
this.aztecNode = this.ctx.aztecNode;
|
|
80
|
+
this.wallet = this.ctx.wallet;
|
|
81
|
+
this.aztecNodeConfig = this.ctx.aztecNodeConfig;
|
|
82
|
+
this.cheatCodes = this.ctx.cheatCodes;
|
|
83
|
+
this.deployL1ContractsValues = this.ctx.deployL1ContractsValues;
|
|
84
|
+
this.aztecNodeAdmin = this.ctx.aztecNode;
|
|
85
|
+
|
|
86
|
+
if (this.requireEpochProven) {
|
|
87
|
+
// Turn off the watcher to prevent it from keep marking blocks as proven.
|
|
88
|
+
this.ctx.watcher.setIsMarkingAsProven(false);
|
|
89
|
+
}
|
|
64
90
|
}
|
|
65
91
|
|
|
66
|
-
async
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
92
|
+
async advanceToEpochProven(l2TxReceipt: TxReceipt): Promise<EpochNumber> {
|
|
93
|
+
const epoch = await this.rollup.getEpochNumberForCheckpoint(
|
|
94
|
+
CheckpointNumber.fromBlockNumber(l2TxReceipt.blockNumber!),
|
|
95
|
+
);
|
|
96
|
+
// Warp to the next epoch.
|
|
97
|
+
await this.cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
98
|
+
// Wait for the tx to be proven.
|
|
99
|
+
await waitForProven(this.aztecNode, l2TxReceipt, { provenTimeout: 300 });
|
|
100
|
+
// Return the epoch the tx is in.
|
|
101
|
+
return epoch;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async catchUpProvenChain() {
|
|
105
|
+
const bn = await this.aztecNode.getBlockNumber();
|
|
106
|
+
while ((await this.aztecNode.getProvenBlockNumber()) < bn) {
|
|
107
|
+
await sleep(1000);
|
|
108
|
+
}
|
|
72
109
|
}
|
|
73
110
|
|
|
74
111
|
snapshot = <T>(
|
|
@@ -82,29 +119,18 @@ export class CrossChainMessagingTest {
|
|
|
82
119
|
}
|
|
83
120
|
|
|
84
121
|
async applyBaseSnapshots() {
|
|
85
|
-
// Note that we are using the same `
|
|
122
|
+
// Note that we are using the same `wallet`, `aztecNodeConfig` and `aztecNode` across all snapshots.
|
|
86
123
|
// This is to not have issues with different networks.
|
|
87
124
|
|
|
88
125
|
await this.snapshotManager.snapshot(
|
|
89
126
|
'3_accounts',
|
|
90
127
|
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;
|
|
128
|
+
({ deployedAccounts }, { wallet, aztecNodeConfig, aztecNode }) => {
|
|
129
|
+
[this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map(a => a.address);
|
|
130
|
+
this.wallet = wallet;
|
|
106
131
|
this.aztecNode = aztecNode;
|
|
107
132
|
this.aztecNodeConfig = aztecNodeConfig;
|
|
133
|
+
return Promise.resolve();
|
|
108
134
|
},
|
|
109
135
|
);
|
|
110
136
|
|
|
@@ -114,107 +140,62 @@ export class CrossChainMessagingTest {
|
|
|
114
140
|
// Create the token contract state.
|
|
115
141
|
// Move this account thing to addAccounts above?
|
|
116
142
|
this.logger.verbose(`Public deploy accounts...`);
|
|
117
|
-
await publicDeployAccounts(this.
|
|
118
|
-
|
|
119
|
-
const { publicClient, walletClient } = createL1Clients(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
143
|
+
await publicDeployAccounts(this.wallet, [this.ownerAddress, this.user1Address, this.user2Address]);
|
|
120
144
|
|
|
121
|
-
|
|
122
|
-
walletClient,
|
|
123
|
-
publicClient,
|
|
124
|
-
TestERC20Abi,
|
|
125
|
-
TestERC20Bytecode,
|
|
126
|
-
['Underlying', 'UND', walletClient.account.address],
|
|
127
|
-
).then(({ address }) => address);
|
|
145
|
+
this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
128
146
|
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
// allow anyone to mint
|
|
136
|
-
await underlyingERC20.write.setFreeForAll([true], {} as any);
|
|
147
|
+
const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
148
|
+
'Underlying',
|
|
149
|
+
'UND',
|
|
150
|
+
this.l1Client.account.address,
|
|
151
|
+
]).then(({ address }) => address);
|
|
137
152
|
|
|
138
153
|
this.logger.verbose(`Setting up cross chain harness...`);
|
|
139
154
|
this.crossChainTestHarness = await CrossChainTestHarness.new(
|
|
140
155
|
this.aztecNode,
|
|
141
|
-
this.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
this.wallets[0],
|
|
156
|
+
this.l1Client,
|
|
157
|
+
this.wallet,
|
|
158
|
+
this.ownerAddress,
|
|
145
159
|
this.logger,
|
|
146
160
|
underlyingERC20Address,
|
|
147
161
|
);
|
|
148
162
|
|
|
149
163
|
this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
|
|
150
164
|
|
|
151
|
-
return this.toCrossChainContext();
|
|
165
|
+
return this.crossChainTestHarness.toCrossChainContext();
|
|
152
166
|
},
|
|
153
|
-
|
|
154
|
-
this.l2Token =
|
|
155
|
-
this.l2Bridge =
|
|
167
|
+
crossChainContext => {
|
|
168
|
+
this.l2Token = TokenContract.at(crossChainContext.l2Token, this.wallet);
|
|
169
|
+
this.l2Bridge = TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
|
|
156
170
|
|
|
157
171
|
// There is an issue with the reviver so we are getting strings sometimes. Working around it here.
|
|
158
172
|
this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
|
|
159
|
-
this.ownerAddress = AztecAddress.fromString(crossChainContext.ownerAddress.toString());
|
|
160
173
|
const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
|
|
161
174
|
|
|
162
|
-
const
|
|
175
|
+
const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
176
|
+
this.l1Client = l1Client;
|
|
163
177
|
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
});
|
|
169
|
-
const outbox = getContract({
|
|
170
|
-
address: this.aztecNodeConfig.l1Contracts.outboxAddress.toString(),
|
|
171
|
-
abi: OutboxAbi,
|
|
172
|
-
client: walletClient,
|
|
173
|
-
});
|
|
178
|
+
const l1Contracts = this.aztecNodeConfig.l1Contracts;
|
|
179
|
+
this.rollup = new RollupContract(l1Client, l1Contracts.rollupAddress.toString());
|
|
180
|
+
this.inbox = new InboxContract(l1Client, l1Contracts.inboxAddress.toString());
|
|
181
|
+
this.outbox = new OutboxContract(l1Client, l1Contracts.outboxAddress.toString());
|
|
174
182
|
|
|
175
183
|
this.crossChainTestHarness = new CrossChainTestHarness(
|
|
176
184
|
this.aztecNode,
|
|
177
|
-
this.pxe,
|
|
178
185
|
this.logger,
|
|
179
186
|
this.l2Token,
|
|
180
187
|
this.l2Bridge,
|
|
181
188
|
this.ethAccount,
|
|
182
189
|
tokenPortalAddress,
|
|
183
190
|
crossChainContext.underlying,
|
|
184
|
-
|
|
185
|
-
walletClient,
|
|
191
|
+
l1Client,
|
|
186
192
|
this.aztecNodeConfig.l1Contracts,
|
|
187
|
-
this.
|
|
193
|
+
this.wallet,
|
|
194
|
+
this.ownerAddress,
|
|
188
195
|
);
|
|
189
196
|
|
|
190
|
-
|
|
191
|
-
this.inbox = inbox;
|
|
192
|
-
this.outbox = outbox;
|
|
197
|
+
return Promise.resolve();
|
|
193
198
|
},
|
|
194
199
|
);
|
|
195
200
|
}
|
|
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
201
|
}
|
|
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
|
};
|