@aztec/end-to-end 0.0.1-commit.9b94fc1 → 0.0.1-commit.9badcec54
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/README.md +27 -0
- 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 +124 -144
- 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 +31 -19
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +11 -9
- 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 +108 -114
- 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 +27 -15
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +106 -54
- 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 +137 -145
- 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 +30 -40
- 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 +9 -12
- package/dest/e2e_p2p/p2p_network.d.ts +20 -19
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +153 -126
- 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 +190 -0
- package/dest/e2e_p2p/shared.d.ts +30 -12
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +64 -62
- 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 +100 -92
- 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 +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +16 -23
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +115 -139
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- 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/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- 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 +242 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +611 -0
- package/dest/fixtures/setup_p2p_test.d.ts +18 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +46 -35
- 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 +7 -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/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- 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 +27 -27
- 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 +4 -4
- 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/jest_setup.js +41 -1
- 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 +58 -43
- 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 +6 -6
- 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 +3 -24
- package/dest/spartan/setup_test_wallets.d.ts +15 -5
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +132 -43
- 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 +45 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +23 -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 +11 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +22 -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 +461 -0
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -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 +84 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +249 -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 +48 -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 +151 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +279 -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 +49 -45
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +165 -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 +36 -21
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +123 -151
- 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 +173 -112
- package/src/e2e_fees/bridging_race.notest.ts +5 -11
- package/src/e2e_fees/fees_test.ts +178 -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 +35 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +10 -13
- package/src/e2e_p2p/p2p_network.ts +217 -199
- package/src/e2e_p2p/reqresp/utils.ts +256 -0
- package/src/e2e_p2p/shared.ts +96 -79
- 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 +121 -119
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +143 -189
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +12 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/get_bb_config.ts +7 -6
- 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 +910 -0
- package/src/fixtures/setup_p2p_test.ts +51 -55
- package/src/fixtures/token_utils.ts +7 -6
- 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/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +104 -0
- package/src/guides/up_quick_start.sh +3 -5
- package/src/legacy-jest-resolver.cjs +135 -0
- 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 +30 -43
- package/src/shared/gas_portal_test_harness.ts +3 -4
- package/src/shared/index.ts +2 -1
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +11 -16
- package/src/shared/uniswap_l1_l2.ts +86 -106
- package/src/simulators/lending_simulator.ts +11 -7
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +192 -28
- 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 +29 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +71 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -942
- package/src/test-wallet/test_wallet.ts +351 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +214 -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
|
@@ -2,20 +2,14 @@ import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
|
2
2
|
import type { AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
4
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
RollupContract,
|
|
12
|
-
type TallySlashingProposerContract,
|
|
13
|
-
type ViemClient,
|
|
14
|
-
createL1TxUtilsFromViemWallet,
|
|
15
|
-
deployL1Contract,
|
|
16
|
-
getL1ContractsConfigEnvVars,
|
|
17
|
-
} from '@aztec/ethereum';
|
|
5
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
6
|
+
import { GSEContract, RollupContract, type SlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
7
|
+
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
8
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
9
|
+
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
10
|
+
import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
18
11
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
12
|
+
import type { ExtendedViemWalletClient, ViemClient } from '@aztec/ethereum/types';
|
|
19
13
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
20
14
|
import { SecretValue } from '@aztec/foundation/config';
|
|
21
15
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
@@ -25,29 +19,32 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
|
25
19
|
import type { BootstrapNode } from '@aztec/p2p/bootstrap';
|
|
26
20
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
27
21
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
28
|
-
import {
|
|
29
|
-
import
|
|
22
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
23
|
+
import { TxStatus } from '@aztec/stdlib/tx';
|
|
24
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
30
25
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
31
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
32
26
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
33
27
|
|
|
34
28
|
import getPort from 'get-port';
|
|
35
29
|
import { type GetContractReturnType, getAddress, getContract } from 'viem';
|
|
36
30
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
37
31
|
|
|
32
|
+
import {
|
|
33
|
+
type EndToEndContext,
|
|
34
|
+
type SetupOptions,
|
|
35
|
+
deployAccounts,
|
|
36
|
+
getPrivateKeyFromIndex,
|
|
37
|
+
getSponsoredFPCAddress,
|
|
38
|
+
setup,
|
|
39
|
+
teardown,
|
|
40
|
+
} from '../fixtures/setup.js';
|
|
38
41
|
import {
|
|
39
42
|
ATTESTER_PRIVATE_KEYS_START_INDEX,
|
|
40
43
|
createValidatorConfig,
|
|
41
44
|
generatePrivateKeys,
|
|
42
45
|
} from '../fixtures/setup_p2p_test.js';
|
|
43
|
-
import {
|
|
44
|
-
type ISnapshotManager,
|
|
45
|
-
type SubsystemsContext,
|
|
46
|
-
createSnapshotManager,
|
|
47
|
-
deployAccounts,
|
|
48
|
-
} from '../fixtures/snapshot_manager.js';
|
|
49
|
-
import { type SetupOptions, getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
50
46
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
47
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
51
48
|
|
|
52
49
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
53
50
|
const BOOTSTRAP_NODE_PRIVATE_KEY = '080212208f988fc0899e4a73a5aee4d271a5f20670603a756ad8d84f2c94263a6427c591';
|
|
@@ -57,25 +54,25 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
|
|
|
57
54
|
export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
58
55
|
aztecSlotDuration: 12,
|
|
59
56
|
ethereumSlotDuration: 4,
|
|
60
|
-
|
|
57
|
+
aztecProofSubmissionEpochs: 640,
|
|
61
58
|
};
|
|
62
59
|
|
|
63
60
|
export class P2PNetworkTest {
|
|
64
|
-
|
|
61
|
+
public context!: EndToEndContext;
|
|
65
62
|
public baseAccountPrivateKey: `0x${string}`;
|
|
66
63
|
public baseAccount;
|
|
67
64
|
|
|
68
65
|
public logger: Logger;
|
|
69
66
|
public monitor!: ChainMonitor;
|
|
70
67
|
|
|
71
|
-
public ctx!:
|
|
68
|
+
public ctx!: EndToEndContext;
|
|
72
69
|
public attesterPrivateKeys: `0x${string}`[] = [];
|
|
73
70
|
public attesterPublicKeys: string[] = [];
|
|
74
71
|
public peerIdPrivateKeys: string[] = [];
|
|
75
72
|
public validators: Operator[] = [];
|
|
76
73
|
|
|
77
74
|
public deployedAccounts: InitialAccountData[] = [];
|
|
78
|
-
public
|
|
75
|
+
public genesis: GenesisData | undefined;
|
|
79
76
|
|
|
80
77
|
// The re-execution test needs a wallet and a spam contract
|
|
81
78
|
public wallet?: TestWallet;
|
|
@@ -84,6 +81,10 @@ export class P2PNetworkTest {
|
|
|
84
81
|
|
|
85
82
|
public bootstrapNode?: BootstrapNode;
|
|
86
83
|
|
|
84
|
+
// Store setup options for use in setup()
|
|
85
|
+
private setupOptions: SetupOptions;
|
|
86
|
+
private deployL1ContractsArgs: any;
|
|
87
|
+
|
|
87
88
|
constructor(
|
|
88
89
|
public readonly testName: string,
|
|
89
90
|
public bootstrapNodeEnr: string,
|
|
@@ -94,7 +95,6 @@ export class P2PNetworkTest {
|
|
|
94
95
|
// If set enable metrics collection
|
|
95
96
|
private metricsPort?: number,
|
|
96
97
|
startProverNode?: boolean,
|
|
97
|
-
mockZkPassportVerifier?: boolean,
|
|
98
98
|
) {
|
|
99
99
|
this.logger = createLogger(`e2e:e2e_p2p:${testName}`);
|
|
100
100
|
|
|
@@ -109,45 +109,42 @@ export class P2PNetworkTest {
|
|
|
109
109
|
|
|
110
110
|
const zkPassportParams = ZkPassportProofParams.random();
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
slashingRoundSizeInEpochs
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
aztecProofSubmissionEpochs
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
zkPassportDomain: zkPassportParams.domain,
|
|
147
|
-
zkPassportScope: zkPassportParams.scope,
|
|
148
|
-
},
|
|
112
|
+
// Store setup options for later use
|
|
113
|
+
this.setupOptions = {
|
|
114
|
+
...initialValidatorConfig,
|
|
115
|
+
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
116
|
+
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
117
|
+
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
118
|
+
aztecProofSubmissionEpochs:
|
|
119
|
+
initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
120
|
+
slashingRoundSizeInEpochs:
|
|
121
|
+
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
122
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
123
|
+
aztecTargetCommitteeSize: numberOfValidators,
|
|
124
|
+
metricsPort: metricsPort,
|
|
125
|
+
numberOfInitialFundedAccounts: 2,
|
|
126
|
+
startProverNode,
|
|
127
|
+
walletMinFeePadding: 2.0,
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
this.deployL1ContractsArgs = {
|
|
131
|
+
...initialValidatorConfig,
|
|
132
|
+
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
133
|
+
slashingRoundSizeInEpochs:
|
|
134
|
+
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
135
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
136
|
+
|
|
137
|
+
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
138
|
+
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
139
|
+
aztecProofSubmissionEpochs:
|
|
140
|
+
initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
141
|
+
aztecTargetCommitteeSize: numberOfValidators,
|
|
142
|
+
initialValidators: [],
|
|
143
|
+
zkPassportArgs: {
|
|
144
|
+
zkPassportDomain: zkPassportParams.domain,
|
|
145
|
+
zkPassportScope: zkPassportParams.scope,
|
|
149
146
|
},
|
|
150
|
-
|
|
147
|
+
};
|
|
151
148
|
}
|
|
152
149
|
|
|
153
150
|
static async create({
|
|
@@ -158,7 +155,6 @@ export class P2PNetworkTest {
|
|
|
158
155
|
metricsPort,
|
|
159
156
|
initialConfig,
|
|
160
157
|
startProverNode,
|
|
161
|
-
mockZkPassportVerifier,
|
|
162
158
|
}: {
|
|
163
159
|
testName: string;
|
|
164
160
|
numberOfNodes: number;
|
|
@@ -167,7 +163,6 @@ export class P2PNetworkTest {
|
|
|
167
163
|
metricsPort?: number;
|
|
168
164
|
initialConfig?: SetupOptions;
|
|
169
165
|
startProverNode?: boolean;
|
|
170
|
-
mockZkPassportVerifier?: boolean;
|
|
171
166
|
}) {
|
|
172
167
|
const port = basePort || (await getPort());
|
|
173
168
|
|
|
@@ -188,29 +183,27 @@ export class P2PNetworkTest {
|
|
|
188
183
|
numberOfNodes,
|
|
189
184
|
metricsPort,
|
|
190
185
|
startProverNode,
|
|
191
|
-
mockZkPassportVerifier,
|
|
192
186
|
);
|
|
193
187
|
}
|
|
194
188
|
|
|
195
189
|
get fundedAccount() {
|
|
196
190
|
if (!this.deployedAccounts[0]) {
|
|
197
|
-
throw new Error('Call
|
|
191
|
+
throw new Error('Call setupAccount to create a funded account.');
|
|
198
192
|
}
|
|
199
193
|
return this.deployedAccounts[0];
|
|
200
194
|
}
|
|
201
195
|
|
|
202
196
|
async addBootstrapNode() {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
});
|
|
197
|
+
this.logger.info('Adding bootstrap node');
|
|
198
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
199
|
+
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(
|
|
200
|
+
BOOTSTRAP_NODE_PRIVATE_KEY,
|
|
201
|
+
this.bootNodePort,
|
|
202
|
+
telemetry,
|
|
203
|
+
this.context.config,
|
|
204
|
+
);
|
|
205
|
+
// Overwrite enr with updated info
|
|
206
|
+
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
214
207
|
}
|
|
215
208
|
|
|
216
209
|
getValidators() {
|
|
@@ -231,128 +224,116 @@ export class P2PNetworkTest {
|
|
|
231
224
|
return { validators };
|
|
232
225
|
}
|
|
233
226
|
|
|
234
|
-
async
|
|
227
|
+
async applyBaseSetup() {
|
|
235
228
|
await this.addBootstrapNode();
|
|
236
|
-
await this.snapshotManager.snapshot('add-validators', async ({ deployL1ContractsValues, cheatCodes }) => {
|
|
237
|
-
const rollup = getContract({
|
|
238
|
-
address: deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
239
|
-
abi: RollupAbi,
|
|
240
|
-
client: deployL1ContractsValues.l1Client,
|
|
241
|
-
});
|
|
242
229
|
|
|
243
|
-
|
|
230
|
+
this.logger.info('Adding validators');
|
|
231
|
+
const rollup = getContract({
|
|
232
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
233
|
+
abi: RollupAbi,
|
|
234
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
235
|
+
});
|
|
244
236
|
|
|
245
|
-
|
|
246
|
-
address: deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
247
|
-
abi: TestERC20Abi,
|
|
248
|
-
client: deployL1ContractsValues.l1Client,
|
|
249
|
-
});
|
|
237
|
+
this.logger.info(`Adding ${this.numberOfValidators} validators`);
|
|
250
238
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
);
|
|
239
|
+
const stakingAsset = getContract({
|
|
240
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
241
|
+
abi: TestERC20Abi,
|
|
242
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
243
|
+
});
|
|
257
244
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
245
|
+
const { address: multiAdderAddress } = await deployL1Contract(
|
|
246
|
+
this.context.deployL1ContractsValues.l1Client,
|
|
247
|
+
MultiAdderArtifact.contractAbi,
|
|
248
|
+
MultiAdderArtifact.contractBytecode,
|
|
249
|
+
[rollup.address, this.context.deployL1ContractsValues.l1Client.account.address],
|
|
250
|
+
);
|
|
263
251
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
252
|
+
const multiAdder = getContract({
|
|
253
|
+
address: multiAdderAddress.toString(),
|
|
254
|
+
abi: MultiAdderArtifact.contractAbi,
|
|
255
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
const stakeNeeded = (await rollup.read.getActivationThreshold()) * BigInt(this.numberOfValidators);
|
|
259
|
+
await Promise.all(
|
|
260
|
+
[await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
|
|
261
|
+
this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
|
|
262
|
+
),
|
|
263
|
+
);
|
|
270
264
|
|
|
271
|
-
|
|
272
|
-
|
|
265
|
+
const { validators } = this.getValidators();
|
|
266
|
+
this.validators = validators;
|
|
273
267
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
268
|
+
const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress!;
|
|
269
|
+
if (!gseAddress) {
|
|
270
|
+
throw new Error('GSE contract not deployed');
|
|
271
|
+
}
|
|
278
272
|
|
|
279
|
-
|
|
273
|
+
const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
280
274
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
};
|
|
275
|
+
const makeValidatorTuples = async (validator: Operator) => {
|
|
276
|
+
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
277
|
+
return {
|
|
278
|
+
attester: validator.attester.toString() as `0x${string}`,
|
|
279
|
+
withdrawer: validator.withdrawer.toString() as `0x${string}`,
|
|
280
|
+
...registrationTuple,
|
|
288
281
|
};
|
|
289
|
-
|
|
282
|
+
};
|
|
283
|
+
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
290
284
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
285
|
+
await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
286
|
+
hash: await multiAdder.write.addValidators([validatorTuples]),
|
|
287
|
+
});
|
|
294
288
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
289
|
+
await this.context.cheatCodes.rollup.advanceToEpoch(
|
|
290
|
+
EpochNumber.fromBigInt(
|
|
291
|
+
BigInt(await this.context.cheatCodes.rollup.getEpoch()) +
|
|
292
|
+
(await rollup.read.getLagInEpochsForValidatorSet()) +
|
|
293
|
+
1n,
|
|
294
|
+
),
|
|
295
|
+
);
|
|
300
296
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
});
|
|
297
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
298
|
+
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
304
299
|
}
|
|
305
300
|
|
|
306
301
|
async setupAccount() {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
this.deployedAccounts = deployedAccounts;
|
|
312
|
-
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
313
|
-
this.wallet = wallet;
|
|
314
|
-
return Promise.resolve();
|
|
302
|
+
this.logger.info('Setting up account');
|
|
303
|
+
const { deployedAccounts } = await deployAccounts(1, this.logger, {
|
|
304
|
+
wait: {
|
|
305
|
+
waitForStatus: TxStatus.CHECKPOINTED,
|
|
315
306
|
},
|
|
316
|
-
)
|
|
307
|
+
})({
|
|
308
|
+
wallet: this.context.wallet,
|
|
309
|
+
initialFundedAccounts: this.context.initialFundedAccounts,
|
|
310
|
+
});
|
|
311
|
+
this.deployedAccounts = deployedAccounts;
|
|
312
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
313
|
+
this.wallet = this.context.wallet;
|
|
317
314
|
}
|
|
318
315
|
|
|
319
316
|
async deploySpamContract() {
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
.send({ from: this.defaultAccountAddress! })
|
|
329
|
-
.deployed();
|
|
330
|
-
return { contractAddress: spamContract.address };
|
|
331
|
-
},
|
|
332
|
-
({ contractAddress }) => {
|
|
333
|
-
if (!this.wallet) {
|
|
334
|
-
throw new Error('Call snapshot t.setupAccount before deploying account contract');
|
|
335
|
-
}
|
|
336
|
-
this.spamContract = SpamContract.at(contractAddress, this.wallet);
|
|
337
|
-
return Promise.resolve();
|
|
338
|
-
},
|
|
339
|
-
);
|
|
317
|
+
this.logger.info('Deploying spam contract');
|
|
318
|
+
if (!this.wallet) {
|
|
319
|
+
throw new Error('Call setupAccount before deploying spam contract');
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
({ contract: this.spamContract } = await SpamContract.deploy(this.wallet).send({
|
|
323
|
+
from: this.defaultAccountAddress!,
|
|
324
|
+
}));
|
|
340
325
|
}
|
|
341
326
|
|
|
342
327
|
async removeInitialNode() {
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
await aztecNode.stop();
|
|
354
|
-
},
|
|
355
|
-
);
|
|
328
|
+
this.logger.info('Removing initial node');
|
|
329
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
330
|
+
const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
331
|
+
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
332
|
+
blockNumber: receipt.blockNumber,
|
|
333
|
+
});
|
|
334
|
+
this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
335
|
+
|
|
336
|
+
await this.context.aztecNodeService.stop();
|
|
356
337
|
}
|
|
357
338
|
|
|
358
339
|
async sendDummyTx() {
|
|
@@ -360,7 +341,7 @@ export class P2PNetworkTest {
|
|
|
360
341
|
}
|
|
361
342
|
|
|
362
343
|
private async _sendDummyTx(l1Client: ExtendedViemWalletClient) {
|
|
363
|
-
const l1TxUtils =
|
|
344
|
+
const l1TxUtils = createL1TxUtils(l1Client);
|
|
364
345
|
return await l1TxUtils.sendAndMonitorTransaction({
|
|
365
346
|
to: l1Client.account!.address,
|
|
366
347
|
value: 1n,
|
|
@@ -368,17 +349,36 @@ export class P2PNetworkTest {
|
|
|
368
349
|
}
|
|
369
350
|
|
|
370
351
|
async setup() {
|
|
371
|
-
this.
|
|
352
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
353
|
+
this.context = await setup(
|
|
354
|
+
0,
|
|
355
|
+
{
|
|
356
|
+
...this.setupOptions,
|
|
357
|
+
fundSponsoredFPC: true,
|
|
358
|
+
skipAccountDeployment: true,
|
|
359
|
+
slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
|
|
360
|
+
aztecTargetCommitteeSize: 0,
|
|
361
|
+
l1ContractsArgs: this.deployL1ContractsArgs,
|
|
362
|
+
},
|
|
363
|
+
// Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
364
|
+
{ syncChainTip: 'checkpointed' },
|
|
365
|
+
);
|
|
366
|
+
this.ctx = this.context;
|
|
372
367
|
|
|
373
368
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
374
|
-
const initialFundedAccounts = [...this.
|
|
369
|
+
const initialFundedAccounts = [...this.context.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
|
|
375
370
|
|
|
376
|
-
const {
|
|
377
|
-
|
|
371
|
+
const { genesis } = await getGenesisValues(
|
|
372
|
+
initialFundedAccounts,
|
|
373
|
+
undefined,
|
|
374
|
+
undefined,
|
|
375
|
+
this.context.genesis!.genesisTimestamp,
|
|
376
|
+
);
|
|
377
|
+
this.genesis = genesis;
|
|
378
378
|
|
|
379
|
-
const rollupContract = RollupContract.getFromL1ContractsValues(this.
|
|
380
|
-
this.monitor = new ChainMonitor(rollupContract, this.
|
|
381
|
-
this.monitor.on('l1-block', ({ timestamp }) => this.
|
|
379
|
+
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
380
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
381
|
+
this.monitor.on('l1-block', ({ timestamp }) => this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
382
382
|
}
|
|
383
383
|
|
|
384
384
|
async stopNodes(nodes: AztecNodeService[]) {
|
|
@@ -409,6 +409,7 @@ export class P2PNetworkTest {
|
|
|
409
409
|
expectedNodeCount?: number,
|
|
410
410
|
timeoutSeconds = 30,
|
|
411
411
|
checkIntervalSeconds = 0.1,
|
|
412
|
+
topics: TopicType[] = [TopicType.tx],
|
|
412
413
|
) {
|
|
413
414
|
const nodeCount = expectedNodeCount ?? nodes.length;
|
|
414
415
|
const minPeerCount = nodeCount - 1;
|
|
@@ -434,22 +435,44 @@ export class P2PNetworkTest {
|
|
|
434
435
|
);
|
|
435
436
|
|
|
436
437
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
438
|
+
|
|
439
|
+
// Wait for GossipSub mesh to form for all specified topics.
|
|
440
|
+
// We only require at least 1 mesh peer per node because GossipSub
|
|
441
|
+
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
442
|
+
for (const topic of topics) {
|
|
443
|
+
this.logger.warn(`Waiting for GossipSub mesh to form for ${topic} topic...`);
|
|
444
|
+
await Promise.all(
|
|
445
|
+
nodes.map(async (node, index) => {
|
|
446
|
+
const p2p = node.getP2P();
|
|
447
|
+
await retryUntil(
|
|
448
|
+
async () => {
|
|
449
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(topic);
|
|
450
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for ${topic} topic`);
|
|
451
|
+
return meshPeers >= 1 ? true : undefined;
|
|
452
|
+
},
|
|
453
|
+
`Node ${index} to have gossip mesh peers for ${topic} topic`,
|
|
454
|
+
timeoutSeconds,
|
|
455
|
+
checkIntervalSeconds,
|
|
456
|
+
);
|
|
457
|
+
}),
|
|
458
|
+
);
|
|
459
|
+
this.logger.warn(`All nodes have gossip mesh peers for ${topic} topic`);
|
|
460
|
+
}
|
|
437
461
|
}
|
|
438
462
|
|
|
439
463
|
async teardown() {
|
|
440
464
|
await this.monitor.stop();
|
|
441
465
|
await tryStop(this.bootstrapNode, this.logger);
|
|
442
|
-
await this.
|
|
466
|
+
await teardown(this.context);
|
|
443
467
|
}
|
|
444
468
|
|
|
445
469
|
async getContracts(): Promise<{
|
|
446
470
|
rollup: RollupContract;
|
|
447
471
|
slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
|
|
448
|
-
slashingProposer:
|
|
449
|
-
slashFactory: SlashFactoryContract;
|
|
472
|
+
slashingProposer: SlashingProposerContract | undefined;
|
|
450
473
|
}> {
|
|
451
474
|
if (!this.ctx.deployL1ContractsValues) {
|
|
452
|
-
throw new Error('
|
|
475
|
+
throw new Error('DeployAztecL1ContractsValues not set');
|
|
453
476
|
}
|
|
454
477
|
|
|
455
478
|
const rollup = new RollupContract(
|
|
@@ -458,19 +481,14 @@ export class P2PNetworkTest {
|
|
|
458
481
|
);
|
|
459
482
|
|
|
460
483
|
const slasherContract = getContract({
|
|
461
|
-
address: getAddress(await rollup.getSlasherAddress()),
|
|
484
|
+
address: getAddress((await rollup.getSlasherAddress()).toString()),
|
|
462
485
|
abi: SlasherAbi,
|
|
463
486
|
client: this.ctx.deployL1ContractsValues.l1Client,
|
|
464
487
|
});
|
|
465
488
|
|
|
466
|
-
// Get the actual slashing proposer from rollup
|
|
489
|
+
// Get the actual slashing proposer from rollup
|
|
467
490
|
const slashingProposer = await rollup.getSlashingProposer();
|
|
468
491
|
|
|
469
|
-
|
|
470
|
-
this.ctx.deployL1ContractsValues.l1Client,
|
|
471
|
-
getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress!.toString()),
|
|
472
|
-
);
|
|
473
|
-
|
|
474
|
-
return { rollup, slasherContract, slashingProposer, slashFactory };
|
|
492
|
+
return { rollup, slasherContract, slashingProposer };
|
|
475
493
|
}
|
|
476
494
|
}
|