@aztec/end-to-end 0.0.1-commit.fce3e4f → 0.0.1-commit.ff7989d6c
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 +15 -16
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +126 -139
- 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 +9 -8
- 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 +106 -112
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -14
- 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 +5 -4
- 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 +25 -15
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +100 -51
- package/dest/e2e_fees/bridging_race.notest.js +4 -6
- package/dest/e2e_fees/fees_test.d.ts +21 -17
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +128 -143
- 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 +14 -12
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +135 -112
- 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 +177 -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 +18 -21
- 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 +19 -10
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +99 -91
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +30 -0
- package/dest/fixtures/e2e_prover_test.d.ts +13 -21
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +114 -133
- package/dest/fixtures/fixtures.d.ts +6 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +8 -3
- 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 +116 -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 +235 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +605 -0
- package/dest/fixtures/setup_p2p_test.d.ts +16 -9
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +43 -32
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +10 -6
- package/dest/fixtures/utils.d.ts +5 -637
- 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 -6
- 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 +3 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +4 -4
- 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/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -23
- package/dest/spartan/setup_test_wallets.d.ts +12 -4
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +94 -36
- 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 +28 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +142 -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 +128 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +381 -0
- package/dest/spartan/utils/nodes.d.ts +40 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +460 -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 -218
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -749
- package/dest/test-wallet/test_wallet.d.ts +83 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +214 -0
- package/dest/test-wallet/utils.d.ts +41 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +71 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +40 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +103 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +46 -41
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +148 -215
- 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 +114 -143
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -126
- package/src/e2e_deploy_contract/deploy_test.ts +22 -15
- package/src/e2e_epochs/epochs_test.ts +162 -113
- package/src/e2e_fees/bridging_race.notest.ts +5 -11
- package/src/e2e_fees/fees_test.ts +171 -228
- 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 +204 -185
- package/src/e2e_p2p/reqresp/utils.ts +235 -0
- package/src/e2e_p2p/shared.ts +33 -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 +113 -119
- package/src/fixtures/authwit_proxy.ts +50 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +130 -177
- package/src/fixtures/fixtures.ts +12 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup.ts +896 -0
- package/src/fixtures/setup_p2p_test.ts +43 -47
- package/src/fixtures/token_utils.ts +7 -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/guides/up_quick_start.sh +3 -3
- 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 -36
- package/src/shared/gas_portal_test_harness.ts +2 -2
- package/src/shared/index.ts +2 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +14 -16
- package/src/shared/uniswap_l1_l2.ts +66 -89
- package/src/simulators/lending_simulator.ts +3 -3
- package/src/simulators/token_simulator.ts +1 -29
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +136 -27
- package/src/spartan/tx_metrics.ts +376 -0
- package/src/spartan/utils/bot.ts +188 -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 +65 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +535 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -942
- package/src/test-wallet/test_wallet.ts +306 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +43 -0
- package/src/test-wallet/worker_wallet.ts +165 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
- 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
|
@@ -17,7 +17,7 @@ const AZTEC_SLOT_DURATION = ETHEREUM_SLOT_DURATION * 2;
|
|
|
17
17
|
const SLASHING_UNIT = BigInt(1e18);
|
|
18
18
|
const SLASHING_AMOUNT = SLASHING_UNIT * 3n;
|
|
19
19
|
// How many epochs it may take to set everything up, so we dont slash during this period
|
|
20
|
-
const SETUP_EPOCH_DURATION =
|
|
20
|
+
const SETUP_EPOCH_DURATION = 8;
|
|
21
21
|
export class P2PInactivityTest {
|
|
22
22
|
test;
|
|
23
23
|
nodes;
|
|
@@ -67,8 +67,8 @@ export class P2PInactivityTest {
|
|
|
67
67
|
return new P2PInactivityTest(test, opts);
|
|
68
68
|
}
|
|
69
69
|
async setup() {
|
|
70
|
-
await this.test.applyBaseSnapshots();
|
|
71
70
|
await this.test.setup();
|
|
71
|
+
await this.test.applyBaseSetup();
|
|
72
72
|
// Set slashing penalties for inactivity
|
|
73
73
|
const { rollup } = await this.test.getContracts();
|
|
74
74
|
const [activationThreshold, ejectionThreshold, localEjectionThreshold] = await Promise.all([
|
|
@@ -81,7 +81,7 @@ export class P2PInactivityTest {
|
|
|
81
81
|
this.test.ctx.aztecNodeConfig.slashInactivityPenalty = SLASHING_AMOUNT;
|
|
82
82
|
this.rollup = rollup;
|
|
83
83
|
if (!this.keepInitialNode) {
|
|
84
|
-
await this.test.ctx.
|
|
84
|
+
await this.test.ctx.aztecNodeService.stop();
|
|
85
85
|
}
|
|
86
86
|
// Create all active nodes
|
|
87
87
|
this.activeNodes = await createNodes(this.test.ctx.aztecNodeConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode), BOOT_NODE_UDP_PORT, this.test.prefilledPublicData, this.dataDir, undefined, Number(this.keepInitialNode));
|
|
@@ -93,7 +93,7 @@ export class P2PInactivityTest {
|
|
|
93
93
|
this.inactiveNodes = await createNodes(inactiveConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, this.inactiveNodeCount, BOOT_NODE_UDP_PORT, this.test.prefilledPublicData, this.dataDir, undefined, NUM_NODES - this.inactiveNodeCount);
|
|
94
94
|
this.nodes = [
|
|
95
95
|
...this.keepInitialNode ? [
|
|
96
|
-
this.test.ctx.
|
|
96
|
+
this.test.ctx.aztecNodeService
|
|
97
97
|
] : [],
|
|
98
98
|
...this.activeNodes,
|
|
99
99
|
...this.inactiveNodes
|
|
@@ -109,11 +109,8 @@ export class P2PInactivityTest {
|
|
|
109
109
|
// Wait for P2P mesh to be fully formed before starting slashing period
|
|
110
110
|
// This prevents race conditions where validators propose blocks before the network is ready
|
|
111
111
|
await this.test.waitForP2PMeshConnectivity(this.nodes, NUM_NODES);
|
|
112
|
-
|
|
113
|
-
this.test.
|
|
114
|
-
await this.test.ctx.cheatCodes.rollup.advanceToEpoch(EpochNumber(SETUP_EPOCH_DURATION + 1), {
|
|
115
|
-
offset: -ethereumSlotDuration
|
|
116
|
-
});
|
|
112
|
+
this.test.logger.warn(`Advancing to epoch ${SETUP_EPOCH_DURATION - 1} (slashing will start after it is completed)`);
|
|
113
|
+
await this.test.ctx.cheatCodes.rollup.advanceToEpoch(EpochNumber(SETUP_EPOCH_DURATION - 1));
|
|
117
114
|
return this;
|
|
118
115
|
}
|
|
119
116
|
async teardown() {
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
-
import { type EmpireSlashingProposerContract,
|
|
4
|
+
import { type EmpireSlashingProposerContract, RollupContract, type TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
5
6
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
7
|
+
import type { ViemClient } from '@aztec/ethereum/types';
|
|
6
8
|
import { type Logger } from '@aztec/foundation/log';
|
|
7
9
|
import { SlasherAbi } from '@aztec/l1-artifacts';
|
|
8
10
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
9
11
|
import type { BootstrapNode } from '@aztec/p2p/bootstrap';
|
|
10
12
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
11
13
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
12
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
13
14
|
import { type GetContractReturnType } from 'viem';
|
|
14
|
-
import { type
|
|
15
|
-
import {
|
|
15
|
+
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
16
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
16
17
|
export declare const WAIT_FOR_TX_TIMEOUT: number;
|
|
17
18
|
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
18
19
|
aztecSlotDuration: number;
|
|
@@ -26,7 +27,7 @@ export declare class P2PNetworkTest {
|
|
|
26
27
|
numberOfValidators: number;
|
|
27
28
|
numberOfNodes: number;
|
|
28
29
|
private metricsPort?;
|
|
29
|
-
|
|
30
|
+
context: EndToEndContext;
|
|
30
31
|
baseAccountPrivateKey: `0x${string}`;
|
|
31
32
|
baseAccount: {
|
|
32
33
|
address: `0x${string}`;
|
|
@@ -253,7 +254,7 @@ export declare class P2PNetworkTest {
|
|
|
253
254
|
};
|
|
254
255
|
logger: Logger;
|
|
255
256
|
monitor: ChainMonitor;
|
|
256
|
-
ctx:
|
|
257
|
+
ctx: EndToEndContext;
|
|
257
258
|
attesterPrivateKeys: `0x${string}`[];
|
|
258
259
|
attesterPublicKeys: string[];
|
|
259
260
|
peerIdPrivateKeys: string[];
|
|
@@ -264,8 +265,10 @@ export declare class P2PNetworkTest {
|
|
|
264
265
|
defaultAccountAddress?: AztecAddress;
|
|
265
266
|
spamContract?: SpamContract;
|
|
266
267
|
bootstrapNode?: BootstrapNode;
|
|
267
|
-
|
|
268
|
-
|
|
268
|
+
private setupOptions;
|
|
269
|
+
private deployL1ContractsArgs;
|
|
270
|
+
constructor(testName: string, bootstrapNodeEnr: string, bootNodePort: number, numberOfValidators: number, initialValidatorConfig: SetupOptions, numberOfNodes?: number, metricsPort?: number | undefined, startProverNode?: boolean);
|
|
271
|
+
static create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }: {
|
|
269
272
|
testName: string;
|
|
270
273
|
numberOfNodes: number;
|
|
271
274
|
numberOfValidators: number;
|
|
@@ -273,20 +276,19 @@ export declare class P2PNetworkTest {
|
|
|
273
276
|
metricsPort?: number;
|
|
274
277
|
initialConfig?: SetupOptions;
|
|
275
278
|
startProverNode?: boolean;
|
|
276
|
-
mockZkPassportVerifier?: boolean;
|
|
277
279
|
}): Promise<P2PNetworkTest>;
|
|
278
280
|
get fundedAccount(): InitialAccountData;
|
|
279
281
|
addBootstrapNode(): Promise<void>;
|
|
280
282
|
getValidators(): {
|
|
281
283
|
validators: Operator[];
|
|
282
284
|
};
|
|
283
|
-
|
|
285
|
+
applyBaseSetup(): Promise<void>;
|
|
284
286
|
setupAccount(): Promise<void>;
|
|
285
287
|
deploySpamContract(): Promise<void>;
|
|
286
288
|
removeInitialNode(): Promise<void>;
|
|
287
289
|
sendDummyTx(): Promise<{
|
|
288
290
|
receipt: import("viem").TransactionReceipt;
|
|
289
|
-
state: import("@aztec/ethereum").L1TxState;
|
|
291
|
+
state: import("@aztec/ethereum/l1-tx-utils").L1TxState;
|
|
290
292
|
}>;
|
|
291
293
|
private _sendDummyTx;
|
|
292
294
|
setup(): Promise<void>;
|
|
@@ -310,4 +312,4 @@ export declare class P2PNetworkTest {
|
|
|
310
312
|
slashFactory: SlashFactoryContract;
|
|
311
313
|
}>;
|
|
312
314
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCxLQUFLLDhCQUE4QixFQUVuQyxjQUFjLEVBQ2QsS0FBSyw2QkFBNkIsRUFDbkMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSzlELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUczRSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBQ3BCLEtBQUssWUFBWSxFQU1sQixNQUFNLHNCQUFzQixDQUFDO0FBTzlCLE9BQU8sS0FBSyxFQUFF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAc,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
-
import {
|
|
3
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
4
|
+
import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
6
|
+
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
7
|
+
import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
4
8
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
5
9
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
6
10
|
import { SecretValue } from '@aztec/foundation/config';
|
|
@@ -11,14 +15,14 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
|
11
15
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
12
16
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
13
17
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
18
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
14
19
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
15
20
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
16
21
|
import getPort from 'get-port';
|
|
17
22
|
import { getAddress, getContract } from 'viem';
|
|
18
23
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
24
|
+
import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, setup, teardown } from '../fixtures/setup.js';
|
|
19
25
|
import { ATTESTER_PRIVATE_KEYS_START_INDEX, createValidatorConfig, generatePrivateKeys } from '../fixtures/setup_p2p_test.js';
|
|
20
|
-
import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
|
|
21
|
-
import { getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
22
26
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
23
27
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
24
28
|
const BOOTSTRAP_NODE_PRIVATE_KEY = '080212208f988fc0899e4a73a5aee4d271a5f20670603a756ad8d84f2c94263a6427c591';
|
|
@@ -36,7 +40,7 @@ export class P2PNetworkTest {
|
|
|
36
40
|
numberOfValidators;
|
|
37
41
|
numberOfNodes;
|
|
38
42
|
metricsPort;
|
|
39
|
-
|
|
43
|
+
context;
|
|
40
44
|
baseAccountPrivateKey;
|
|
41
45
|
baseAccount;
|
|
42
46
|
logger;
|
|
@@ -53,8 +57,11 @@ export class P2PNetworkTest {
|
|
|
53
57
|
defaultAccountAddress;
|
|
54
58
|
spamContract;
|
|
55
59
|
bootstrapNode;
|
|
60
|
+
// Store setup options for use in setup()
|
|
61
|
+
setupOptions;
|
|
62
|
+
deployL1ContractsArgs;
|
|
56
63
|
constructor(testName, bootstrapNodeEnr, bootNodePort, numberOfValidators, initialValidatorConfig, numberOfNodes = 0, // If set enable metrics collection
|
|
57
|
-
metricsPort, startProverNode
|
|
64
|
+
metricsPort, startProverNode){
|
|
58
65
|
this.testName = testName;
|
|
59
66
|
this.bootstrapNodeEnr = bootstrapNodeEnr;
|
|
60
67
|
this.bootNodePort = bootNodePort;
|
|
@@ -74,7 +81,8 @@ export class P2PNetworkTest {
|
|
|
74
81
|
this.attesterPrivateKeys = generatePrivateKeys(ATTESTER_PRIVATE_KEYS_START_INDEX + numberOfNodes, numberOfValidators);
|
|
75
82
|
this.attesterPublicKeys = this.attesterPrivateKeys.map((privateKey)=>privateKeyToAccount(privateKey).address);
|
|
76
83
|
const zkPassportParams = ZkPassportProofParams.random();
|
|
77
|
-
|
|
84
|
+
// Store setup options for later use
|
|
85
|
+
this.setupOptions = {
|
|
78
86
|
...initialValidatorConfig,
|
|
79
87
|
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
80
88
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
@@ -83,11 +91,12 @@ export class P2PNetworkTest {
|
|
|
83
91
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
84
92
|
slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
|
|
85
93
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
86
|
-
salt: 420,
|
|
87
94
|
metricsPort: metricsPort,
|
|
88
95
|
numberOfInitialFundedAccounts: 2,
|
|
89
|
-
startProverNode
|
|
90
|
-
|
|
96
|
+
startProverNode,
|
|
97
|
+
walletMinFeePadding: 2.0
|
|
98
|
+
};
|
|
99
|
+
this.deployL1ContractsArgs = {
|
|
91
100
|
...initialValidatorConfig,
|
|
92
101
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
93
102
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
@@ -98,32 +107,30 @@ export class P2PNetworkTest {
|
|
|
98
107
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
99
108
|
initialValidators: [],
|
|
100
109
|
zkPassportArgs: {
|
|
101
|
-
mockZkPassportVerifier,
|
|
102
110
|
zkPassportDomain: zkPassportParams.domain,
|
|
103
111
|
zkPassportScope: zkPassportParams.scope
|
|
104
112
|
}
|
|
105
|
-
}
|
|
113
|
+
};
|
|
106
114
|
}
|
|
107
|
-
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode
|
|
115
|
+
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }) {
|
|
108
116
|
const port = basePort || await getPort();
|
|
109
117
|
const bootstrapNodeENR = await getBootstrapNodeEnr(BOOTSTRAP_NODE_PRIVATE_KEY, port);
|
|
110
118
|
const bootstrapNodeEnr = bootstrapNodeENR.encodeTxt();
|
|
111
119
|
const initialValidatorConfig = await createValidatorConfig(initialConfig ?? {}, bootstrapNodeEnr);
|
|
112
|
-
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode
|
|
120
|
+
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode);
|
|
113
121
|
}
|
|
114
122
|
get fundedAccount() {
|
|
115
123
|
if (!this.deployedAccounts[0]) {
|
|
116
|
-
throw new Error('Call
|
|
124
|
+
throw new Error('Call setupAccount to create a funded account.');
|
|
117
125
|
}
|
|
118
126
|
return this.deployedAccounts[0];
|
|
119
127
|
}
|
|
120
128
|
async addBootstrapNode() {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
});
|
|
129
|
+
this.logger.info('Adding bootstrap node');
|
|
130
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
131
|
+
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(BOOTSTRAP_NODE_PRIVATE_KEY, this.bootNodePort, telemetry, this.context.config);
|
|
132
|
+
// Overwrite enr with updated info
|
|
133
|
+
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
127
134
|
}
|
|
128
135
|
getValidators() {
|
|
129
136
|
const validators = [];
|
|
@@ -141,124 +148,127 @@ export class P2PNetworkTest {
|
|
|
141
148
|
validators
|
|
142
149
|
};
|
|
143
150
|
}
|
|
144
|
-
async
|
|
151
|
+
async applyBaseSetup() {
|
|
145
152
|
await this.addBootstrapNode();
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
};
|
|
153
|
+
this.logger.info('Adding validators');
|
|
154
|
+
const rollup = getContract({
|
|
155
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
156
|
+
abi: RollupAbi,
|
|
157
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
158
|
+
});
|
|
159
|
+
this.logger.info(`Adding ${this.numberOfValidators} validators`);
|
|
160
|
+
const stakingAsset = getContract({
|
|
161
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
162
|
+
abi: TestERC20Abi,
|
|
163
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
164
|
+
});
|
|
165
|
+
const { address: multiAdderAddress } = await deployL1Contract(this.context.deployL1ContractsValues.l1Client, MultiAdderArtifact.contractAbi, MultiAdderArtifact.contractBytecode, [
|
|
166
|
+
rollup.address,
|
|
167
|
+
this.context.deployL1ContractsValues.l1Client.account.address
|
|
168
|
+
]);
|
|
169
|
+
const multiAdder = getContract({
|
|
170
|
+
address: multiAdderAddress.toString(),
|
|
171
|
+
abi: MultiAdderArtifact.contractAbi,
|
|
172
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
173
|
+
});
|
|
174
|
+
const stakeNeeded = await rollup.read.getActivationThreshold() * BigInt(this.numberOfValidators);
|
|
175
|
+
await Promise.all([
|
|
176
|
+
await stakingAsset.write.mint([
|
|
177
|
+
multiAdder.address,
|
|
178
|
+
stakeNeeded
|
|
179
|
+
], {})
|
|
180
|
+
].map((txHash)=>this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
181
|
+
hash: txHash
|
|
182
|
+
})));
|
|
183
|
+
const { validators } = this.getValidators();
|
|
184
|
+
this.validators = validators;
|
|
185
|
+
const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress;
|
|
186
|
+
if (!gseAddress) {
|
|
187
|
+
throw new Error('GSE contract not deployed');
|
|
188
|
+
}
|
|
189
|
+
const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
190
|
+
const makeValidatorTuples = async (validator)=>{
|
|
191
|
+
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
192
|
+
return {
|
|
193
|
+
attester: validator.attester.toString(),
|
|
194
|
+
withdrawer: validator.withdrawer.toString(),
|
|
195
|
+
...registrationTuple
|
|
190
196
|
};
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
await cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
|
|
198
|
-
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
199
|
-
await this._sendDummyTx(deployL1ContractsValues.l1Client);
|
|
197
|
+
};
|
|
198
|
+
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
199
|
+
await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
200
|
+
hash: await multiAdder.write.addValidators([
|
|
201
|
+
validatorTuples
|
|
202
|
+
])
|
|
200
203
|
});
|
|
204
|
+
await this.context.cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await this.context.cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
|
|
205
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
206
|
+
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
201
207
|
}
|
|
202
208
|
async setupAccount() {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
this.
|
|
207
|
-
return Promise.resolve();
|
|
209
|
+
this.logger.info('Setting up account');
|
|
210
|
+
const { deployedAccounts } = await deployAccounts(1, this.logger)({
|
|
211
|
+
wallet: this.context.wallet,
|
|
212
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
208
213
|
});
|
|
214
|
+
this.deployedAccounts = deployedAccounts;
|
|
215
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
216
|
+
this.wallet = this.context.wallet;
|
|
209
217
|
}
|
|
210
218
|
async deploySpamContract() {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
}).deployed();
|
|
218
|
-
return {
|
|
219
|
-
contractAddress: spamContract.address
|
|
220
|
-
};
|
|
221
|
-
}, ({ contractAddress })=>{
|
|
222
|
-
if (!this.wallet) {
|
|
223
|
-
throw new Error('Call snapshot t.setupAccount before deploying account contract');
|
|
224
|
-
}
|
|
225
|
-
this.spamContract = SpamContract.at(contractAddress, this.wallet);
|
|
226
|
-
return Promise.resolve();
|
|
219
|
+
this.logger.info('Deploying spam contract');
|
|
220
|
+
if (!this.wallet) {
|
|
221
|
+
throw new Error('Call setupAccount before deploying spam contract');
|
|
222
|
+
}
|
|
223
|
+
const spamContract = await SpamContract.deploy(this.wallet).send({
|
|
224
|
+
from: this.defaultAccountAddress
|
|
227
225
|
});
|
|
226
|
+
this.spamContract = spamContract;
|
|
228
227
|
}
|
|
229
228
|
async removeInitialNode() {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
});
|
|
236
|
-
dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
237
|
-
await aztecNode.stop();
|
|
229
|
+
this.logger.info('Removing initial node');
|
|
230
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
231
|
+
const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
232
|
+
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
233
|
+
blockNumber: receipt.blockNumber
|
|
238
234
|
});
|
|
235
|
+
this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
236
|
+
await this.context.aztecNodeService.stop();
|
|
239
237
|
}
|
|
240
238
|
async sendDummyTx() {
|
|
241
239
|
return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
|
|
242
240
|
}
|
|
243
241
|
async _sendDummyTx(l1Client) {
|
|
244
|
-
const l1TxUtils =
|
|
242
|
+
const l1TxUtils = createL1TxUtils(l1Client);
|
|
245
243
|
return await l1TxUtils.sendAndMonitorTransaction({
|
|
246
244
|
to: l1Client.account.address,
|
|
247
245
|
value: 1n
|
|
248
246
|
});
|
|
249
247
|
}
|
|
250
248
|
async setup() {
|
|
251
|
-
this.
|
|
249
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
250
|
+
this.context = await setup(0, {
|
|
251
|
+
...this.setupOptions,
|
|
252
|
+
fundSponsoredFPC: true,
|
|
253
|
+
skipAccountDeployment: true,
|
|
254
|
+
slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
|
|
255
|
+
aztecTargetCommitteeSize: 0,
|
|
256
|
+
l1ContractsArgs: this.deployL1ContractsArgs
|
|
257
|
+
}, // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
258
|
+
{
|
|
259
|
+
syncChainTip: 'checkpointed'
|
|
260
|
+
});
|
|
261
|
+
this.ctx = this.context;
|
|
252
262
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
253
263
|
const initialFundedAccounts = [
|
|
254
|
-
...this.
|
|
264
|
+
...this.context.initialFundedAccounts.map((a)=>a.address),
|
|
255
265
|
sponsoredFPCAddress
|
|
256
266
|
];
|
|
257
267
|
const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
|
|
258
268
|
this.prefilledPublicData = prefilledPublicData;
|
|
259
|
-
const rollupContract = RollupContract.getFromL1ContractsValues(this.
|
|
260
|
-
this.monitor = new ChainMonitor(rollupContract, this.
|
|
261
|
-
this.monitor.on('l1-block', ({ timestamp })=>this.
|
|
269
|
+
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
270
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
271
|
+
this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
262
272
|
}
|
|
263
273
|
async stopNodes(nodes) {
|
|
264
274
|
this.logger.info('Stopping nodes');
|
|
@@ -291,19 +301,32 @@ export class P2PNetworkTest {
|
|
|
291
301
|
}, `Node ${index} to connect to at least ${minPeerCount} peers`, timeoutSeconds, checkIntervalSeconds);
|
|
292
302
|
}));
|
|
293
303
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
304
|
+
// Wait for GossipSub mesh to form for the tx topic.
|
|
305
|
+
// We only require at least 1 mesh peer per node because GossipSub
|
|
306
|
+
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
307
|
+
this.logger.warn('Waiting for GossipSub mesh to form for tx topic...');
|
|
308
|
+
await Promise.all(nodes.map(async (node, index)=>{
|
|
309
|
+
const p2p = node.getP2P();
|
|
310
|
+
await retryUntil(async ()=>{
|
|
311
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(TopicType.tx);
|
|
312
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for tx topic`);
|
|
313
|
+
return meshPeers >= 1 ? true : undefined;
|
|
314
|
+
}, `Node ${index} to have gossip mesh peers for tx topic`, timeoutSeconds, checkIntervalSeconds);
|
|
315
|
+
}));
|
|
316
|
+
this.logger.warn('All nodes have gossip mesh peers for tx topic');
|
|
294
317
|
}
|
|
295
318
|
async teardown() {
|
|
296
319
|
await this.monitor.stop();
|
|
297
320
|
await tryStop(this.bootstrapNode, this.logger);
|
|
298
|
-
await this.
|
|
321
|
+
await teardown(this.context);
|
|
299
322
|
}
|
|
300
323
|
async getContracts() {
|
|
301
324
|
if (!this.ctx.deployL1ContractsValues) {
|
|
302
|
-
throw new Error('
|
|
325
|
+
throw new Error('DeployAztecL1ContractsValues not set');
|
|
303
326
|
}
|
|
304
327
|
const rollup = new RollupContract(this.ctx.deployL1ContractsValues.l1Client, this.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
|
|
305
328
|
const slasherContract = getContract({
|
|
306
|
-
address: getAddress(await rollup.getSlasherAddress()),
|
|
329
|
+
address: getAddress((await rollup.getSlasherAddress()).toString()),
|
|
307
330
|
abi: SlasherAbi,
|
|
308
331
|
client: this.ctx.deployL1ContractsValues.l1Client
|
|
309
332
|
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
2
|
+
import { P2PNetworkTest } from '../p2p_network.js';
|
|
3
|
+
export declare const NUM_VALIDATORS = 6;
|
|
4
|
+
export declare const NUM_TXS_PER_NODE = 4;
|
|
5
|
+
export declare const BOOT_NODE_UDP_PORT: number;
|
|
6
|
+
export declare const createReqrespDataDir: () => string;
|
|
7
|
+
type ReqrespOptions = {
|
|
8
|
+
disableStatusHandshake?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function createReqrespTest(options?: ReqrespOptions): Promise<P2PNetworkTest>;
|
|
11
|
+
export declare function cleanupReqrespTest(params: {
|
|
12
|
+
t: P2PNetworkTest;
|
|
13
|
+
nodes?: AztecNodeService[];
|
|
14
|
+
dataDir: string;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
export declare function runReqrespTxTest(params: {
|
|
17
|
+
t: P2PNetworkTest;
|
|
18
|
+
dataDir: string;
|
|
19
|
+
disableStatusHandshake?: boolean;
|
|
20
|
+
}): Promise<AztecNodeService[]>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RSxlQUFPLE1BQU0sY0FBYyxJQUFJLENBQUM7QUFDaEMsZUFBTyxNQUFNLGdCQUFnQixJQUFJLENBQUM7QUFDbEMsZUFBTyxNQUFNLGtCQUFrQixRQUF1QixDQUFDO0FBRXZELGVBQU8sTUFBTSxvQkFBb0IsY0FBMkQsQ0FBQztBQUU3RixLQUFLLGNBQWMsR0FBRztJQUNwQixzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBRUYsd0JBQXNCLGlCQUFpQixDQUFDLE9BQU8sR0FBRSxjQUFtQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0EwQjdGO0FBRUQsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtJQUFFLENBQUMsRUFBRSxjQUFjLENBQUM7SUFBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLGlCQVNsSDtBQUlELHdCQUFzQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7SUFDN0MsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0E4SDlCIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2e_p2p/reqresp/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAgB1D,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAIxE,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAuB,CAAC;AAEvD,eAAO,MAAM,oBAAoB,cAA2D,CAAC;AAE7F,KAAK,cAAc,GAAG;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0B7F;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBASlH;AAID,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,CAAC,EAAE,cAAc,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8H9B"}
|