@aztec/end-to-end 0.0.1-commit.d3ec352c → 0.0.1-commit.d6f2b3f94
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 +3 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +21 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +14 -15
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +123 -136
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/client_flows/data_extractor.js +3 -1
- package/dest/bench/utils.d.ts +9 -8
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +27 -18
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
- 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 +96 -112
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -13
- 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 +92 -71
- package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -3
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +18 -13
- package/dest/e2e_epochs/epochs_test.d.ts +9 -2
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +51 -21
- package/dest/e2e_fees/bridging_race.notest.js +4 -6
- package/dest/e2e_fees/fees_test.d.ts +18 -15
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +126 -141
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +14 -16
- package/dest/e2e_multi_validator/utils.js +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +31 -39
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +4 -4
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +6 -9
- package/dest/e2e_p2p/p2p_network.d.ts +13 -11
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +120 -111
- package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/e2e_p2p/reqresp/utils.js +153 -0
- package/dest/e2e_p2p/shared.d.ts +7 -7
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +16 -20
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
- package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +89 -91
- package/dest/fixtures/e2e_prover_test.d.ts +10 -18
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +91 -103
- package/dest/fixtures/fixtures.d.ts +2 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +1 -2
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +114 -0
- package/dest/fixtures/index.d.ts +2 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +1 -0
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/setup.d.ts +218 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +630 -0
- package/dest/fixtures/setup_p2p_test.d.ts +12 -8
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +32 -24
- package/dest/fixtures/token_utils.d.ts +1 -1
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +7 -4
- package/dest/fixtures/utils.d.ts +5 -638
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -647
- package/dest/fixtures/web3signer.js +1 -1
- 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/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/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +18 -7
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +14 -14
- package/dest/shared/gas_portal_test_harness.d.ts +12 -2
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +1 -1
- package/dest/shared/index.d.ts +2 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/submit-transactions.d.ts +3 -3
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +9 -11
- package/dest/shared/uniswap_l1_l2.d.ts +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +57 -35
- package/dest/simulators/lending_simulator.d.ts +6 -2
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +4 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +63 -35
- package/dest/spartan/tx_metrics.d.ts +88 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +422 -0
- package/dest/spartan/utils/bot.d.ts +27 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +141 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +39 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +21 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +9 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +18 -0
- package/dest/spartan/utils/k8s.d.ts +126 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +375 -0
- package/dest/spartan/utils/nodes.d.ts +41 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/scripts.d.ts +30 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +81 -0
- package/dest/spartan/utils.d.ts +2 -221
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -782
- package/package.json +43 -39
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +145 -208
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +1 -1
- package/src/bench/utils.ts +31 -21
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -142
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +139 -125
- package/src/e2e_deploy_contract/deploy_test.ts +21 -14
- package/src/e2e_epochs/epochs_test.ts +96 -47
- package/src/e2e_fees/bridging_race.notest.ts +4 -10
- package/src/e2e_fees/fees_test.ts +176 -219
- package/src/e2e_l1_publisher/write_json.ts +16 -16
- package/src/e2e_multi_validator/utils.ts +1 -1
- package/src/e2e_nested_contract/nested_contract_test.ts +33 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +7 -10
- package/src/e2e_p2p/p2p_network.ts +180 -183
- package/src/e2e_p2p/reqresp/utils.ts +207 -0
- package/src/e2e_p2p/shared.ts +32 -28
- package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
- package/src/e2e_token_contract/token_contract_test.ts +103 -118
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +103 -140
- package/src/fixtures/fixtures.ts +1 -3
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/ha_setup.ts +184 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup.ts +932 -0
- package/src/fixtures/setup_p2p_test.ts +34 -30
- package/src/fixtures/token_utils.ts +6 -5
- package/src/fixtures/utils.ts +27 -966
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +19 -37
- package/src/shared/gas_portal_test_harness.ts +2 -2
- package/src/shared/index.ts +1 -1
- package/src/shared/submit-transactions.ts +9 -15
- package/src/shared/uniswap_l1_l2.ts +65 -88
- package/src/simulators/lending_simulator.ts +3 -3
- package/src/spartan/setup_test_wallets.ts +81 -26
- package/src/spartan/tx_metrics.ts +376 -0
- package/src/spartan/utils/bot.ts +185 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +27 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +64 -0
- package/src/spartan/utils/k8s.ts +527 -0
- package/src/spartan/utils/nodes.ts +538 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -983
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { waitForProven } from '@aztec/aztec.js/contracts';
|
|
2
3
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
3
|
-
import { createExtendedL1Client
|
|
4
|
-
import {
|
|
4
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
5
|
+
import { InboxContract, OutboxContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
6
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
7
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
8
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
9
|
+
import { TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
|
|
5
10
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
6
11
|
import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
|
|
7
|
-
import { getContract } from 'viem';
|
|
8
12
|
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
9
|
-
import {
|
|
13
|
+
import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
10
14
|
import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
|
|
11
|
-
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
12
15
|
export class CrossChainMessagingTest {
|
|
13
|
-
|
|
16
|
+
requireEpochProven;
|
|
17
|
+
setupOptions;
|
|
18
|
+
deployL1ContractsArgs;
|
|
14
19
|
logger;
|
|
20
|
+
context;
|
|
15
21
|
aztecNode;
|
|
16
22
|
aztecNodeConfig;
|
|
17
23
|
aztecNodeAdmin;
|
|
18
|
-
ctx;
|
|
19
24
|
l1Client;
|
|
20
25
|
wallet;
|
|
21
26
|
ownerAddress;
|
|
@@ -25,84 +30,100 @@ export class CrossChainMessagingTest {
|
|
|
25
30
|
ethAccount;
|
|
26
31
|
l2Token;
|
|
27
32
|
l2Bridge;
|
|
33
|
+
rollup;
|
|
28
34
|
inbox;
|
|
29
35
|
outbox;
|
|
30
36
|
cheatCodes;
|
|
31
37
|
deployL1ContractsValues;
|
|
32
38
|
constructor(testName, opts = {}, deployL1ContractsArgs = {}){
|
|
33
39
|
this.logger = createLogger(`e2e:e2e_cross_chain_messaging:${testName}`);
|
|
34
|
-
this.
|
|
40
|
+
this.setupOptions = opts;
|
|
41
|
+
this.deployL1ContractsArgs = {
|
|
35
42
|
initialValidators: [],
|
|
36
43
|
...deployL1ContractsArgs
|
|
44
|
+
};
|
|
45
|
+
this.requireEpochProven = opts.startProverNode ?? false;
|
|
46
|
+
}
|
|
47
|
+
async setup() {
|
|
48
|
+
this.logger.info('Setting up cross chain messaging test');
|
|
49
|
+
this.context = await setup(0, {
|
|
50
|
+
...this.setupOptions,
|
|
51
|
+
fundSponsoredFPC: true,
|
|
52
|
+
skipAccountDeployment: true,
|
|
53
|
+
l1ContractsArgs: this.deployL1ContractsArgs
|
|
37
54
|
});
|
|
55
|
+
await this.applyBaseSetup();
|
|
38
56
|
}
|
|
39
|
-
async
|
|
40
|
-
await this.
|
|
57
|
+
async advanceToEpochProven(l2TxReceipt) {
|
|
58
|
+
const block = await this.aztecNode.getBlock(l2TxReceipt.blockNumber);
|
|
59
|
+
const epoch = await this.rollup.getEpochNumberForCheckpoint(block.checkpointNumber);
|
|
60
|
+
// Warp to the next epoch.
|
|
61
|
+
await this.cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
62
|
+
// Wait for the tx to be proven.
|
|
63
|
+
await waitForProven(this.aztecNode, l2TxReceipt, {
|
|
64
|
+
provenTimeout: 300
|
|
65
|
+
});
|
|
66
|
+
// Return the epoch the tx is in.
|
|
67
|
+
return epoch;
|
|
41
68
|
}
|
|
42
|
-
async
|
|
43
|
-
|
|
44
|
-
this.aztecNode
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
this.cheatCodes = this.ctx.cheatCodes;
|
|
48
|
-
this.deployL1ContractsValues = this.ctx.deployL1ContractsValues;
|
|
49
|
-
this.aztecNodeAdmin = this.ctx.aztecNode;
|
|
69
|
+
async catchUpProvenChain() {
|
|
70
|
+
const bn = await this.aztecNode.getBlockNumber();
|
|
71
|
+
while(await this.aztecNode.getProvenBlockNumber() < bn){
|
|
72
|
+
await sleep(1000);
|
|
73
|
+
}
|
|
50
74
|
}
|
|
51
|
-
snapshot = (name, apply, restore = ()=>Promise.resolve())=>this.snapshotManager.snapshot(name, apply, restore);
|
|
52
75
|
async teardown() {
|
|
53
|
-
await this.
|
|
76
|
+
await teardown(this.context);
|
|
54
77
|
}
|
|
55
|
-
async
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.user2Address
|
|
73
|
-
]);
|
|
74
|
-
this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
75
|
-
const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
76
|
-
'Underlying',
|
|
77
|
-
'UND',
|
|
78
|
-
this.l1Client.account.address
|
|
79
|
-
]).then(({ address })=>address);
|
|
80
|
-
this.logger.verbose(`Setting up cross chain harness...`);
|
|
81
|
-
this.crossChainTestHarness = await CrossChainTestHarness.new(this.aztecNode, this.l1Client, this.wallet, this.ownerAddress, this.logger, underlyingERC20Address);
|
|
82
|
-
this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
|
|
83
|
-
return this.crossChainTestHarness.toCrossChainContext();
|
|
84
|
-
}, (crossChainContext)=>{
|
|
85
|
-
this.l2Token = TokenContract.at(crossChainContext.l2Token, this.wallet);
|
|
86
|
-
this.l2Bridge = TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
|
|
87
|
-
// There is an issue with the reviver so we are getting strings sometimes. Working around it here.
|
|
88
|
-
this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
|
|
89
|
-
const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
|
|
90
|
-
const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
91
|
-
const inbox = getContract({
|
|
92
|
-
address: this.aztecNodeConfig.l1Contracts.inboxAddress.toString(),
|
|
93
|
-
abi: InboxAbi,
|
|
94
|
-
client: l1Client
|
|
95
|
-
});
|
|
96
|
-
const outbox = getContract({
|
|
97
|
-
address: this.aztecNodeConfig.l1Contracts.outboxAddress.toString(),
|
|
98
|
-
abi: OutboxAbi,
|
|
99
|
-
client: l1Client
|
|
100
|
-
});
|
|
101
|
-
this.crossChainTestHarness = new CrossChainTestHarness(this.aztecNode, this.logger, this.l2Token, this.l2Bridge, this.ethAccount, tokenPortalAddress, crossChainContext.underlying, l1Client, this.aztecNodeConfig.l1Contracts, this.wallet, this.ownerAddress);
|
|
102
|
-
this.l1Client = l1Client;
|
|
103
|
-
this.inbox = inbox;
|
|
104
|
-
this.outbox = outbox;
|
|
105
|
-
return Promise.resolve();
|
|
78
|
+
async applyBaseSetup() {
|
|
79
|
+
// Set up base context fields
|
|
80
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
81
|
+
this.wallet = this.context.wallet;
|
|
82
|
+
this.aztecNodeConfig = this.context.config;
|
|
83
|
+
this.cheatCodes = this.context.cheatCodes;
|
|
84
|
+
this.deployL1ContractsValues = this.context.deployL1ContractsValues;
|
|
85
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
86
|
+
if (this.requireEpochProven) {
|
|
87
|
+
// Turn off the watcher to prevent it from keep marking blocks as proven.
|
|
88
|
+
this.context.watcher.setIsMarkingAsProven(false);
|
|
89
|
+
}
|
|
90
|
+
// Deploy 3 accounts
|
|
91
|
+
this.logger.info('Applying 3_accounts setup');
|
|
92
|
+
const { deployedAccounts } = await deployAccounts(3, this.logger)({
|
|
93
|
+
wallet: this.context.wallet,
|
|
94
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
106
95
|
});
|
|
96
|
+
[this.ownerAddress, this.user1Address, this.user2Address] = deployedAccounts.map((a)=>a.address);
|
|
97
|
+
// Set up cross chain messaging
|
|
98
|
+
this.logger.info('Applying e2e_cross_chain_messaging setup');
|
|
99
|
+
// Create the token contract state.
|
|
100
|
+
this.logger.verbose(`Public deploy accounts...`);
|
|
101
|
+
await publicDeployAccounts(this.wallet, [
|
|
102
|
+
this.ownerAddress,
|
|
103
|
+
this.user1Address,
|
|
104
|
+
this.user2Address
|
|
105
|
+
]);
|
|
106
|
+
this.l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
107
|
+
const underlyingERC20Address = await deployL1Contract(this.l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
108
|
+
'Underlying',
|
|
109
|
+
'UND',
|
|
110
|
+
this.l1Client.account.address
|
|
111
|
+
]).then(({ address })=>address);
|
|
112
|
+
this.logger.verbose(`Setting up cross chain harness...`);
|
|
113
|
+
this.crossChainTestHarness = await CrossChainTestHarness.new(this.aztecNode, this.l1Client, this.wallet, this.ownerAddress, this.logger, underlyingERC20Address);
|
|
114
|
+
this.logger.verbose(`L2 token deployed to: ${this.crossChainTestHarness.l2Token.address}`);
|
|
115
|
+
const crossChainContext = this.crossChainTestHarness.toCrossChainContext();
|
|
116
|
+
this.l2Token = TokenContract.at(crossChainContext.l2Token, this.wallet);
|
|
117
|
+
this.l2Bridge = TokenBridgeContract.at(crossChainContext.l2Bridge, this.wallet);
|
|
118
|
+
// There is an issue with the reviver so we are getting strings sometimes. Working around it here.
|
|
119
|
+
this.ethAccount = EthAddress.fromString(crossChainContext.ethAccount.toString());
|
|
120
|
+
const tokenPortalAddress = EthAddress.fromString(crossChainContext.tokenPortal.toString());
|
|
121
|
+
const l1Client = createExtendedL1Client(this.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
122
|
+
this.l1Client = l1Client;
|
|
123
|
+
const l1Contracts = this.aztecNodeConfig.l1Contracts;
|
|
124
|
+
this.rollup = new RollupContract(l1Client, l1Contracts.rollupAddress.toString());
|
|
125
|
+
this.inbox = new InboxContract(l1Client, l1Contracts.inboxAddress.toString());
|
|
126
|
+
this.outbox = new OutboxContract(l1Client, l1Contracts.outboxAddress.toString());
|
|
127
|
+
this.crossChainTestHarness = new CrossChainTestHarness(this.aztecNode, this.logger, this.l2Token, this.l2Bridge, this.ethAccount, tokenPortalAddress, crossChainContext.underlying, l1Client, this.aztecNodeConfig.l1Contracts, this.wallet, this.ownerAddress);
|
|
107
128
|
}
|
|
108
129
|
}
|
|
@@ -9,8 +9,9 @@ import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
|
9
9
|
import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
|
|
10
10
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
11
11
|
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
12
|
+
import { type EndToEndContext } from '../fixtures/setup.js';
|
|
12
13
|
export declare class DeployTest {
|
|
13
|
-
|
|
14
|
+
context: EndToEndContext;
|
|
14
15
|
logger: Logger;
|
|
15
16
|
wallet: TestWallet;
|
|
16
17
|
defaultAccountAddress: AztecAddress;
|
|
@@ -19,7 +20,7 @@ export declare class DeployTest {
|
|
|
19
20
|
constructor(testName: string);
|
|
20
21
|
setup(): Promise<this>;
|
|
21
22
|
teardown(): Promise<void>;
|
|
22
|
-
private
|
|
23
|
+
private applyInitialAccount;
|
|
23
24
|
registerContract<T extends ContractBase>(wallet: Wallet, contractArtifact: ContractArtifactClass<T>, opts?: {
|
|
24
25
|
salt?: Fr;
|
|
25
26
|
publicKeys?: PublicKeys;
|
|
@@ -33,4 +34,4 @@ export type ContractArtifactClass<T extends ContractBase> = {
|
|
|
33
34
|
at(address: AztecAddress, wallet: Wallet): T;
|
|
34
35
|
artifact: ContractArtifact;
|
|
35
36
|
};
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZGVwbG95X2NvbnRyYWN0L2RlcGxveV90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUE4QyxNQUFNLDJCQUEyQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQW1DLE1BQU0sc0JBQXNCLENBQUM7QUFFN0YscUJBQWEsVUFBVTtJQUNkLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE1BQU0sRUFBRyxVQUFVLENBQUM7SUFDcEIscUJBQXFCLEVBQUcsWUFBWSxDQUFDO0lBQ3JDLFNBQVMsRUFBRyxTQUFTLENBQUM7SUFDdEIsY0FBYyxFQUFHLGNBQWMsQ0FBQztJQUV2QyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBRTNCO0lBRUssS0FBSyxrQkFXVjtJQUVLLFFBQVEsa0JBRWI7WUFFYSxtQkFBbUI7SUFZM0IsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLFlBQVksRUFDM0MsTUFBTSxFQUFFLE1BQU0sRUFDZCxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFDMUMsSUFBSSxHQUFFO1FBQ0osSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1YsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBQ3hCLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN6QixRQUFRLENBQUMsRUFBRSxZQUFZLENBQUM7S0FDcEIsR0FDTCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBV1o7Q0FDRjtBQUVELE1BQU0sTUFBTSx3QkFBd0IsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztBQUVsRyxNQUFNLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxTQUFTLFlBQVksSUFBSTtJQUMxRCxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QyxRQUFRLEVBQUUsZ0JBQWdCLENBQUM7Q0FDNUIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_test.d.ts","sourceRoot":"","sources":["../../src/e2e_deploy_contract/deploy_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8C,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy_test.d.ts","sourceRoot":"","sources":["../../src/e2e_deploy_contract/deploy_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,YAAY,EAA8C,MAAM,2BAA2B,CAAC;AAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,sBAAsB,CAAC;AAE7F,qBAAa,UAAU;IACd,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAEvC,YAAY,QAAQ,EAAE,MAAM,EAE3B;IAEK,KAAK,kBAWV;IAEK,QAAQ,kBAEb;YAEa,mBAAmB;IAY3B,gBAAgB,CAAC,CAAC,SAAS,YAAY,EAC3C,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAC1C,IAAI,GAAE;QACJ,IAAI,CAAC,EAAE,EAAE,CAAC;QACV,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACpB,GACL,OAAO,CAAC,CAAC,CAAC,CAWZ;CACF;AAED,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,YAAY,IAAI;IAC1D,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;CAC5B,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
3
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
4
|
-
import {
|
|
5
|
-
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
4
|
+
import { deployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
6
5
|
export class DeployTest {
|
|
7
|
-
|
|
6
|
+
context;
|
|
8
7
|
logger;
|
|
9
8
|
wallet;
|
|
10
9
|
defaultAccountAddress;
|
|
@@ -12,23 +11,29 @@ export class DeployTest {
|
|
|
12
11
|
aztecNodeAdmin;
|
|
13
12
|
constructor(testName){
|
|
14
13
|
this.logger = createLogger(`e2e:e2e_deploy_contract:${testName}`);
|
|
15
|
-
this.snapshotManager = createSnapshotManager(`e2e_deploy_contract/${testName}`, dataPath);
|
|
16
14
|
}
|
|
17
15
|
async setup() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
this.logger.info('Setting up test environment');
|
|
17
|
+
this.context = await setup(0, {
|
|
18
|
+
fundSponsoredFPC: true,
|
|
19
|
+
skipAccountDeployment: true
|
|
20
|
+
});
|
|
21
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
22
|
+
this.wallet = this.context.wallet;
|
|
23
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
24
|
+
await this.applyInitialAccount();
|
|
22
25
|
return this;
|
|
23
26
|
}
|
|
24
27
|
async teardown() {
|
|
25
|
-
await this.
|
|
28
|
+
await teardown(this.context);
|
|
26
29
|
}
|
|
27
|
-
async
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
async applyInitialAccount() {
|
|
31
|
+
this.logger.info('Applying initial account setup');
|
|
32
|
+
const { deployedAccounts } = await deployAccounts(1, this.logger)({
|
|
33
|
+
wallet: this.context.wallet,
|
|
34
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
31
35
|
});
|
|
36
|
+
this.defaultAccountAddress = deployedAccounts[0].address;
|
|
32
37
|
}
|
|
33
38
|
async registerContract(wallet, contractArtifact, opts = {}) {
|
|
34
39
|
const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
|
|
@@ -3,12 +3,14 @@ import { Fr } from '@aztec/aztec.js/fields';
|
|
|
3
3
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
4
4
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
5
5
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
6
|
-
import { type ExtendedViemWalletClient } from '@aztec/ethereum';
|
|
7
6
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
8
7
|
import { ChainMonitor, type Delayer } from '@aztec/ethereum/test';
|
|
8
|
+
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
9
9
|
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
10
10
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
11
|
+
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
11
12
|
import { ProverNode, type ProverNodeConfig } from '@aztec/prover-node';
|
|
13
|
+
import type { PXEConfig } from '@aztec/pxe/config';
|
|
12
14
|
import { type SequencerClient, type SequencerEvents } from '@aztec/sequencer-client';
|
|
13
15
|
import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
|
|
14
16
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
@@ -19,6 +21,8 @@ export declare const ARCHIVER_POLL_INTERVAL = 50;
|
|
|
19
21
|
export declare const DEFAULT_L1_BLOCK_TIME: number;
|
|
20
22
|
export type EpochsTestOpts = Partial<SetupOptions> & {
|
|
21
23
|
numberOfAccounts?: number;
|
|
24
|
+
pxeOpts?: Partial<PXEConfig>;
|
|
25
|
+
aztecSlotDurationInL1Slots?: number;
|
|
22
26
|
};
|
|
23
27
|
export type TrackedSequencerEvent = {
|
|
24
28
|
[K in keyof SequencerEvents]: Parameters<SequencerEvents[K]>[0] & {
|
|
@@ -49,6 +53,7 @@ export declare class EpochsTestContext {
|
|
|
49
53
|
L2_SLOT_DURATION_IN_S: number;
|
|
50
54
|
static setup(opts?: EpochsTestOpts): Promise<EpochsTestContext>;
|
|
51
55
|
static getSlotDurations(opts?: EpochsTestOpts): {
|
|
56
|
+
l1PublishingTime: number;
|
|
52
57
|
ethereumSlotDuration: number;
|
|
53
58
|
aztecSlotDuration: number;
|
|
54
59
|
aztecEpochDuration: number;
|
|
@@ -78,6 +83,8 @@ export declare class EpochsTestContext {
|
|
|
78
83
|
waitForNodeToSync(blockNumber: BlockNumber, type: 'proven' | 'finalized' | 'historic'): Promise<void>;
|
|
79
84
|
/** Registers the SpamContract on the given wallet. */
|
|
80
85
|
registerSpamContract(wallet: Wallet, salt?: Fr): Promise<SpamContract>;
|
|
86
|
+
/** Registers the TestContract on the given wallet. */
|
|
87
|
+
registerTestContract(wallet: Wallet, salt?: Fr): Promise<TestContract>;
|
|
81
88
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */
|
|
82
89
|
createL1Client(): Promise<{
|
|
83
90
|
client: ExtendedViemWalletClient;
|
|
@@ -90,4 +97,4 @@ export declare class EpochsTestContext {
|
|
|
90
97
|
stateChanges: TrackedSequencerEvent[];
|
|
91
98
|
};
|
|
92
99
|
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hzX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZXBvY2hzL2Vwb2Noc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQWtCLEtBQUssT0FBTyxFQUFxQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLG9CQUFvQixDQUFDO0FBRTVGLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxlQUFlLEVBR3JCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,16 +4,18 @@ import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/cont
|
|
|
4
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
5
|
import { MerkleTreeId } from '@aztec/aztec.js/trees';
|
|
6
6
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
7
|
-
import {
|
|
7
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
8
|
+
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
8
9
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
9
10
|
import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
|
|
10
11
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
11
12
|
import { SecretValue } from '@aztec/foundation/config';
|
|
12
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
13
|
-
import {
|
|
13
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
|
+
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
14
15
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
15
16
|
import { sleep } from '@aztec/foundation/sleep';
|
|
16
17
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
18
|
+
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
17
19
|
import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
18
20
|
import { SequencerState } from '@aztec/sequencer-client';
|
|
19
21
|
import { EthAddress } from '@aztec/stdlib/block';
|
|
@@ -53,10 +55,12 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
53
55
|
static getSlotDurations(opts = {}) {
|
|
54
56
|
const envEthereumSlotDuration = process.env.L1_BLOCK_TIME ? parseInt(process.env.L1_BLOCK_TIME) : DEFAULT_L1_BLOCK_TIME;
|
|
55
57
|
const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
|
|
56
|
-
const aztecSlotDuration = opts.aztecSlotDuration ??
|
|
58
|
+
const aztecSlotDuration = opts.aztecSlotDuration ?? (opts.aztecSlotDurationInL1Slots ?? 2) * ethereumSlotDuration;
|
|
57
59
|
const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
|
|
58
60
|
const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
|
|
61
|
+
const l1PublishingTime = opts.l1PublishingTime ?? 1;
|
|
59
62
|
return {
|
|
63
|
+
l1PublishingTime,
|
|
60
64
|
ethereumSlotDuration,
|
|
61
65
|
aztecSlotDuration,
|
|
62
66
|
aztecEpochDuration,
|
|
@@ -64,7 +68,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
64
68
|
};
|
|
65
69
|
}
|
|
66
70
|
async setup(opts = {}) {
|
|
67
|
-
const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs } = EpochsTestContext.getSlotDurations(opts);
|
|
71
|
+
const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs, l1PublishingTime } = EpochsTestContext.getSlotDurations(opts);
|
|
68
72
|
this.L1_BLOCK_TIME_IN_S = ethereumSlotDuration;
|
|
69
73
|
this.L2_SLOT_DURATION_IN_S = aztecSlotDuration;
|
|
70
74
|
// Set up system without any account nor protocol contracts
|
|
@@ -74,8 +78,6 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
74
78
|
checkIntervalMs: 50,
|
|
75
79
|
archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
|
|
76
80
|
worldStateBlockCheckIntervalMS: WORLD_STATE_BLOCK_CHECK_INTERVAL,
|
|
77
|
-
skipProtocolContracts: true,
|
|
78
|
-
salt: 1,
|
|
79
81
|
aztecEpochDuration,
|
|
80
82
|
aztecSlotDuration,
|
|
81
83
|
ethereumSlotDuration,
|
|
@@ -92,7 +94,13 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
92
94
|
worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
|
|
93
95
|
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
94
96
|
slasherFlavor: 'none',
|
|
97
|
+
l1PublishingTime,
|
|
95
98
|
...opts
|
|
99
|
+
}, // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
100
|
+
// Can be overridden via opts.pxeOpts.
|
|
101
|
+
{
|
|
102
|
+
syncChainTip: 'checkpointed',
|
|
103
|
+
...opts.pxeOpts
|
|
96
104
|
});
|
|
97
105
|
this.context = context;
|
|
98
106
|
this.proverNodes = context.proverNode ? [
|
|
@@ -124,7 +132,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
124
132
|
l1StartBlock: await this.rollup.getL1StartBlock(),
|
|
125
133
|
l1GenesisTime: await this.rollup.getL1GenesisTime(),
|
|
126
134
|
ethereumSlotDuration,
|
|
127
|
-
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs())
|
|
135
|
+
proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
|
|
136
|
+
targetCommitteeSize: await this.rollup.getTargetCommitteeSize()
|
|
128
137
|
};
|
|
129
138
|
this.logger.info(`L2 genesis at L1 block ${this.constants.l1StartBlock} (timestamp ${this.constants.l1GenesisTime})`);
|
|
130
139
|
}
|
|
@@ -137,16 +146,23 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
137
146
|
async createProverNode(opts = {}) {
|
|
138
147
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
139
148
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
|
|
149
|
+
const proverIndex = this.proverNodes.length + 1;
|
|
150
|
+
const { mockGossipSubNetwork } = this.context;
|
|
151
|
+
const proverNode = await withLoggerBindings({
|
|
152
|
+
actor: `prover-${proverIndex}`
|
|
153
|
+
}, ()=>createAndSyncProverNode(proverNodePrivateKey, {
|
|
154
|
+
...this.context.config,
|
|
155
|
+
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined
|
|
143
156
|
}, {
|
|
144
157
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
145
|
-
proverId: EthAddress.fromNumber(
|
|
158
|
+
proverId: EthAddress.fromNumber(proverIndex),
|
|
146
159
|
dontStart: opts.dontStart,
|
|
147
160
|
...opts
|
|
148
|
-
}, this.context.aztecNode,
|
|
149
|
-
dateProvider: this.context.dateProvider
|
|
161
|
+
}, this.context.aztecNode, this.context.prefilledPublicData ?? [], {
|
|
162
|
+
dateProvider: this.context.dateProvider,
|
|
163
|
+
p2pClientDeps: mockGossipSubNetwork ? {
|
|
164
|
+
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
165
|
+
} : undefined
|
|
150
166
|
}));
|
|
151
167
|
this.proverNodes.push(proverNode);
|
|
152
168
|
return proverNode;
|
|
@@ -167,7 +183,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
167
183
|
});
|
|
168
184
|
}
|
|
169
185
|
async createNode(opts = {}) {
|
|
170
|
-
const
|
|
186
|
+
const nodeIndex = this.nodes.length + 1;
|
|
187
|
+
const actorPrefix = opts.disableValidator ? 'node' : 'validator';
|
|
171
188
|
const { mockGossipSubNetwork } = this.context;
|
|
172
189
|
const resolvedConfig = {
|
|
173
190
|
...this.context.config,
|
|
@@ -175,7 +192,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
175
192
|
};
|
|
176
193
|
const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
|
|
177
194
|
const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
|
|
178
|
-
const node = await
|
|
195
|
+
const node = await withLoggerBindings({
|
|
196
|
+
actor: `${actorPrefix}-${nodeIndex}`
|
|
197
|
+
}, ()=>AztecNodeService.createAndSync({
|
|
179
198
|
...resolvedConfig,
|
|
180
199
|
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
181
200
|
validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
|
|
@@ -217,10 +236,10 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
217
236
|
await waitUntilL1Timestamp(this.l1Client, start - BigInt(this.L1_BLOCK_TIME_IN_S), undefined, 30 * this.epochDuration);
|
|
218
237
|
return start;
|
|
219
238
|
}
|
|
220
|
-
/** Waits until the given checkpoint number is mined. */ async waitUntilCheckpointNumber(target, timeout =
|
|
239
|
+
/** Waits until the given checkpoint number is mined. */ async waitUntilCheckpointNumber(target, timeout = 120) {
|
|
221
240
|
await retryUntil(()=>Promise.resolve(target <= this.monitor.checkpointNumber), `Wait until checkpoint ${target}`, timeout, 0.1);
|
|
222
241
|
}
|
|
223
|
-
/** Waits until the given checkpoint number is marked as proven. */ async waitUntilProvenCheckpointNumber(target, timeout =
|
|
242
|
+
/** Waits until the given checkpoint number is marked as proven. */ async waitUntilProvenCheckpointNumber(target, timeout = 120) {
|
|
224
243
|
await retryUntil(()=>Promise.resolve(target <= this.monitor.provenCheckpointNumber), `Wait proven checkpoint ${target}`, timeout, 0.1);
|
|
225
244
|
return this.monitor.provenCheckpointNumber;
|
|
226
245
|
}
|
|
@@ -249,7 +268,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
249
268
|
tips
|
|
250
269
|
});
|
|
251
270
|
if (type === 'proven') {
|
|
252
|
-
synched = tips.proven.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
|
|
271
|
+
synched = tips.proven.block.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
|
|
253
272
|
} else if (type === 'finalized') {
|
|
254
273
|
synched = syncState.finalizedBlockNumber >= blockNumber;
|
|
255
274
|
} else {
|
|
@@ -268,6 +287,17 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
268
287
|
await wallet.registerContract(instance, SpamContract.artifact);
|
|
269
288
|
return SpamContract.at(instance.address, wallet);
|
|
270
289
|
}
|
|
290
|
+
/** Registers the TestContract on the given wallet. */ async registerTestContract(wallet, salt = Fr.ZERO) {
|
|
291
|
+
const instance = await getContractInstanceFromInstantiationParams(TestContract.artifact, {
|
|
292
|
+
constructorArgs: [],
|
|
293
|
+
constructorArtifact: undefined,
|
|
294
|
+
salt,
|
|
295
|
+
publicKeys: undefined,
|
|
296
|
+
deployer: undefined
|
|
297
|
+
});
|
|
298
|
+
await wallet.registerContract(instance, TestContract.artifact);
|
|
299
|
+
return TestContract.at(instance.address, wallet);
|
|
300
|
+
}
|
|
271
301
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
|
|
272
302
|
const { client, delayer } = withDelayer(createExtendedL1Client([
|
|
273
303
|
...this.l1Client.chain.rpcUrls.default.http
|
|
@@ -294,11 +324,11 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
294
324
|
watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
|
|
295
325
|
const stateChanges = [];
|
|
296
326
|
const failEvents = [];
|
|
297
|
-
// Note we do not include the 'tx-count-check-failed' event here, since it is fine if we dont build
|
|
327
|
+
// Note we do not include the 'block-tx-count-check-failed' event here, since it is fine if we dont build
|
|
298
328
|
// due to lack of txs available.
|
|
299
329
|
const failEventsKeys = [
|
|
300
330
|
'block-build-failed',
|
|
301
|
-
'
|
|
331
|
+
'checkpoint-publish-failed',
|
|
302
332
|
'proposer-rollup-check-failed'
|
|
303
333
|
];
|
|
304
334
|
const makeEvent = (i, eventName, args)=>({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
-
import { Fq } from '@aztec/foundation/
|
|
3
|
+
import { Fq } from '@aztec/foundation/curves/bn254';
|
|
4
4
|
import { sleep } from '@aztec/foundation/sleep';
|
|
5
5
|
import { jest } from '@jest/globals';
|
|
6
6
|
import { FeesTest } from './fees_test.js';
|
|
@@ -16,10 +16,8 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
16
16
|
minTxsPerBlock: 0
|
|
17
17
|
});
|
|
18
18
|
beforeAll(async ()=>{
|
|
19
|
-
await t.
|
|
20
|
-
|
|
21
|
-
await t.applySetupFeeJuiceSnapshot();
|
|
22
|
-
({ wallet, logger } = await t.setup());
|
|
19
|
+
await t.setup();
|
|
20
|
+
({ wallet, logger } = t);
|
|
23
21
|
});
|
|
24
22
|
afterAll(async ()=>{
|
|
25
23
|
await t.teardown();
|
|
@@ -56,7 +54,7 @@ describe('e2e_fees bridging_race', ()=>{
|
|
|
56
54
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
57
55
|
await t.feeJuiceContract.methods.claim(bobsAddress, claim.claimAmount, secret, index).send({
|
|
58
56
|
from: bobsAddress
|
|
59
|
-
})
|
|
57
|
+
});
|
|
60
58
|
const [balance] = await t.getGasBalanceFn(bobsAddress);
|
|
61
59
|
expect(balance).toEqual(claim.claimAmount);
|
|
62
60
|
});
|