@aztec/end-to-end 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212
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 +4 -3
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +2 -2
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +25 -14
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +111 -90
- package/dest/bench/client_flows/config.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +8 -30
- package/dest/bench/utils.d.ts +4 -13
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +10 -34
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +8 -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 +42 -42
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +12 -9
- 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 +35 -35
- package/dest/e2e_deploy_contract/deploy_test.d.ts +12 -6
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +9 -18
- package/dest/e2e_epochs/epochs_test.d.ts +19 -12
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +30 -22
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +14 -11
- package/dest/e2e_fees/fees_test.d.ts +10 -8
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +35 -38
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -2
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +9 -8
- package/dest/e2e_multi_validator/utils.d.ts +2 -2
- package/dest/e2e_multi_validator/utils.d.ts.map +1 -1
- package/dest/e2e_multi_validator/utils.js +4 -10
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -4
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +11 -12
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
- package/dest/e2e_p2p/inactivity_slash_test.js +139 -0
- package/dest/e2e_p2p/p2p_network.d.ts +238 -17
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +46 -19
- package/dest/e2e_p2p/shared.d.ts +16 -17
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +56 -55
- package/dest/e2e_token_contract/token_contract_test.d.ts +6 -5
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +14 -17
- package/dest/fixtures/e2e_prover_test.d.ts +12 -8
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +53 -58
- package/dest/fixtures/fixtures.d.ts +1 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +1 -1
- package/dest/fixtures/get_acvm_config.d.ts +2 -2
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +2 -2
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +2 -2
- package/dest/fixtures/index.d.ts +1 -1
- 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/logging.d.ts +1 -1
- package/dest/fixtures/setup_l1_contracts.d.ts +476 -5
- package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
- package/dest/fixtures/setup_l1_contracts.js +3 -3
- package/dest/fixtures/setup_p2p_test.d.ts +12 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +50 -24
- package/dest/fixtures/snapshot_manager.d.ts +13 -10
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +66 -51
- package/dest/fixtures/token_utils.d.ts +10 -5
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +17 -18
- package/dest/fixtures/utils.d.ts +479 -35
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +106 -125
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +53 -0
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts +2 -2
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +20 -23
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +14 -16
- package/dest/shared/gas_portal_test_harness.d.ts +10 -17
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +11 -8
- package/dest/shared/index.d.ts +1 -1
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +1 -1
- package/dest/shared/submit-transactions.d.ts +6 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +8 -7
- package/dest/shared/uniswap_l1_l2.d.ts +12 -8
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +44 -58
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +4 -7
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +8 -5
- package/dest/simulators/token_simulator.d.ts +4 -2
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +22 -14
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +144 -86
- package/dest/spartan/tx_metrics.d.ts +39 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +95 -0
- package/dest/spartan/utils.d.ts +92 -17
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +386 -63
- package/package.json +43 -40
- package/src/bench/client_flows/benchmark.ts +8 -8
- package/src/bench/client_flows/client_flows_benchmark.ts +141 -114
- package/src/bench/client_flows/data_extractor.ts +9 -31
- package/src/bench/utils.ts +9 -37
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +46 -63
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +38 -51
- package/src/e2e_deploy_contract/deploy_test.ts +18 -36
- package/src/e2e_epochs/epochs_test.ts +41 -35
- package/src/e2e_fees/bridging_race.notest.ts +16 -11
- package/src/e2e_fees/fees_test.ts +42 -47
- package/src/e2e_l1_publisher/write_json.ts +12 -9
- package/src/e2e_multi_validator/utils.ts +5 -11
- package/src/e2e_nested_contract/nested_contract_test.ts +15 -13
- package/src/e2e_p2p/inactivity_slash_test.ts +184 -0
- package/src/e2e_p2p/p2p_network.ts +124 -82
- package/src/e2e_p2p/shared.ts +66 -58
- package/src/e2e_token_contract/token_contract_test.ts +17 -17
- package/src/fixtures/e2e_prover_test.ts +60 -97
- package/src/fixtures/fixtures.ts +1 -2
- package/src/fixtures/get_acvm_config.ts +2 -2
- package/src/fixtures/get_bb_config.ts +3 -2
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup_l1_contracts.ts +5 -4
- package/src/fixtures/setup_p2p_test.ts +79 -32
- package/src/fixtures/snapshot_manager.ts +87 -82
- package/src/fixtures/token_utils.ts +16 -24
- package/src/fixtures/utils.ts +142 -172
- package/src/fixtures/web3signer.ts +63 -0
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +3 -11
- package/src/quality_of_service/alert_checker.ts +1 -1
- package/src/shared/cross_chain_test_harness.ts +23 -31
- package/src/shared/gas_portal_test_harness.ts +14 -21
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +77 -86
- package/src/simulators/lending_simulator.ts +9 -6
- package/src/simulators/token_simulator.ts +5 -2
- package/src/spartan/DEVELOP.md +15 -3
- package/src/spartan/setup_test_wallets.ts +171 -127
- package/src/spartan/tx_metrics.ts +130 -0
- package/src/spartan/utils.ts +463 -64
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
4
|
-
import { type EmpireSlashingProposerContract,
|
|
2
|
+
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
3
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
+
import { type EmpireSlashingProposerContract, RollupContract, type TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import type { Operator } from '@aztec/ethereum/deploy-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';
|
|
14
|
+
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
12
15
|
import { type GetContractReturnType } from 'viem';
|
|
13
16
|
import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
|
|
17
|
+
import { type SetupOptions } from '../fixtures/utils.js';
|
|
14
18
|
export declare const WAIT_FOR_TX_TIMEOUT: number;
|
|
15
19
|
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
16
20
|
aztecSlotDuration: number;
|
|
@@ -18,6 +22,7 @@ export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
|
18
22
|
aztecProofSubmissionWindow: number;
|
|
19
23
|
};
|
|
20
24
|
export declare class P2PNetworkTest {
|
|
25
|
+
readonly testName: string;
|
|
21
26
|
bootstrapNodeEnr: string;
|
|
22
27
|
bootNodePort: number;
|
|
23
28
|
numberOfValidators: number;
|
|
@@ -26,20 +31,225 @@ export declare class P2PNetworkTest {
|
|
|
26
31
|
private snapshotManager;
|
|
27
32
|
baseAccountPrivateKey: `0x${string}`;
|
|
28
33
|
baseAccount: {
|
|
29
|
-
address:
|
|
34
|
+
address: `0x${string}`;
|
|
30
35
|
nonceManager?: import("viem").NonceManager | undefined;
|
|
31
36
|
sign: (parameters: {
|
|
32
|
-
hash:
|
|
33
|
-
}) => Promise
|
|
34
|
-
|
|
37
|
+
hash: `0x${string}`;
|
|
38
|
+
}) => Promise<`0x${string}`>;
|
|
39
|
+
signAuthorization: (parameters: import("viem").AuthorizationRequest) => Promise<import("viem/accounts").SignAuthorizationReturnType>;
|
|
35
40
|
signMessage: ({ message }: {
|
|
36
41
|
message: import("viem").SignableMessage;
|
|
37
|
-
}) => Promise
|
|
42
|
+
}) => Promise<`0x${string}`>;
|
|
38
43
|
signTransaction: <serializer extends import("viem").SerializeTransactionFn<import("viem").TransactionSerializable> = import("viem").SerializeTransactionFn<import("viem").TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
|
|
39
44
|
serializer?: serializer | undefined;
|
|
40
|
-
} | undefined) => Promise
|
|
41
|
-
signTypedData: <const typedData extends
|
|
42
|
-
|
|
45
|
+
} | undefined) => Promise<`0x${string}`>;
|
|
46
|
+
signTypedData: <const typedData extends Record<string, unknown> | {
|
|
47
|
+
[x: string]: readonly import("viem").TypedDataParameter[];
|
|
48
|
+
[x: `address[${string}]`]: undefined;
|
|
49
|
+
[x: `bool[${string}]`]: undefined;
|
|
50
|
+
[x: `bytes10[${string}]`]: undefined;
|
|
51
|
+
[x: `bytes11[${string}]`]: undefined;
|
|
52
|
+
[x: `bytes12[${string}]`]: undefined;
|
|
53
|
+
[x: `bytes13[${string}]`]: undefined;
|
|
54
|
+
[x: `bytes14[${string}]`]: undefined;
|
|
55
|
+
[x: `bytes15[${string}]`]: undefined;
|
|
56
|
+
[x: `bytes16[${string}]`]: undefined;
|
|
57
|
+
[x: `bytes17[${string}]`]: undefined;
|
|
58
|
+
[x: `bytes18[${string}]`]: undefined;
|
|
59
|
+
[x: `bytes19[${string}]`]: undefined;
|
|
60
|
+
[x: `bytes1[${string}]`]: undefined;
|
|
61
|
+
[x: `bytes20[${string}]`]: undefined;
|
|
62
|
+
[x: `bytes21[${string}]`]: undefined;
|
|
63
|
+
[x: `bytes22[${string}]`]: undefined;
|
|
64
|
+
[x: `bytes23[${string}]`]: undefined;
|
|
65
|
+
[x: `bytes24[${string}]`]: undefined;
|
|
66
|
+
[x: `bytes25[${string}]`]: undefined;
|
|
67
|
+
[x: `bytes26[${string}]`]: undefined;
|
|
68
|
+
[x: `bytes27[${string}]`]: undefined;
|
|
69
|
+
[x: `bytes28[${string}]`]: undefined;
|
|
70
|
+
[x: `bytes29[${string}]`]: undefined;
|
|
71
|
+
[x: `bytes2[${string}]`]: undefined;
|
|
72
|
+
[x: `bytes30[${string}]`]: undefined;
|
|
73
|
+
[x: `bytes31[${string}]`]: undefined;
|
|
74
|
+
[x: `bytes32[${string}]`]: undefined;
|
|
75
|
+
[x: `bytes3[${string}]`]: undefined;
|
|
76
|
+
[x: `bytes4[${string}]`]: undefined;
|
|
77
|
+
[x: `bytes5[${string}]`]: undefined;
|
|
78
|
+
[x: `bytes6[${string}]`]: undefined;
|
|
79
|
+
[x: `bytes7[${string}]`]: undefined;
|
|
80
|
+
[x: `bytes8[${string}]`]: undefined;
|
|
81
|
+
[x: `bytes9[${string}]`]: undefined;
|
|
82
|
+
[x: `bytes[${string}]`]: undefined;
|
|
83
|
+
[x: `function[${string}]`]: undefined;
|
|
84
|
+
[x: `int104[${string}]`]: undefined;
|
|
85
|
+
[x: `int112[${string}]`]: undefined;
|
|
86
|
+
[x: `int120[${string}]`]: undefined;
|
|
87
|
+
[x: `int128[${string}]`]: undefined;
|
|
88
|
+
[x: `int136[${string}]`]: undefined;
|
|
89
|
+
[x: `int144[${string}]`]: undefined;
|
|
90
|
+
[x: `int152[${string}]`]: undefined;
|
|
91
|
+
[x: `int160[${string}]`]: undefined;
|
|
92
|
+
[x: `int168[${string}]`]: undefined;
|
|
93
|
+
[x: `int16[${string}]`]: undefined;
|
|
94
|
+
[x: `int176[${string}]`]: undefined;
|
|
95
|
+
[x: `int184[${string}]`]: undefined;
|
|
96
|
+
[x: `int192[${string}]`]: undefined;
|
|
97
|
+
[x: `int200[${string}]`]: undefined;
|
|
98
|
+
[x: `int208[${string}]`]: undefined;
|
|
99
|
+
[x: `int216[${string}]`]: undefined;
|
|
100
|
+
[x: `int224[${string}]`]: undefined;
|
|
101
|
+
[x: `int232[${string}]`]: undefined;
|
|
102
|
+
[x: `int240[${string}]`]: undefined;
|
|
103
|
+
[x: `int248[${string}]`]: undefined;
|
|
104
|
+
[x: `int24[${string}]`]: undefined;
|
|
105
|
+
[x: `int256[${string}]`]: undefined;
|
|
106
|
+
[x: `int32[${string}]`]: undefined;
|
|
107
|
+
[x: `int40[${string}]`]: undefined;
|
|
108
|
+
[x: `int48[${string}]`]: undefined;
|
|
109
|
+
[x: `int56[${string}]`]: undefined;
|
|
110
|
+
[x: `int64[${string}]`]: undefined;
|
|
111
|
+
[x: `int72[${string}]`]: undefined;
|
|
112
|
+
[x: `int80[${string}]`]: undefined;
|
|
113
|
+
[x: `int88[${string}]`]: undefined;
|
|
114
|
+
[x: `int8[${string}]`]: undefined;
|
|
115
|
+
[x: `int96[${string}]`]: undefined;
|
|
116
|
+
[x: `int[${string}]`]: undefined;
|
|
117
|
+
[x: `string[${string}]`]: undefined;
|
|
118
|
+
[x: `uint104[${string}]`]: undefined;
|
|
119
|
+
[x: `uint112[${string}]`]: undefined;
|
|
120
|
+
[x: `uint120[${string}]`]: undefined;
|
|
121
|
+
[x: `uint128[${string}]`]: undefined;
|
|
122
|
+
[x: `uint136[${string}]`]: undefined;
|
|
123
|
+
[x: `uint144[${string}]`]: undefined;
|
|
124
|
+
[x: `uint152[${string}]`]: undefined;
|
|
125
|
+
[x: `uint160[${string}]`]: undefined;
|
|
126
|
+
[x: `uint168[${string}]`]: undefined;
|
|
127
|
+
[x: `uint16[${string}]`]: undefined;
|
|
128
|
+
[x: `uint176[${string}]`]: undefined;
|
|
129
|
+
[x: `uint184[${string}]`]: undefined;
|
|
130
|
+
[x: `uint192[${string}]`]: undefined;
|
|
131
|
+
[x: `uint200[${string}]`]: undefined;
|
|
132
|
+
[x: `uint208[${string}]`]: undefined;
|
|
133
|
+
[x: `uint216[${string}]`]: undefined;
|
|
134
|
+
[x: `uint224[${string}]`]: undefined;
|
|
135
|
+
[x: `uint232[${string}]`]: undefined;
|
|
136
|
+
[x: `uint240[${string}]`]: undefined;
|
|
137
|
+
[x: `uint248[${string}]`]: undefined;
|
|
138
|
+
[x: `uint24[${string}]`]: undefined;
|
|
139
|
+
[x: `uint256[${string}]`]: undefined;
|
|
140
|
+
[x: `uint32[${string}]`]: undefined;
|
|
141
|
+
[x: `uint40[${string}]`]: undefined;
|
|
142
|
+
[x: `uint48[${string}]`]: undefined;
|
|
143
|
+
[x: `uint56[${string}]`]: undefined;
|
|
144
|
+
[x: `uint64[${string}]`]: undefined;
|
|
145
|
+
[x: `uint72[${string}]`]: undefined;
|
|
146
|
+
[x: `uint80[${string}]`]: undefined;
|
|
147
|
+
[x: `uint88[${string}]`]: undefined;
|
|
148
|
+
[x: `uint8[${string}]`]: undefined;
|
|
149
|
+
[x: `uint96[${string}]`]: undefined;
|
|
150
|
+
[x: `uint[${string}]`]: undefined;
|
|
151
|
+
address?: undefined;
|
|
152
|
+
bool?: undefined;
|
|
153
|
+
bytes?: undefined;
|
|
154
|
+
bytes1?: undefined;
|
|
155
|
+
bytes10?: undefined;
|
|
156
|
+
bytes11?: undefined;
|
|
157
|
+
bytes12?: undefined;
|
|
158
|
+
bytes13?: undefined;
|
|
159
|
+
bytes14?: undefined;
|
|
160
|
+
bytes15?: undefined;
|
|
161
|
+
bytes16?: undefined;
|
|
162
|
+
bytes17?: undefined;
|
|
163
|
+
bytes18?: undefined;
|
|
164
|
+
bytes19?: undefined;
|
|
165
|
+
bytes2?: undefined;
|
|
166
|
+
bytes20?: undefined;
|
|
167
|
+
bytes21?: undefined;
|
|
168
|
+
bytes22?: undefined;
|
|
169
|
+
bytes23?: undefined;
|
|
170
|
+
bytes24?: undefined;
|
|
171
|
+
bytes25?: undefined;
|
|
172
|
+
bytes26?: undefined;
|
|
173
|
+
bytes27?: undefined;
|
|
174
|
+
bytes28?: undefined;
|
|
175
|
+
bytes29?: undefined;
|
|
176
|
+
bytes3?: undefined;
|
|
177
|
+
bytes30?: undefined;
|
|
178
|
+
bytes31?: undefined;
|
|
179
|
+
bytes32?: undefined;
|
|
180
|
+
bytes4?: undefined;
|
|
181
|
+
bytes5?: undefined;
|
|
182
|
+
bytes6?: undefined;
|
|
183
|
+
bytes7?: undefined;
|
|
184
|
+
bytes8?: undefined;
|
|
185
|
+
bytes9?: undefined;
|
|
186
|
+
int104?: undefined;
|
|
187
|
+
int112?: undefined;
|
|
188
|
+
int120?: undefined;
|
|
189
|
+
int128?: undefined;
|
|
190
|
+
int136?: undefined;
|
|
191
|
+
int144?: undefined;
|
|
192
|
+
int152?: undefined;
|
|
193
|
+
int16?: undefined;
|
|
194
|
+
int160?: undefined;
|
|
195
|
+
int168?: undefined;
|
|
196
|
+
int176?: undefined;
|
|
197
|
+
int184?: undefined;
|
|
198
|
+
int192?: undefined;
|
|
199
|
+
int200?: undefined;
|
|
200
|
+
int208?: undefined;
|
|
201
|
+
int216?: undefined;
|
|
202
|
+
int224?: undefined;
|
|
203
|
+
int232?: undefined;
|
|
204
|
+
int24?: undefined;
|
|
205
|
+
int240?: undefined;
|
|
206
|
+
int248?: undefined;
|
|
207
|
+
int256?: undefined;
|
|
208
|
+
int32?: undefined;
|
|
209
|
+
int40?: undefined;
|
|
210
|
+
int48?: undefined;
|
|
211
|
+
int56?: undefined;
|
|
212
|
+
int64?: undefined;
|
|
213
|
+
int72?: undefined;
|
|
214
|
+
int8?: undefined;
|
|
215
|
+
int80?: undefined;
|
|
216
|
+
int88?: undefined;
|
|
217
|
+
int96?: undefined;
|
|
218
|
+
string?: undefined;
|
|
219
|
+
uint104?: undefined;
|
|
220
|
+
uint112?: undefined;
|
|
221
|
+
uint120?: undefined;
|
|
222
|
+
uint128?: undefined;
|
|
223
|
+
uint136?: undefined;
|
|
224
|
+
uint144?: undefined;
|
|
225
|
+
uint152?: undefined;
|
|
226
|
+
uint16?: undefined;
|
|
227
|
+
uint160?: undefined;
|
|
228
|
+
uint168?: undefined;
|
|
229
|
+
uint176?: undefined;
|
|
230
|
+
uint184?: undefined;
|
|
231
|
+
uint192?: undefined;
|
|
232
|
+
uint200?: undefined;
|
|
233
|
+
uint208?: undefined;
|
|
234
|
+
uint216?: undefined;
|
|
235
|
+
uint224?: undefined;
|
|
236
|
+
uint232?: undefined;
|
|
237
|
+
uint24?: undefined;
|
|
238
|
+
uint240?: undefined;
|
|
239
|
+
uint248?: undefined;
|
|
240
|
+
uint256?: undefined;
|
|
241
|
+
uint32?: undefined;
|
|
242
|
+
uint40?: undefined;
|
|
243
|
+
uint48?: undefined;
|
|
244
|
+
uint56?: undefined;
|
|
245
|
+
uint64?: undefined;
|
|
246
|
+
uint72?: undefined;
|
|
247
|
+
uint8?: undefined;
|
|
248
|
+
uint80?: undefined;
|
|
249
|
+
uint88?: undefined;
|
|
250
|
+
uint96?: undefined;
|
|
251
|
+
}, primaryType extends "EIP712Domain" | keyof typedData = keyof typedData>(parameters: import("viem").TypedDataDefinition<typedData, primaryType>) => Promise<`0x${string}`>;
|
|
252
|
+
publicKey: `0x${string}`;
|
|
43
253
|
source: "privateKey";
|
|
44
254
|
type: "local";
|
|
45
255
|
};
|
|
@@ -52,18 +262,18 @@ export declare class P2PNetworkTest {
|
|
|
52
262
|
validators: Operator[];
|
|
53
263
|
deployedAccounts: InitialAccountData[];
|
|
54
264
|
prefilledPublicData: PublicDataTreeLeaf[];
|
|
55
|
-
wallet?:
|
|
265
|
+
wallet?: TestWallet;
|
|
56
266
|
defaultAccountAddress?: AztecAddress;
|
|
57
267
|
spamContract?: SpamContract;
|
|
58
268
|
bootstrapNode?: BootstrapNode;
|
|
59
|
-
constructor(testName: string, bootstrapNodeEnr: string, bootNodePort: number, numberOfValidators: number, initialValidatorConfig:
|
|
60
|
-
static create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode, mockZkPassportVerifier
|
|
269
|
+
constructor(testName: string, bootstrapNodeEnr: string, bootNodePort: number, numberOfValidators: number, initialValidatorConfig: SetupOptions, numberOfNodes?: number, metricsPort?: number | undefined, startProverNode?: boolean, mockZkPassportVerifier?: boolean);
|
|
270
|
+
static create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode, mockZkPassportVerifier }: {
|
|
61
271
|
testName: string;
|
|
62
272
|
numberOfNodes: number;
|
|
63
273
|
numberOfValidators: number;
|
|
64
274
|
basePort?: number;
|
|
65
275
|
metricsPort?: number;
|
|
66
|
-
initialConfig?:
|
|
276
|
+
initialConfig?: SetupOptions;
|
|
67
277
|
startProverNode?: boolean;
|
|
68
278
|
mockZkPassportVerifier?: boolean;
|
|
69
279
|
}): Promise<P2PNetworkTest>;
|
|
@@ -78,11 +288,22 @@ export declare class P2PNetworkTest {
|
|
|
78
288
|
removeInitialNode(): Promise<void>;
|
|
79
289
|
sendDummyTx(): Promise<{
|
|
80
290
|
receipt: import("viem").TransactionReceipt;
|
|
81
|
-
|
|
291
|
+
state: import("@aztec/ethereum/l1-tx-utils").L1TxState;
|
|
82
292
|
}>;
|
|
83
293
|
private _sendDummyTx;
|
|
84
294
|
setup(): Promise<void>;
|
|
85
295
|
stopNodes(nodes: AztecNodeService[]): Promise<void>;
|
|
296
|
+
/**
|
|
297
|
+
* Wait for P2P mesh to be fully formed across all nodes.
|
|
298
|
+
* This ensures that all nodes are connected to each other before proceeding,
|
|
299
|
+
* preventing race conditions where validators propose blocks before the network is ready.
|
|
300
|
+
*
|
|
301
|
+
* @param nodes - Array of nodes to check for P2P connectivity
|
|
302
|
+
* @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
|
|
303
|
+
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
304
|
+
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
305
|
+
*/
|
|
306
|
+
waitForP2PMeshConnectivity(nodes: AztecNodeService[], expectedNodeCount?: number, timeoutSeconds?: number, checkIntervalSeconds?: number): Promise<void>;
|
|
86
307
|
teardown(): Promise<void>;
|
|
87
308
|
getContracts(): Promise<{
|
|
88
309
|
rollup: RollupContract;
|
|
@@ -91,4 +312,4 @@ export declare class P2PNetworkTest {
|
|
|
91
312
|
slashFactory: SlashFactoryContract;
|
|
92
313
|
}>;
|
|
93
314
|
}
|
|
94
|
-
//# sourceMappingURL=
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCxLQUFLLDhCQUE4QixFQUVuQyxjQUFjLEVBQ2QsS0FBSyw2QkFBNkIsRUFDbkMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUlwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUEyQixNQUFNLE1BQU0sQ0FBQztBQVEzRSxPQUFPLEVBRUwsS0FBSyxpQkFBaUIsRUFHdkIsTUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
4
|
+
import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contracts';
|
|
6
|
+
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
7
|
+
import { createL1TxUtilsFromViemWallet } from '@aztec/ethereum/l1-tx-utils';
|
|
4
8
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
9
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
5
10
|
import { SecretValue } from '@aztec/foundation/config';
|
|
6
11
|
import { createLogger } from '@aztec/foundation/log';
|
|
12
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
7
13
|
import { RollupAbi, SlasherAbi, TestERC20Abi } from '@aztec/l1-artifacts';
|
|
8
14
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
9
15
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
@@ -28,6 +34,7 @@ export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
|
28
34
|
aztecProofSubmissionWindow: 640
|
|
29
35
|
};
|
|
30
36
|
export class P2PNetworkTest {
|
|
37
|
+
testName;
|
|
31
38
|
bootstrapNodeEnr;
|
|
32
39
|
bootNodePort;
|
|
33
40
|
numberOfValidators;
|
|
@@ -52,6 +59,7 @@ export class P2PNetworkTest {
|
|
|
52
59
|
bootstrapNode;
|
|
53
60
|
constructor(testName, bootstrapNodeEnr, bootNodePort, numberOfValidators, initialValidatorConfig, numberOfNodes = 0, // If set enable metrics collection
|
|
54
61
|
metricsPort, startProverNode, mockZkPassportVerifier){
|
|
62
|
+
this.testName = testName;
|
|
55
63
|
this.bootstrapNodeEnr = bootstrapNodeEnr;
|
|
56
64
|
this.bootNodePort = bootNodePort;
|
|
57
65
|
this.numberOfValidators = numberOfValidators;
|
|
@@ -115,7 +123,7 @@ export class P2PNetworkTest {
|
|
|
115
123
|
}
|
|
116
124
|
async addBootstrapNode() {
|
|
117
125
|
await this.snapshotManager.snapshot('add-bootstrap-node', async ({ aztecNodeConfig })=>{
|
|
118
|
-
const telemetry = getEndToEndTestTelemetryClient(this.metricsPort);
|
|
126
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
119
127
|
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(BOOTSTRAP_NODE_PRIVATE_KEY, this.bootNodePort, telemetry, aztecNodeConfig);
|
|
120
128
|
// Overwrite enr with updated info
|
|
121
129
|
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
@@ -139,7 +147,7 @@ export class P2PNetworkTest {
|
|
|
139
147
|
}
|
|
140
148
|
async applyBaseSnapshots() {
|
|
141
149
|
await this.addBootstrapNode();
|
|
142
|
-
await this.snapshotManager.snapshot('add-validators', async ({ deployL1ContractsValues,
|
|
150
|
+
await this.snapshotManager.snapshot('add-validators', async ({ deployL1ContractsValues, cheatCodes })=>{
|
|
143
151
|
const rollup = getContract({
|
|
144
152
|
address: deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
145
153
|
abi: RollupAbi,
|
|
@@ -160,7 +168,7 @@ export class P2PNetworkTest {
|
|
|
160
168
|
abi: MultiAdderArtifact.contractAbi,
|
|
161
169
|
client: deployL1ContractsValues.l1Client
|
|
162
170
|
});
|
|
163
|
-
const stakeNeeded =
|
|
171
|
+
const stakeNeeded = await rollup.read.getActivationThreshold() * BigInt(this.numberOfValidators);
|
|
164
172
|
await Promise.all([
|
|
165
173
|
await stakingAsset.write.mint([
|
|
166
174
|
multiAdder.address,
|
|
@@ -190,22 +198,17 @@ export class P2PNetworkTest {
|
|
|
190
198
|
validatorTuples
|
|
191
199
|
])
|
|
192
200
|
});
|
|
193
|
-
|
|
194
|
-
updateDateProvider: dateProvider
|
|
195
|
-
});
|
|
201
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
|
|
196
202
|
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
197
203
|
await this._sendDummyTx(deployL1ContractsValues.l1Client);
|
|
198
|
-
// Set the system time in the node, only after we have warped the time and waited for a block
|
|
199
|
-
// Time is only set in the NEXT block
|
|
200
|
-
dateProvider.setTime(Number(timestamp) * 1000);
|
|
201
204
|
});
|
|
202
205
|
}
|
|
203
206
|
async setupAccount() {
|
|
204
|
-
await this.snapshotManager.snapshot('setup-account', deployAccounts(1, this.logger
|
|
207
|
+
await this.snapshotManager.snapshot('setup-account', deployAccounts(1, this.logger), ({ deployedAccounts }, { wallet })=>{
|
|
205
208
|
this.deployedAccounts = deployedAccounts;
|
|
206
|
-
|
|
207
|
-
this.wallet =
|
|
208
|
-
|
|
209
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
210
|
+
this.wallet = wallet;
|
|
211
|
+
return Promise.resolve();
|
|
209
212
|
});
|
|
210
213
|
}
|
|
211
214
|
async deploySpamContract() {
|
|
@@ -219,11 +222,12 @@ export class P2PNetworkTest {
|
|
|
219
222
|
return {
|
|
220
223
|
contractAddress: spamContract.address
|
|
221
224
|
};
|
|
222
|
-
},
|
|
225
|
+
}, ({ contractAddress })=>{
|
|
223
226
|
if (!this.wallet) {
|
|
224
227
|
throw new Error('Call snapshot t.setupAccount before deploying account contract');
|
|
225
228
|
}
|
|
226
|
-
this.spamContract =
|
|
229
|
+
this.spamContract = SpamContract.at(contractAddress, this.wallet);
|
|
230
|
+
return Promise.resolve();
|
|
227
231
|
});
|
|
228
232
|
}
|
|
229
233
|
async removeInitialNode() {
|
|
@@ -269,6 +273,29 @@ export class P2PNetworkTest {
|
|
|
269
273
|
await Promise.all(nodes.map((node)=>node.stop()));
|
|
270
274
|
this.logger.info('Nodes stopped');
|
|
271
275
|
}
|
|
276
|
+
/**
|
|
277
|
+
* Wait for P2P mesh to be fully formed across all nodes.
|
|
278
|
+
* This ensures that all nodes are connected to each other before proceeding,
|
|
279
|
+
* preventing race conditions where validators propose blocks before the network is ready.
|
|
280
|
+
*
|
|
281
|
+
* @param nodes - Array of nodes to check for P2P connectivity
|
|
282
|
+
* @param expectedNodeCount - Expected number of nodes in the network (defaults to nodes.length)
|
|
283
|
+
* @param timeoutSeconds - Maximum time to wait for connections (default: 30 seconds)
|
|
284
|
+
* @param checkIntervalSeconds - How often to check connectivity (default: 0.1 seconds)
|
|
285
|
+
*/ async waitForP2PMeshConnectivity(nodes, expectedNodeCount, timeoutSeconds = 30, checkIntervalSeconds = 0.1) {
|
|
286
|
+
const nodeCount = expectedNodeCount ?? nodes.length;
|
|
287
|
+
const minPeerCount = nodeCount - 1;
|
|
288
|
+
this.logger.warn(`Waiting for all ${nodeCount} nodes to connect to P2P mesh (at least ${minPeerCount} peers each)...`);
|
|
289
|
+
await Promise.all(nodes.map(async (node, index)=>{
|
|
290
|
+
const p2p = node.getP2P();
|
|
291
|
+
await retryUntil(async ()=>{
|
|
292
|
+
const peers = await p2p.getPeers();
|
|
293
|
+
// Each node should be connected to at least N-1 other nodes
|
|
294
|
+
return peers.length >= minPeerCount ? true : undefined;
|
|
295
|
+
}, `Node ${index} to connect to at least ${minPeerCount} peers`, timeoutSeconds, checkIntervalSeconds);
|
|
296
|
+
}));
|
|
297
|
+
this.logger.warn('All nodes connected to P2P mesh');
|
|
298
|
+
}
|
|
272
299
|
async teardown() {
|
|
273
300
|
await this.monitor.stop();
|
|
274
301
|
await tryStop(this.bootstrapNode, this.logger);
|
|
@@ -280,7 +307,7 @@ export class P2PNetworkTest {
|
|
|
280
307
|
}
|
|
281
308
|
const rollup = new RollupContract(this.ctx.deployL1ContractsValues.l1Client, this.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
|
|
282
309
|
const slasherContract = getContract({
|
|
283
|
-
address: getAddress(await rollup.
|
|
310
|
+
address: getAddress(await rollup.getSlasherAddress()),
|
|
284
311
|
abi: SlasherAbi,
|
|
285
312
|
client: this.ctx.deployL1ContractsValues.l1Client
|
|
286
313
|
});
|
package/dest/e2e_p2p/shared.d.ts
CHANGED
|
@@ -1,39 +1,37 @@
|
|
|
1
1
|
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
3
|
-
import { AztecAddress
|
|
3
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
+
import { type SentTx } from '@aztec/aztec.js/contracts';
|
|
5
|
+
import type { Logger } from '@aztec/aztec.js/log';
|
|
6
|
+
import { Tx } from '@aztec/aztec.js/tx';
|
|
4
7
|
import type { RollupCheatCodes } from '@aztec/aztec/testing';
|
|
5
|
-
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum';
|
|
6
|
-
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
8
|
+
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
7
9
|
import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
8
|
-
import { PXEService } from '@aztec/pxe/server';
|
|
9
10
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
10
11
|
import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
11
|
-
import type { NodeContext } from '../fixtures/setup_p2p_test.js';
|
|
12
12
|
export declare const submitComplexTxsTo: (logger: Logger, from: AztecAddress, spamContract: SpamContract, numTxs: number, opts?: {
|
|
13
|
-
callPublic?: boolean;
|
|
13
|
+
callPublic?: boolean | undefined;
|
|
14
14
|
}) => Promise<SentTx[]>;
|
|
15
|
-
export declare const
|
|
16
|
-
export declare function
|
|
17
|
-
pxeService: PXEService;
|
|
18
|
-
txs: ProvenTx[];
|
|
19
|
-
node: AztecNodeService;
|
|
20
|
-
}>;
|
|
15
|
+
export declare const submitTransactions: (logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData) => Promise<SentTx[]>;
|
|
16
|
+
export declare function prepareTransactions(logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData): Promise<Tx[]>;
|
|
21
17
|
export declare function awaitProposalExecution(slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract, timeoutSeconds: number, logger: Logger): Promise<bigint>;
|
|
22
|
-
export declare function awaitCommitteeExists({ rollup, logger
|
|
18
|
+
export declare function awaitCommitteeExists({ rollup, logger }: {
|
|
23
19
|
rollup: RollupContract;
|
|
24
20
|
logger: Logger;
|
|
25
21
|
}): Promise<readonly `0x${string}`[]>;
|
|
26
|
-
export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, }: {
|
|
22
|
+
export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds }: {
|
|
27
23
|
nodeAdmin: AztecNodeAdmin;
|
|
28
24
|
logger: Logger;
|
|
29
25
|
slashingRoundSize: number;
|
|
30
26
|
epochDuration: number;
|
|
27
|
+
waitUntilOffenseCount?: number;
|
|
28
|
+
timeoutSeconds?: number;
|
|
31
29
|
}): Promise<import("@aztec/slasher").Offense[]>;
|
|
32
30
|
/**
|
|
33
31
|
* Await the committee to be slashed out of the validator set.
|
|
34
32
|
* Currently assumes that the committee is the same size as the validator set.
|
|
35
33
|
*/
|
|
36
|
-
export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration,
|
|
34
|
+
export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }: {
|
|
37
35
|
rollup: RollupContract;
|
|
38
36
|
cheatCodes: RollupCheatCodes;
|
|
39
37
|
committee: readonly `0x${string}`[];
|
|
@@ -41,7 +39,8 @@ export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, sl
|
|
|
41
39
|
slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
|
|
42
40
|
slashingRoundSize: number;
|
|
43
41
|
aztecSlotDuration: number;
|
|
44
|
-
|
|
42
|
+
aztecEpochDuration: number;
|
|
45
43
|
logger: Logger;
|
|
44
|
+
offenseEpoch: number;
|
|
46
45
|
}): Promise<void>;
|
|
47
|
-
//# sourceMappingURL=
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQThDLE1BQU0sMkJBQTJCLENBQUM7QUFFcEcsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEVBQUUsRUFBWSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1YsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCw2QkFBNkIsRUFDOUIsTUFBTSwyQkFBMkIsQ0FBQztBQUtuQyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUl2RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTXZFLGVBQU8sTUFBTSxrQkFBa0I7O3VCQTJCOUIsQ0FBQztBQUdGLGVBQU8sTUFBTSxrQkFBa0Isa0hBVzlCLENBQUM7QUFFRix3QkFBc0IsbUJBQW1CLENBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLGdCQUFnQixFQUN0QixNQUFNLEVBQUUsTUFBTSxFQUNkLGFBQWEsRUFBRSxrQkFBa0IsR0FDaEMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBcUJmO0FBRUQsd0JBQWdCLHNCQUFzQixDQUNwQyxnQkFBZ0IsRUFBRSw4QkFBOEIsR0FBRyw2QkFBNkIsRUFDaEYsY0FBYyxFQUFFLE1BQU0sRUFDdEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsTUFBTSxDQUFDLENBMEJqQjtBQUVELHdCQUFzQixvQkFBb0IsQ0FBQyxFQUN6QyxNQUFNLEVBQ04sTUFBTSxFQUNQLEVBQUU7SUFDRCxNQUFNLEVBQUUsY0FBYyxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUM7Q0FDaEIsR0FBRyxPQUFPLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FZcEM7QUFFRCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixjQUFvQixFQUNyQixFQUFFO0lBQ0QsU0FBUyxFQUFFLGNBQWMsQ0FBQztJQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIscUJBQXFCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDL0IsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3pCLCtDQWtCQTtBQUVEOzs7R0FHRztBQUNILHdCQUFzQixvQkFBb0IsQ0FBQyxFQUN6QyxNQUFNLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixZQUFZLEVBQ2IsRUFBRTtJQUNELE1BQU0sRUFBRSxjQUFjLENBQUM7SUFDdkIsVUFBVSxFQUFFLGdCQUFnQixDQUFDO0lBQzdCLFNBQVMsRUFBRSxTQUFTLEtBQUssTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNwQyxZQUFZLEVBQUUsb0JBQW9CLENBQUM7SUFDbkMsZ0JBQWdCLEVBQUUsOEJBQThCLEdBQUcsNkJBQTZCLEdBQUcsU0FBUyxDQUFDO0lBQzdGLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixZQUFZLEVBQUUsTUFBTSxDQUFDO0NBQ3RCLGlCQTZFQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAA8C,MAAM,2BAA2B,CAAC;AAEpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAY,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACV,8BAA8B,EAC9B,cAAc,EACd,6BAA6B,EAC9B,MAAM,2BAA2B,CAAC;AAKnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAMvE,eAAO,MAAM,kBAAkB;;uBA2B9B,CAAC;AAGF,eAAO,MAAM,kBAAkB,kHAW9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC,EAAE,EAAE,CAAC,CAqBf;AAED,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,8BAA8B,GAAG,6BAA6B,EAChF,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,MAAM,EACP,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC,CAYpC;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,cAAoB,EACrB,EAAE;IACD,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,+CAkBA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,YAAY,EACb,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC;IACpC,YAAY,EAAE,oBAAoB,CAAC;IACnC,gBAAgB,EAAE,8BAA8B,GAAG,6BAA6B,GAAG,SAAS,CAAC;IAC7F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,iBA6EA"}
|