@aztec/end-to-end 0.0.1-commit.03f7ef2 → 0.0.1-commit.04d373f
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 +17 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +38 -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 +132 -150
- 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 +33 -19
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +12 -10
- 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 +120 -117
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +30 -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 +122 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +6 -5
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +20 -14
- package/dest/e2e_epochs/epochs_test.d.ts +39 -8
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +172 -51
- package/dest/e2e_fees/bridging_race.notest.js +3 -5
- 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 +158 -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_nested_contract/nested_contract_test.d.ts +7 -10
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +32 -41
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +8 -6
- package/dest/e2e_p2p/p2p_network.d.ts +20 -17
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +167 -124
- 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 +206 -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 +88 -68
- 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 +20 -11
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +103 -93
- 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 +15 -20
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +115 -135
- 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 +78 -2
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +75 -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/schnorr_hardcoded_account_contract.d.ts +25 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
- package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
- package/dest/fixtures/setup.d.ts +266 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +714 -0
- package/dest/fixtures/setup_p2p_test.d.ts +22 -11
- 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 +7 -6
- package/dest/fixtures/utils.d.ts +5 -194
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -619
- 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/install_legacy_contracts.d.cts +10 -0
- package/dest/install_legacy_contracts.d.cts.map +1 -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 +33 -29
- package/dest/shared/gas_portal_test_harness.d.ts +18 -5
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +20 -11
- 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 -28
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +88 -47
- package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
- package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
- package/dest/simulators/lending_simulator.d.ts +14 -3
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +28 -16
- 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 +133 -43
- package/dest/spartan/tx_metrics.d.ts +68 -5
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +399 -19
- 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 +19 -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 -231
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -853
- package/dest/test-wallet/test_wallet.d.ts +85 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +273 -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 +66 -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 +53 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +155 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +22 -0
- package/package.json +53 -45
- package/src/bench/client_flows/benchmark.ts +43 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +189 -240
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +1 -1
- package/src/bench/utils.ts +38 -22
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +141 -152
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +166 -118
- package/src/e2e_deploy_contract/deploy_test.ts +24 -16
- package/src/e2e_epochs/epochs_test.ts +218 -94
- package/src/e2e_fees/bridging_race.notest.ts +4 -10
- package/src/e2e_fees/fees_test.ts +207 -230
- package/src/e2e_l1_publisher/write_json.ts +16 -16
- package/src/e2e_nested_contract/nested_contract_test.ts +38 -57
- package/src/e2e_p2p/inactivity_slash_test.ts +8 -6
- package/src/e2e_p2p/p2p_network.ts +239 -191
- package/src/e2e_p2p/reqresp/utils.ts +274 -0
- package/src/e2e_p2p/shared.ts +115 -86
- 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 +129 -117
- 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 -185
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +97 -1
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +188 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
- package/src/fixtures/setup.ts +1037 -0
- package/src/fixtures/setup_p2p_test.ts +52 -52
- package/src/fixtures/token_utils.ts +7 -6
- package/src/fixtures/utils.ts +29 -907
- 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/install_legacy_contracts.cjs +75 -0
- package/src/legacy-jest-resolver.cjs +112 -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 +34 -40
- package/src/shared/gas_portal_test_harness.ts +22 -12
- 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 +114 -108
- package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
- package/src/simulators/lending_simulator.ts +34 -16
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +191 -29
- package/src/spartan/tx_metrics.ts +329 -25
- 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 -1077
- package/src/test-wallet/test_wallet.ts +376 -0
- package/src/test-wallet/utils.ts +108 -0
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +218 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
- package/dest/fixtures/snapshot_manager.d.ts +0 -93
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -493
- 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/snapshot_manager.ts +0 -651
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type InitialAccountData, generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
3
|
+
import { getAccountContractAddress } from '@aztec/aztec.js/account';
|
|
3
4
|
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
4
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
6
|
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
6
|
-
import {
|
|
7
|
-
type EmpireSlashingProposerContract,
|
|
8
|
-
GSEContract,
|
|
9
|
-
RollupContract,
|
|
10
|
-
type TallySlashingProposerContract,
|
|
11
|
-
} from '@aztec/ethereum/contracts';
|
|
7
|
+
import { GSEContract, RollupContract, type SlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
12
8
|
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
13
9
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
14
10
|
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
15
|
-
import {
|
|
11
|
+
import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
16
12
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
17
13
|
import type { ExtendedViemWalletClient, ViemClient } from '@aztec/ethereum/types';
|
|
18
14
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
@@ -24,29 +20,34 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
|
24
20
|
import type { BootstrapNode } from '@aztec/p2p/bootstrap';
|
|
25
21
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
26
22
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
27
|
-
import {
|
|
28
|
-
import type {
|
|
23
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
24
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
29
25
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
30
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
31
26
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
32
27
|
|
|
33
28
|
import getPort from 'get-port';
|
|
34
29
|
import { type GetContractReturnType, getAddress, getContract } from 'viem';
|
|
35
30
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
36
31
|
|
|
32
|
+
import {
|
|
33
|
+
SCHNORR_HARDCODED_PRIVATE_KEY,
|
|
34
|
+
SchnorrHardcodedKeyAccountContract,
|
|
35
|
+
} from '../fixtures/schnorr_hardcoded_account_contract.js';
|
|
36
|
+
import {
|
|
37
|
+
type EndToEndContext,
|
|
38
|
+
type SetupOptions,
|
|
39
|
+
getPrivateKeyFromIndex,
|
|
40
|
+
getSponsoredFPCAddress,
|
|
41
|
+
setup,
|
|
42
|
+
teardown,
|
|
43
|
+
} from '../fixtures/setup.js';
|
|
37
44
|
import {
|
|
38
45
|
ATTESTER_PRIVATE_KEYS_START_INDEX,
|
|
39
46
|
createValidatorConfig,
|
|
40
47
|
generatePrivateKeys,
|
|
41
48
|
} from '../fixtures/setup_p2p_test.js';
|
|
42
|
-
import {
|
|
43
|
-
type ISnapshotManager,
|
|
44
|
-
type SubsystemsContext,
|
|
45
|
-
createSnapshotManager,
|
|
46
|
-
deployAccounts,
|
|
47
|
-
} from '../fixtures/snapshot_manager.js';
|
|
48
|
-
import { type SetupOptions, getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
49
49
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
50
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
50
51
|
|
|
51
52
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
52
53
|
const BOOTSTRAP_NODE_PRIVATE_KEY = '080212208f988fc0899e4a73a5aee4d271a5f20670603a756ad8d84f2c94263a6427c591';
|
|
@@ -56,25 +57,25 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
|
|
|
56
57
|
export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
57
58
|
aztecSlotDuration: 12,
|
|
58
59
|
ethereumSlotDuration: 4,
|
|
59
|
-
|
|
60
|
+
aztecProofSubmissionEpochs: 640,
|
|
60
61
|
};
|
|
61
62
|
|
|
62
63
|
export class P2PNetworkTest {
|
|
63
|
-
|
|
64
|
+
public context!: EndToEndContext;
|
|
64
65
|
public baseAccountPrivateKey: `0x${string}`;
|
|
65
66
|
public baseAccount;
|
|
66
67
|
|
|
67
68
|
public logger: Logger;
|
|
68
69
|
public monitor!: ChainMonitor;
|
|
69
70
|
|
|
70
|
-
public ctx!:
|
|
71
|
+
public ctx!: EndToEndContext;
|
|
71
72
|
public attesterPrivateKeys: `0x${string}`[] = [];
|
|
72
73
|
public attesterPublicKeys: string[] = [];
|
|
73
74
|
public peerIdPrivateKeys: string[] = [];
|
|
74
75
|
public validators: Operator[] = [];
|
|
75
76
|
|
|
76
|
-
public
|
|
77
|
-
public
|
|
77
|
+
public hardcodedAccountData!: InitialAccountData;
|
|
78
|
+
public genesis: GenesisData | undefined;
|
|
78
79
|
|
|
79
80
|
// The re-execution test needs a wallet and a spam contract
|
|
80
81
|
public wallet?: TestWallet;
|
|
@@ -83,6 +84,10 @@ export class P2PNetworkTest {
|
|
|
83
84
|
|
|
84
85
|
public bootstrapNode?: BootstrapNode;
|
|
85
86
|
|
|
87
|
+
// Store setup options for use in setup()
|
|
88
|
+
private setupOptions: SetupOptions;
|
|
89
|
+
private deployL1ContractsArgs: any;
|
|
90
|
+
|
|
86
91
|
constructor(
|
|
87
92
|
public readonly testName: string,
|
|
88
93
|
public bootstrapNodeEnr: string,
|
|
@@ -107,43 +112,41 @@ export class P2PNetworkTest {
|
|
|
107
112
|
|
|
108
113
|
const zkPassportParams = ZkPassportProofParams.random();
|
|
109
114
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
slashingRoundSizeInEpochs
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
aztecProofSubmissionEpochs
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
zkPassportScope: zkPassportParams.scope,
|
|
144
|
-
},
|
|
115
|
+
// Store setup options for later use
|
|
116
|
+
this.setupOptions = {
|
|
117
|
+
...initialValidatorConfig,
|
|
118
|
+
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
119
|
+
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
120
|
+
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
121
|
+
aztecProofSubmissionEpochs:
|
|
122
|
+
initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
123
|
+
slashingRoundSizeInEpochs:
|
|
124
|
+
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
125
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
126
|
+
aztecTargetCommitteeSize: numberOfValidators,
|
|
127
|
+
metricsPort: metricsPort,
|
|
128
|
+
numberOfInitialFundedAccounts: 2,
|
|
129
|
+
startProverNode,
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
this.deployL1ContractsArgs = {
|
|
133
|
+
...initialValidatorConfig,
|
|
134
|
+
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
135
|
+
slashingRoundSizeInEpochs:
|
|
136
|
+
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
137
|
+
slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
|
|
138
|
+
|
|
139
|
+
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
140
|
+
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
141
|
+
aztecProofSubmissionEpochs:
|
|
142
|
+
initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
143
|
+
aztecTargetCommitteeSize: numberOfValidators,
|
|
144
|
+
initialValidators: [],
|
|
145
|
+
zkPassportArgs: {
|
|
146
|
+
zkPassportDomain: zkPassportParams.domain,
|
|
147
|
+
zkPassportScope: zkPassportParams.scope,
|
|
145
148
|
},
|
|
146
|
-
|
|
149
|
+
};
|
|
147
150
|
}
|
|
148
151
|
|
|
149
152
|
static async create({
|
|
@@ -186,24 +189,23 @@ export class P2PNetworkTest {
|
|
|
186
189
|
}
|
|
187
190
|
|
|
188
191
|
get fundedAccount() {
|
|
189
|
-
if (!this.
|
|
190
|
-
throw new Error('Call
|
|
192
|
+
if (!this.hardcodedAccountData) {
|
|
193
|
+
throw new Error('Call setup to initialize the hardcoded account.');
|
|
191
194
|
}
|
|
192
|
-
return this.
|
|
195
|
+
return this.hardcodedAccountData;
|
|
193
196
|
}
|
|
194
197
|
|
|
195
198
|
async addBootstrapNode() {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
});
|
|
199
|
+
this.logger.info('Adding bootstrap node');
|
|
200
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
201
|
+
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(
|
|
202
|
+
BOOTSTRAP_NODE_PRIVATE_KEY,
|
|
203
|
+
this.bootNodePort,
|
|
204
|
+
telemetry,
|
|
205
|
+
this.context.config,
|
|
206
|
+
);
|
|
207
|
+
// Overwrite enr with updated info
|
|
208
|
+
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
getValidators() {
|
|
@@ -224,128 +226,120 @@ export class P2PNetworkTest {
|
|
|
224
226
|
return { validators };
|
|
225
227
|
}
|
|
226
228
|
|
|
227
|
-
async
|
|
229
|
+
async applyBaseSetup() {
|
|
228
230
|
await this.addBootstrapNode();
|
|
229
|
-
await this.snapshotManager.snapshot('add-validators', async ({ deployL1ContractsValues, cheatCodes }) => {
|
|
230
|
-
const rollup = getContract({
|
|
231
|
-
address: deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
232
|
-
abi: RollupAbi,
|
|
233
|
-
client: deployL1ContractsValues.l1Client,
|
|
234
|
-
});
|
|
235
231
|
|
|
236
|
-
|
|
232
|
+
this.logger.info('Adding validators');
|
|
233
|
+
const rollup = getContract({
|
|
234
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
235
|
+
abi: RollupAbi,
|
|
236
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
237
|
+
});
|
|
237
238
|
|
|
238
|
-
|
|
239
|
-
address: deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
240
|
-
abi: TestERC20Abi,
|
|
241
|
-
client: deployL1ContractsValues.l1Client,
|
|
242
|
-
});
|
|
239
|
+
this.logger.info(`Adding ${this.numberOfValidators} validators`);
|
|
243
240
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
);
|
|
241
|
+
const stakingAsset = getContract({
|
|
242
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
243
|
+
abi: TestERC20Abi,
|
|
244
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
245
|
+
});
|
|
250
246
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
247
|
+
const { address: multiAdderAddress } = await deployL1Contract(
|
|
248
|
+
this.context.deployL1ContractsValues.l1Client,
|
|
249
|
+
MultiAdderArtifact.contractAbi,
|
|
250
|
+
MultiAdderArtifact.contractBytecode,
|
|
251
|
+
[rollup.address, this.context.deployL1ContractsValues.l1Client.account.address],
|
|
252
|
+
);
|
|
256
253
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
);
|
|
254
|
+
const multiAdder = getContract({
|
|
255
|
+
address: multiAdderAddress.toString(),
|
|
256
|
+
abi: MultiAdderArtifact.contractAbi,
|
|
257
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
258
|
+
});
|
|
263
259
|
|
|
264
|
-
|
|
265
|
-
|
|
260
|
+
const stakeNeeded = (await rollup.read.getActivationThreshold()) * BigInt(this.numberOfValidators);
|
|
261
|
+
await Promise.all(
|
|
262
|
+
[await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
|
|
263
|
+
this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
|
|
264
|
+
),
|
|
265
|
+
);
|
|
266
266
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
throw new Error('GSE contract not deployed');
|
|
270
|
-
}
|
|
267
|
+
const { validators } = this.getValidators();
|
|
268
|
+
this.validators = validators;
|
|
271
269
|
|
|
272
|
-
|
|
270
|
+
const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress!;
|
|
271
|
+
if (!gseAddress) {
|
|
272
|
+
throw new Error('GSE contract not deployed');
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
273
276
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
};
|
|
277
|
+
const makeValidatorTuples = async (validator: Operator) => {
|
|
278
|
+
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
279
|
+
return {
|
|
280
|
+
attester: validator.attester.toString() as `0x${string}`,
|
|
281
|
+
withdrawer: validator.withdrawer.toString() as `0x${string}`,
|
|
282
|
+
...registrationTuple,
|
|
281
283
|
};
|
|
282
|
-
|
|
284
|
+
};
|
|
285
|
+
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
283
286
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
+
await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
288
|
+
hash: await multiAdder.write.addValidators([validatorTuples]),
|
|
289
|
+
});
|
|
287
290
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
291
|
+
await this.context.cheatCodes.rollup.advanceToEpoch(
|
|
292
|
+
EpochNumber.fromBigInt(
|
|
293
|
+
BigInt(await this.context.cheatCodes.rollup.getEpoch()) +
|
|
294
|
+
(await rollup.read.getLagInEpochsForValidatorSet()) +
|
|
295
|
+
1n,
|
|
296
|
+
),
|
|
297
|
+
);
|
|
293
298
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
});
|
|
299
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
300
|
+
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
297
301
|
}
|
|
298
302
|
|
|
303
|
+
/** Points the wallet to a P2P-enabled node so transactions can propagate through the network. */
|
|
304
|
+
setupWalletOnNode(node: AztecNodeService) {
|
|
305
|
+
this.logger.info('Pointing wallet to a P2P-enabled node');
|
|
306
|
+
this.context.wallet.updateNode(node);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/** Registers the hardcoded account in PXE without on-chain deployment. No sequencer needed. */
|
|
299
310
|
async setupAccount() {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
);
|
|
311
|
+
this.logger.info('Registering hardcoded account (no deployment)');
|
|
312
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
313
|
+
const accountManager = await (this.context.wallet as TestWallet).createAccount({
|
|
314
|
+
secret: this.hardcodedAccountData.secret,
|
|
315
|
+
salt: this.hardcodedAccountData.salt,
|
|
316
|
+
contract,
|
|
317
|
+
});
|
|
318
|
+
this.defaultAccountAddress = accountManager.address;
|
|
319
|
+
this.wallet = this.context.wallet;
|
|
310
320
|
}
|
|
311
321
|
|
|
312
322
|
async deploySpamContract() {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
.send({ from: this.defaultAccountAddress! })
|
|
322
|
-
.deployed();
|
|
323
|
-
return { contractAddress: spamContract.address };
|
|
324
|
-
},
|
|
325
|
-
({ contractAddress }) => {
|
|
326
|
-
if (!this.wallet) {
|
|
327
|
-
throw new Error('Call snapshot t.setupAccount before deploying account contract');
|
|
328
|
-
}
|
|
329
|
-
this.spamContract = SpamContract.at(contractAddress, this.wallet);
|
|
330
|
-
return Promise.resolve();
|
|
331
|
-
},
|
|
332
|
-
);
|
|
323
|
+
this.logger.info('Deploying spam contract');
|
|
324
|
+
if (!this.wallet) {
|
|
325
|
+
throw new Error('Call setupAccount before deploying spam contract');
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
({ contract: this.spamContract } = await SpamContract.deploy(this.wallet).send({
|
|
329
|
+
from: this.defaultAccountAddress!,
|
|
330
|
+
}));
|
|
333
331
|
}
|
|
334
332
|
|
|
335
333
|
async removeInitialNode() {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
await aztecNode.stop();
|
|
347
|
-
},
|
|
348
|
-
);
|
|
334
|
+
this.logger.info('Removing initial node');
|
|
335
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
336
|
+
const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
337
|
+
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
338
|
+
blockNumber: receipt.blockNumber,
|
|
339
|
+
});
|
|
340
|
+
this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
341
|
+
|
|
342
|
+
await this.context.aztecNodeService.stop();
|
|
349
343
|
}
|
|
350
344
|
|
|
351
345
|
async sendDummyTx() {
|
|
@@ -353,7 +347,7 @@ export class P2PNetworkTest {
|
|
|
353
347
|
}
|
|
354
348
|
|
|
355
349
|
private async _sendDummyTx(l1Client: ExtendedViemWalletClient) {
|
|
356
|
-
const l1TxUtils =
|
|
350
|
+
const l1TxUtils = createL1TxUtils(l1Client);
|
|
357
351
|
return await l1TxUtils.sendAndMonitorTransaction({
|
|
358
352
|
to: l1Client.account!.address,
|
|
359
353
|
value: 1n,
|
|
@@ -361,17 +355,53 @@ export class P2PNetworkTest {
|
|
|
361
355
|
}
|
|
362
356
|
|
|
363
357
|
async setup() {
|
|
364
|
-
this.
|
|
358
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
359
|
+
|
|
360
|
+
// Pre-compute hardcoded account data so it gets funded in genesis.
|
|
361
|
+
const contract = new SchnorrHardcodedKeyAccountContract();
|
|
362
|
+
const secret = Fr.random();
|
|
363
|
+
const salt = Fr.random();
|
|
364
|
+
this.hardcodedAccountData = {
|
|
365
|
+
secret,
|
|
366
|
+
salt,
|
|
367
|
+
signingKey: SCHNORR_HARDCODED_PRIVATE_KEY,
|
|
368
|
+
address: await getAccountContractAddress(contract, secret, salt),
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
// Generate regular Schnorr accounts for tests that need deployable accounts (e.g. add_rollup).
|
|
372
|
+
const regularAccounts = await generateSchnorrAccounts(this.setupOptions.numberOfInitialFundedAccounts ?? 2);
|
|
373
|
+
|
|
374
|
+
this.context = await setup(
|
|
375
|
+
0,
|
|
376
|
+
{
|
|
377
|
+
...this.setupOptions,
|
|
378
|
+
fundSponsoredFPC: true,
|
|
379
|
+
skipAccountDeployment: true,
|
|
380
|
+
skipInitialSequencer: true,
|
|
381
|
+
initialFundedAccounts: [...regularAccounts, this.hardcodedAccountData],
|
|
382
|
+
slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
|
|
383
|
+
aztecTargetCommitteeSize: 0,
|
|
384
|
+
l1ContractsArgs: this.deployL1ContractsArgs,
|
|
385
|
+
},
|
|
386
|
+
// Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
387
|
+
{ syncChainTip: 'checkpointed' },
|
|
388
|
+
);
|
|
389
|
+
this.ctx = this.context;
|
|
365
390
|
|
|
366
391
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
367
|
-
const initialFundedAccounts = [...this.
|
|
392
|
+
const initialFundedAccounts = [...this.context.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
|
|
368
393
|
|
|
369
|
-
const {
|
|
370
|
-
|
|
394
|
+
const { genesis } = await getGenesisValues(
|
|
395
|
+
initialFundedAccounts,
|
|
396
|
+
undefined,
|
|
397
|
+
undefined,
|
|
398
|
+
this.context.genesis!.genesisTimestamp,
|
|
399
|
+
);
|
|
400
|
+
this.genesis = genesis;
|
|
371
401
|
|
|
372
|
-
const rollupContract = RollupContract.getFromL1ContractsValues(this.
|
|
373
|
-
this.monitor = new ChainMonitor(rollupContract, this.
|
|
374
|
-
this.monitor.on('l1-block', ({ timestamp }) => this.
|
|
402
|
+
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
403
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
404
|
+
this.monitor.on('l1-block', ({ timestamp }) => this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
375
405
|
}
|
|
376
406
|
|
|
377
407
|
async stopNodes(nodes: AztecNodeService[]) {
|
|
@@ -402,6 +432,7 @@ export class P2PNetworkTest {
|
|
|
402
432
|
expectedNodeCount?: number,
|
|
403
433
|
timeoutSeconds = 30,
|
|
404
434
|
checkIntervalSeconds = 0.1,
|
|
435
|
+
topics: TopicType[] = [TopicType.tx],
|
|
405
436
|
) {
|
|
406
437
|
const nodeCount = expectedNodeCount ?? nodes.length;
|
|
407
438
|
const minPeerCount = nodeCount - 1;
|
|
@@ -427,19 +458,41 @@ export class P2PNetworkTest {
|
|
|
427
458
|
);
|
|
428
459
|
|
|
429
460
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
461
|
+
|
|
462
|
+
// Wait for GossipSub mesh to form for all specified topics.
|
|
463
|
+
// We only require at least 1 mesh peer per node because GossipSub
|
|
464
|
+
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
465
|
+
for (const topic of topics) {
|
|
466
|
+
this.logger.warn(`Waiting for GossipSub mesh to form for ${topic} topic...`);
|
|
467
|
+
await Promise.all(
|
|
468
|
+
nodes.map(async (node, index) => {
|
|
469
|
+
const p2p = node.getP2P();
|
|
470
|
+
await retryUntil(
|
|
471
|
+
async () => {
|
|
472
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(topic);
|
|
473
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for ${topic} topic`);
|
|
474
|
+
return meshPeers >= 1 ? true : undefined;
|
|
475
|
+
},
|
|
476
|
+
`Node ${index} to have gossip mesh peers for ${topic} topic`,
|
|
477
|
+
timeoutSeconds,
|
|
478
|
+
checkIntervalSeconds,
|
|
479
|
+
);
|
|
480
|
+
}),
|
|
481
|
+
);
|
|
482
|
+
this.logger.warn(`All nodes have gossip mesh peers for ${topic} topic`);
|
|
483
|
+
}
|
|
430
484
|
}
|
|
431
485
|
|
|
432
486
|
async teardown() {
|
|
433
487
|
await this.monitor.stop();
|
|
434
488
|
await tryStop(this.bootstrapNode, this.logger);
|
|
435
|
-
await this.
|
|
489
|
+
await teardown(this.context);
|
|
436
490
|
}
|
|
437
491
|
|
|
438
492
|
async getContracts(): Promise<{
|
|
439
493
|
rollup: RollupContract;
|
|
440
494
|
slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
|
|
441
|
-
slashingProposer:
|
|
442
|
-
slashFactory: SlashFactoryContract;
|
|
495
|
+
slashingProposer: SlashingProposerContract | undefined;
|
|
443
496
|
}> {
|
|
444
497
|
if (!this.ctx.deployL1ContractsValues) {
|
|
445
498
|
throw new Error('DeployAztecL1ContractsValues not set');
|
|
@@ -451,19 +504,14 @@ export class P2PNetworkTest {
|
|
|
451
504
|
);
|
|
452
505
|
|
|
453
506
|
const slasherContract = getContract({
|
|
454
|
-
address: getAddress(await rollup.getSlasherAddress()),
|
|
507
|
+
address: getAddress((await rollup.getSlasherAddress()).toString()),
|
|
455
508
|
abi: SlasherAbi,
|
|
456
509
|
client: this.ctx.deployL1ContractsValues.l1Client,
|
|
457
510
|
});
|
|
458
511
|
|
|
459
|
-
// Get the actual slashing proposer from rollup
|
|
512
|
+
// Get the actual slashing proposer from rollup
|
|
460
513
|
const slashingProposer = await rollup.getSlashingProposer();
|
|
461
514
|
|
|
462
|
-
|
|
463
|
-
this.ctx.deployL1ContractsValues.l1Client,
|
|
464
|
-
getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress!.toString()),
|
|
465
|
-
);
|
|
466
|
-
|
|
467
|
-
return { rollup, slasherContract, slashingProposer, slashFactory };
|
|
515
|
+
return { rollup, slasherContract, slashingProposer };
|
|
468
516
|
}
|
|
469
517
|
}
|