@aztec/end-to-end 0.0.1-commit.d3ec352c → 0.0.1-commit.f295ac2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bench/client_flows/benchmark.d.ts +3 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +21 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +14 -15
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +110 -138
- package/dest/bench/client_flows/data_extractor.js +3 -1
- package/dest/bench/utils.d.ts +6 -6
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +18 -11
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +98 -113
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -13
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +91 -71
- package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -3
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +18 -13
- package/dest/e2e_epochs/epochs_test.d.ts +3 -2
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +13 -11
- 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 +126 -141
- package/dest/e2e_l1_publisher/write_json.d.ts +3 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +19 -15
- 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 +32 -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 +6 -9
- package/dest/e2e_p2p/p2p_network.d.ts +13 -11
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +116 -111
- package/dest/e2e_p2p/shared.d.ts +2 -2
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +4 -4
- package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +90 -92
- package/dest/fixtures/e2e_prover_test.d.ts +10 -18
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +88 -103
- package/dest/fixtures/fixtures.d.ts +2 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +1 -2
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/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 +216 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +684 -0
- package/dest/fixtures/setup_p2p_test.js +3 -3
- package/dest/fixtures/utils.d.ts +5 -638
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -647
- package/dest/fixtures/web3signer.js +1 -1
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +16 -4
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +3 -3
- 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/index.d.ts +2 -2
- package/dest/shared/index.d.ts.map +1 -1
- 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 +43 -23
- 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 +1 -1
- package/dest/spartan/setup_test_wallets.d.ts +4 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +2 -1
- package/dest/spartan/tx_metrics.d.ts +42 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +118 -0
- package/dest/spartan/utils.d.ts +51 -12
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +262 -102
- package/package.json +40 -39
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +150 -200
- package/src/bench/client_flows/data_extractor.ts +1 -1
- package/src/bench/utils.ts +22 -14
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +107 -142
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -125
- package/src/e2e_deploy_contract/deploy_test.ts +21 -14
- package/src/e2e_epochs/epochs_test.ts +26 -13
- package/src/e2e_fees/bridging_race.notest.ts +3 -6
- package/src/e2e_fees/fees_test.ts +177 -216
- package/src/e2e_l1_publisher/write_json.ts +22 -17
- 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 +9 -12
- package/src/e2e_p2p/p2p_network.ts +174 -183
- package/src/e2e_p2p/shared.ts +11 -6
- package/src/e2e_token_contract/token_contract_test.ts +105 -118
- package/src/fixtures/e2e_prover_test.ts +112 -144
- package/src/fixtures/fixtures.ts +1 -3
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup.ts +1010 -0
- package/src/fixtures/setup_p2p_test.ts +3 -3
- package/src/fixtures/utils.ts +27 -966
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +6 -10
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/index.ts +1 -1
- package/src/shared/uniswap_l1_l2.ts +53 -67
- package/src/simulators/lending_simulator.ts +2 -2
- package/src/spartan/setup_test_wallets.ts +9 -2
- package/src/spartan/tx_metrics.ts +153 -0
- package/src/spartan/utils.ts +308 -45
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
|
@@ -17,7 +17,7 @@ const AZTEC_SLOT_DURATION = ETHEREUM_SLOT_DURATION * 2;
|
|
|
17
17
|
const SLASHING_UNIT = BigInt(1e18);
|
|
18
18
|
const SLASHING_AMOUNT = SLASHING_UNIT * 3n;
|
|
19
19
|
// How many epochs it may take to set everything up, so we dont slash during this period
|
|
20
|
-
const SETUP_EPOCH_DURATION =
|
|
20
|
+
const SETUP_EPOCH_DURATION = 8;
|
|
21
21
|
export class P2PInactivityTest {
|
|
22
22
|
test;
|
|
23
23
|
nodes;
|
|
@@ -67,8 +67,8 @@ export class P2PInactivityTest {
|
|
|
67
67
|
return new P2PInactivityTest(test, opts);
|
|
68
68
|
}
|
|
69
69
|
async setup() {
|
|
70
|
-
await this.test.applyBaseSnapshots();
|
|
71
70
|
await this.test.setup();
|
|
71
|
+
await this.test.applyBaseSetup();
|
|
72
72
|
// Set slashing penalties for inactivity
|
|
73
73
|
const { rollup } = await this.test.getContracts();
|
|
74
74
|
const [activationThreshold, ejectionThreshold, localEjectionThreshold] = await Promise.all([
|
|
@@ -81,7 +81,7 @@ export class P2PInactivityTest {
|
|
|
81
81
|
this.test.ctx.aztecNodeConfig.slashInactivityPenalty = SLASHING_AMOUNT;
|
|
82
82
|
this.rollup = rollup;
|
|
83
83
|
if (!this.keepInitialNode) {
|
|
84
|
-
await this.test.ctx.
|
|
84
|
+
await this.test.ctx.aztecNodeService.stop();
|
|
85
85
|
}
|
|
86
86
|
// Create all active nodes
|
|
87
87
|
this.activeNodes = await createNodes(this.test.ctx.aztecNodeConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode), BOOT_NODE_UDP_PORT, this.test.prefilledPublicData, this.dataDir, undefined, Number(this.keepInitialNode));
|
|
@@ -93,7 +93,7 @@ export class P2PInactivityTest {
|
|
|
93
93
|
this.inactiveNodes = await createNodes(inactiveConfig, this.test.ctx.dateProvider, this.test.bootstrapNodeEnr, this.inactiveNodeCount, BOOT_NODE_UDP_PORT, this.test.prefilledPublicData, this.dataDir, undefined, NUM_NODES - this.inactiveNodeCount);
|
|
94
94
|
this.nodes = [
|
|
95
95
|
...this.keepInitialNode ? [
|
|
96
|
-
this.test.ctx.
|
|
96
|
+
this.test.ctx.aztecNodeService
|
|
97
97
|
] : [],
|
|
98
98
|
...this.activeNodes,
|
|
99
99
|
...this.inactiveNodes
|
|
@@ -109,11 +109,8 @@ export class P2PInactivityTest {
|
|
|
109
109
|
// Wait for P2P mesh to be fully formed before starting slashing period
|
|
110
110
|
// This prevents race conditions where validators propose blocks before the network is ready
|
|
111
111
|
await this.test.waitForP2PMeshConnectivity(this.nodes, NUM_NODES);
|
|
112
|
-
|
|
113
|
-
this.test.
|
|
114
|
-
await this.test.ctx.cheatCodes.rollup.advanceToEpoch(EpochNumber(SETUP_EPOCH_DURATION + 1), {
|
|
115
|
-
offset: -ethereumSlotDuration
|
|
116
|
-
});
|
|
112
|
+
this.test.logger.warn(`Advancing to epoch ${SETUP_EPOCH_DURATION - 1} (slashing will start after it is completed)`);
|
|
113
|
+
await this.test.ctx.cheatCodes.rollup.advanceToEpoch(EpochNumber(SETUP_EPOCH_DURATION - 1));
|
|
117
114
|
return this;
|
|
118
115
|
}
|
|
119
116
|
async teardown() {
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
-
import { type EmpireSlashingProposerContract,
|
|
4
|
+
import { type EmpireSlashingProposerContract, RollupContract, type TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
5
6
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
7
|
+
import type { ViemClient } from '@aztec/ethereum/types';
|
|
6
8
|
import { type Logger } from '@aztec/foundation/log';
|
|
7
9
|
import { SlasherAbi } from '@aztec/l1-artifacts';
|
|
8
10
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
@@ -11,8 +13,7 @@ import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
|
11
13
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
12
14
|
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
13
15
|
import { type GetContractReturnType } from 'viem';
|
|
14
|
-
import { type
|
|
15
|
-
import { type SetupOptions } from '../fixtures/utils.js';
|
|
16
|
+
import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
|
|
16
17
|
export declare const WAIT_FOR_TX_TIMEOUT: number;
|
|
17
18
|
export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
|
|
18
19
|
aztecSlotDuration: number;
|
|
@@ -26,7 +27,7 @@ export declare class P2PNetworkTest {
|
|
|
26
27
|
numberOfValidators: number;
|
|
27
28
|
numberOfNodes: number;
|
|
28
29
|
private metricsPort?;
|
|
29
|
-
|
|
30
|
+
context: EndToEndContext;
|
|
30
31
|
baseAccountPrivateKey: `0x${string}`;
|
|
31
32
|
baseAccount: {
|
|
32
33
|
address: `0x${string}`;
|
|
@@ -253,7 +254,7 @@ export declare class P2PNetworkTest {
|
|
|
253
254
|
};
|
|
254
255
|
logger: Logger;
|
|
255
256
|
monitor: ChainMonitor;
|
|
256
|
-
ctx:
|
|
257
|
+
ctx: EndToEndContext;
|
|
257
258
|
attesterPrivateKeys: `0x${string}`[];
|
|
258
259
|
attesterPublicKeys: string[];
|
|
259
260
|
peerIdPrivateKeys: string[];
|
|
@@ -264,8 +265,10 @@ export declare class P2PNetworkTest {
|
|
|
264
265
|
defaultAccountAddress?: AztecAddress;
|
|
265
266
|
spamContract?: SpamContract;
|
|
266
267
|
bootstrapNode?: BootstrapNode;
|
|
267
|
-
|
|
268
|
-
|
|
268
|
+
private setupOptions;
|
|
269
|
+
private deployL1ContractsArgs;
|
|
270
|
+
constructor(testName: string, bootstrapNodeEnr: string, bootNodePort: number, numberOfValidators: number, initialValidatorConfig: SetupOptions, numberOfNodes?: number, metricsPort?: number | undefined, startProverNode?: boolean);
|
|
271
|
+
static create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }: {
|
|
269
272
|
testName: string;
|
|
270
273
|
numberOfNodes: number;
|
|
271
274
|
numberOfValidators: number;
|
|
@@ -273,20 +276,19 @@ export declare class P2PNetworkTest {
|
|
|
273
276
|
metricsPort?: number;
|
|
274
277
|
initialConfig?: SetupOptions;
|
|
275
278
|
startProverNode?: boolean;
|
|
276
|
-
mockZkPassportVerifier?: boolean;
|
|
277
279
|
}): Promise<P2PNetworkTest>;
|
|
278
280
|
get fundedAccount(): InitialAccountData;
|
|
279
281
|
addBootstrapNode(): Promise<void>;
|
|
280
282
|
getValidators(): {
|
|
281
283
|
validators: Operator[];
|
|
282
284
|
};
|
|
283
|
-
|
|
285
|
+
applyBaseSetup(): Promise<void>;
|
|
284
286
|
setupAccount(): Promise<void>;
|
|
285
287
|
deploySpamContract(): Promise<void>;
|
|
286
288
|
removeInitialNode(): Promise<void>;
|
|
287
289
|
sendDummyTx(): Promise<{
|
|
288
290
|
receipt: import("viem").TransactionReceipt;
|
|
289
|
-
state: import("@aztec/ethereum").L1TxState;
|
|
291
|
+
state: import("@aztec/ethereum/l1-tx-utils").L1TxState;
|
|
290
292
|
}>;
|
|
291
293
|
private _sendDummyTx;
|
|
292
294
|
setup(): Promise<void>;
|
|
@@ -310,4 +312,4 @@ export declare class P2PNetworkTest {
|
|
|
310
312
|
slashFactory: SlashFactoryContract;
|
|
311
313
|
}>;
|
|
312
314
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCxLQUFLLDhCQUE4QixFQUVuQyxjQUFjLEVBQ2QsS0FBSyw2QkFBNkIsRUFDbkMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUczRSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBQ3BCLEtBQUss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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAc,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
-
import {
|
|
3
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
4
|
+
import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
6
|
+
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
7
|
+
import { createL1TxUtilsFromViemWallet } from '@aztec/ethereum/l1-tx-utils';
|
|
4
8
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
5
9
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
6
10
|
import { SecretValue } from '@aztec/foundation/config';
|
|
@@ -16,9 +20,8 @@ import { getGenesisValues } from '@aztec/world-state/testing';
|
|
|
16
20
|
import getPort from 'get-port';
|
|
17
21
|
import { getAddress, getContract } from 'viem';
|
|
18
22
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
23
|
+
import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, setup, teardown } from '../fixtures/setup.js';
|
|
19
24
|
import { ATTESTER_PRIVATE_KEYS_START_INDEX, createValidatorConfig, generatePrivateKeys } from '../fixtures/setup_p2p_test.js';
|
|
20
|
-
import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
|
|
21
|
-
import { getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
22
25
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
23
26
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
24
27
|
const BOOTSTRAP_NODE_PRIVATE_KEY = '080212208f988fc0899e4a73a5aee4d271a5f20670603a756ad8d84f2c94263a6427c591';
|
|
@@ -36,7 +39,7 @@ export class P2PNetworkTest {
|
|
|
36
39
|
numberOfValidators;
|
|
37
40
|
numberOfNodes;
|
|
38
41
|
metricsPort;
|
|
39
|
-
|
|
42
|
+
context;
|
|
40
43
|
baseAccountPrivateKey;
|
|
41
44
|
baseAccount;
|
|
42
45
|
logger;
|
|
@@ -53,8 +56,11 @@ export class P2PNetworkTest {
|
|
|
53
56
|
defaultAccountAddress;
|
|
54
57
|
spamContract;
|
|
55
58
|
bootstrapNode;
|
|
59
|
+
// Store setup options for use in setup()
|
|
60
|
+
setupOptions;
|
|
61
|
+
deployL1ContractsArgs;
|
|
56
62
|
constructor(testName, bootstrapNodeEnr, bootNodePort, numberOfValidators, initialValidatorConfig, numberOfNodes = 0, // If set enable metrics collection
|
|
57
|
-
metricsPort, startProverNode
|
|
63
|
+
metricsPort, startProverNode){
|
|
58
64
|
this.testName = testName;
|
|
59
65
|
this.bootstrapNodeEnr = bootstrapNodeEnr;
|
|
60
66
|
this.bootNodePort = bootNodePort;
|
|
@@ -74,7 +80,8 @@ export class P2PNetworkTest {
|
|
|
74
80
|
this.attesterPrivateKeys = generatePrivateKeys(ATTESTER_PRIVATE_KEYS_START_INDEX + numberOfNodes, numberOfValidators);
|
|
75
81
|
this.attesterPublicKeys = this.attesterPrivateKeys.map((privateKey)=>privateKeyToAccount(privateKey).address);
|
|
76
82
|
const zkPassportParams = ZkPassportProofParams.random();
|
|
77
|
-
|
|
83
|
+
// Store setup options for later use
|
|
84
|
+
this.setupOptions = {
|
|
78
85
|
...initialValidatorConfig,
|
|
79
86
|
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
80
87
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
@@ -83,11 +90,11 @@ export class P2PNetworkTest {
|
|
|
83
90
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
84
91
|
slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
|
|
85
92
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
86
|
-
salt: 420,
|
|
87
93
|
metricsPort: metricsPort,
|
|
88
94
|
numberOfInitialFundedAccounts: 2,
|
|
89
95
|
startProverNode
|
|
90
|
-
}
|
|
96
|
+
};
|
|
97
|
+
this.deployL1ContractsArgs = {
|
|
91
98
|
...initialValidatorConfig,
|
|
92
99
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
93
100
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
@@ -98,32 +105,30 @@ export class P2PNetworkTest {
|
|
|
98
105
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
99
106
|
initialValidators: [],
|
|
100
107
|
zkPassportArgs: {
|
|
101
|
-
mockZkPassportVerifier,
|
|
102
108
|
zkPassportDomain: zkPassportParams.domain,
|
|
103
109
|
zkPassportScope: zkPassportParams.scope
|
|
104
110
|
}
|
|
105
|
-
}
|
|
111
|
+
};
|
|
106
112
|
}
|
|
107
|
-
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode
|
|
113
|
+
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }) {
|
|
108
114
|
const port = basePort || await getPort();
|
|
109
115
|
const bootstrapNodeENR = await getBootstrapNodeEnr(BOOTSTRAP_NODE_PRIVATE_KEY, port);
|
|
110
116
|
const bootstrapNodeEnr = bootstrapNodeENR.encodeTxt();
|
|
111
117
|
const initialValidatorConfig = await createValidatorConfig(initialConfig ?? {}, bootstrapNodeEnr);
|
|
112
|
-
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode
|
|
118
|
+
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode);
|
|
113
119
|
}
|
|
114
120
|
get fundedAccount() {
|
|
115
121
|
if (!this.deployedAccounts[0]) {
|
|
116
|
-
throw new Error('Call
|
|
122
|
+
throw new Error('Call setupAccount to create a funded account.');
|
|
117
123
|
}
|
|
118
124
|
return this.deployedAccounts[0];
|
|
119
125
|
}
|
|
120
126
|
async addBootstrapNode() {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
});
|
|
127
|
+
this.logger.info('Adding bootstrap node');
|
|
128
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
129
|
+
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(BOOTSTRAP_NODE_PRIVATE_KEY, this.bootNodePort, telemetry, this.context.config);
|
|
130
|
+
// Overwrite enr with updated info
|
|
131
|
+
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
127
132
|
}
|
|
128
133
|
getValidators() {
|
|
129
134
|
const validators = [];
|
|
@@ -141,101 +146,92 @@ export class P2PNetworkTest {
|
|
|
141
146
|
validators
|
|
142
147
|
};
|
|
143
148
|
}
|
|
144
|
-
async
|
|
149
|
+
async applyBaseSetup() {
|
|
145
150
|
await this.addBootstrapNode();
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
};
|
|
151
|
+
this.logger.info('Adding validators');
|
|
152
|
+
const rollup = getContract({
|
|
153
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
154
|
+
abi: RollupAbi,
|
|
155
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
156
|
+
});
|
|
157
|
+
this.logger.info(`Adding ${this.numberOfValidators} validators`);
|
|
158
|
+
const stakingAsset = getContract({
|
|
159
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
160
|
+
abi: TestERC20Abi,
|
|
161
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
162
|
+
});
|
|
163
|
+
const { address: multiAdderAddress } = await deployL1Contract(this.context.deployL1ContractsValues.l1Client, MultiAdderArtifact.contractAbi, MultiAdderArtifact.contractBytecode, [
|
|
164
|
+
rollup.address,
|
|
165
|
+
this.context.deployL1ContractsValues.l1Client.account.address
|
|
166
|
+
]);
|
|
167
|
+
const multiAdder = getContract({
|
|
168
|
+
address: multiAdderAddress.toString(),
|
|
169
|
+
abi: MultiAdderArtifact.contractAbi,
|
|
170
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
171
|
+
});
|
|
172
|
+
const stakeNeeded = await rollup.read.getActivationThreshold() * BigInt(this.numberOfValidators);
|
|
173
|
+
await Promise.all([
|
|
174
|
+
await stakingAsset.write.mint([
|
|
175
|
+
multiAdder.address,
|
|
176
|
+
stakeNeeded
|
|
177
|
+
], {})
|
|
178
|
+
].map((txHash)=>this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
179
|
+
hash: txHash
|
|
180
|
+
})));
|
|
181
|
+
const { validators } = this.getValidators();
|
|
182
|
+
this.validators = validators;
|
|
183
|
+
const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress;
|
|
184
|
+
if (!gseAddress) {
|
|
185
|
+
throw new Error('GSE contract not deployed');
|
|
186
|
+
}
|
|
187
|
+
const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
188
|
+
const makeValidatorTuples = async (validator)=>{
|
|
189
|
+
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
190
|
+
return {
|
|
191
|
+
attester: validator.attester.toString(),
|
|
192
|
+
withdrawer: validator.withdrawer.toString(),
|
|
193
|
+
...registrationTuple
|
|
190
194
|
};
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
await cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
|
|
198
|
-
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
199
|
-
await this._sendDummyTx(deployL1ContractsValues.l1Client);
|
|
195
|
+
};
|
|
196
|
+
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
197
|
+
await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
198
|
+
hash: await multiAdder.write.addValidators([
|
|
199
|
+
validatorTuples
|
|
200
|
+
])
|
|
200
201
|
});
|
|
202
|
+
await this.context.cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await this.context.cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
|
|
203
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
204
|
+
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
201
205
|
}
|
|
202
206
|
async setupAccount() {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
this.
|
|
207
|
-
return Promise.resolve();
|
|
207
|
+
this.logger.info('Setting up account');
|
|
208
|
+
const { deployedAccounts } = await deployAccounts(1, this.logger)({
|
|
209
|
+
wallet: this.context.wallet,
|
|
210
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
208
211
|
});
|
|
212
|
+
this.deployedAccounts = deployedAccounts;
|
|
213
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
214
|
+
this.wallet = this.context.wallet;
|
|
209
215
|
}
|
|
210
216
|
async deploySpamContract() {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
contractAddress: spamContract.address
|
|
220
|
-
};
|
|
221
|
-
}, ({ contractAddress })=>{
|
|
222
|
-
if (!this.wallet) {
|
|
223
|
-
throw new Error('Call snapshot t.setupAccount before deploying account contract');
|
|
224
|
-
}
|
|
225
|
-
this.spamContract = SpamContract.at(contractAddress, this.wallet);
|
|
226
|
-
return Promise.resolve();
|
|
227
|
-
});
|
|
217
|
+
this.logger.info('Deploying spam contract');
|
|
218
|
+
if (!this.wallet) {
|
|
219
|
+
throw new Error('Call setupAccount before deploying spam contract');
|
|
220
|
+
}
|
|
221
|
+
const spamContract = await SpamContract.deploy(this.wallet).send({
|
|
222
|
+
from: this.defaultAccountAddress
|
|
223
|
+
}).deployed();
|
|
224
|
+
this.spamContract = spamContract;
|
|
228
225
|
}
|
|
229
226
|
async removeInitialNode() {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
});
|
|
236
|
-
dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
237
|
-
await aztecNode.stop();
|
|
227
|
+
this.logger.info('Removing initial node');
|
|
228
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
229
|
+
const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
230
|
+
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
231
|
+
blockNumber: receipt.blockNumber
|
|
238
232
|
});
|
|
233
|
+
this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
234
|
+
await this.context.aztecNodeService.stop();
|
|
239
235
|
}
|
|
240
236
|
async sendDummyTx() {
|
|
241
237
|
return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
|
|
@@ -248,17 +244,26 @@ export class P2PNetworkTest {
|
|
|
248
244
|
});
|
|
249
245
|
}
|
|
250
246
|
async setup() {
|
|
251
|
-
this.
|
|
247
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
248
|
+
this.context = await setup(0, {
|
|
249
|
+
...this.setupOptions,
|
|
250
|
+
fundSponsoredFPC: true,
|
|
251
|
+
skipAccountDeployment: true,
|
|
252
|
+
slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
|
|
253
|
+
aztecTargetCommitteeSize: 0,
|
|
254
|
+
l1ContractsArgs: this.deployL1ContractsArgs
|
|
255
|
+
});
|
|
256
|
+
this.ctx = this.context;
|
|
252
257
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
253
258
|
const initialFundedAccounts = [
|
|
254
|
-
...this.
|
|
259
|
+
...this.context.initialFundedAccounts.map((a)=>a.address),
|
|
255
260
|
sponsoredFPCAddress
|
|
256
261
|
];
|
|
257
262
|
const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
|
|
258
263
|
this.prefilledPublicData = prefilledPublicData;
|
|
259
|
-
const rollupContract = RollupContract.getFromL1ContractsValues(this.
|
|
260
|
-
this.monitor = new ChainMonitor(rollupContract, this.
|
|
261
|
-
this.monitor.on('l1-block', ({ timestamp })=>this.
|
|
264
|
+
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
265
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
266
|
+
this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
262
267
|
}
|
|
263
268
|
async stopNodes(nodes) {
|
|
264
269
|
this.logger.info('Stopping nodes');
|
|
@@ -295,15 +300,15 @@ export class P2PNetworkTest {
|
|
|
295
300
|
async teardown() {
|
|
296
301
|
await this.monitor.stop();
|
|
297
302
|
await tryStop(this.bootstrapNode, this.logger);
|
|
298
|
-
await this.
|
|
303
|
+
await teardown(this.context);
|
|
299
304
|
}
|
|
300
305
|
async getContracts() {
|
|
301
306
|
if (!this.ctx.deployL1ContractsValues) {
|
|
302
|
-
throw new Error('
|
|
307
|
+
throw new Error('DeployAztecL1ContractsValues not set');
|
|
303
308
|
}
|
|
304
309
|
const rollup = new RollupContract(this.ctx.deployL1ContractsValues.l1Client, this.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
|
|
305
310
|
const slasherContract = getContract({
|
|
306
|
-
address: getAddress(await rollup.getSlasherAddress()),
|
|
311
|
+
address: getAddress((await rollup.getSlasherAddress()).toString()),
|
|
307
312
|
abi: SlasherAbi,
|
|
308
313
|
client: this.ctx.deployL1ContractsValues.l1Client
|
|
309
314
|
});
|
package/dest/e2e_p2p/shared.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { type SentTx } from '@aztec/aztec.js/contracts';
|
|
|
5
5
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
6
6
|
import { Tx } from '@aztec/aztec.js/tx';
|
|
7
7
|
import type { RollupCheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum';
|
|
8
|
+
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
9
9
|
import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
10
10
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
11
11
|
import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
@@ -43,4 +43,4 @@ export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, sl
|
|
|
43
43
|
logger: Logger;
|
|
44
44
|
offenseEpoch: number;
|
|
45
45
|
}): Promise<void>;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQThDLE1BQU0sMkJBQTJCLENBQUM7QUFFcEcsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEVBQUUsRUFBWSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1YsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCw2QkFBNkIsRUFDOUIsTUFBTSwyQkFBMkIsQ0FBQztBQU1uQyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUl2RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTXZFLGVBQU8sTUFBTSxrQkFBa0I7O3VCQTJCOUIsQ0FBQztBQUdGLGVBQU8sTUFBTSxrQkFBa0Isa0hBVzlCLENBQUM7QUFFRix3QkFBc0IsbUJBQW1CLENBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLGdCQUFnQixFQUN0QixNQUFNLEVBQUUsTUFBTSxFQUNkLGFBQWEsRUFBRSxrQkFBa0IsR0FDaEMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBcUJmO0FBRUQsd0JBQWdCLHNCQUFzQixDQUNwQyxnQkFBZ0IsRUFBRSw4QkFBOEIsR0FBRyw2QkFBNkIsRUFDaEYsY0FBYyxFQUFFLE1BQU0sRUFDdEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsTUFBTSxDQUFDLENBMEJqQjtBQUVELHdCQUFzQixvQkFBb0IsQ0FBQyxFQUN6QyxNQUFNLEVBQ04sTUFBTSxFQUNQLEVBQUU7SUFDRCxNQUFNLEVBQUUsY0FBYyxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUM7Q0FDaEIsR0FBRyxPQUFPLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FZcEM7QUFFRCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixjQUFvQixFQUNyQixFQUFFO0lBQ0QsU0FBUyxFQUFFLGNBQWMsQ0FBQztJQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIscUJBQXFCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDL0IsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3pCLCtDQWtCQTtBQUVEOzs7R0FHRztBQUNILHdCQUFzQixvQkFBb0IsQ0FBQyxFQUN6QyxNQUFNLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixZQUFZLEVBQ2IsRUFBRTtJQUNELE1BQU0sRUFBRSxjQUFjLENBQUM7SUFDdkIsVUFBVSxFQUFFLGdCQUFnQixDQUFDO0lBQzdCLFNBQVMsRUFBRSxTQUFTLEtBQUssTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNwQyxZQUFZLEVBQUUsb0JBQW9CLENBQUM7SUFDbkMsZ0JBQWdCLEVBQUUsOEJBQThCLEdBQUcsNkJBQTZCLEdBQUcsU0FBUyxDQUFDO0lBQzdGLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixZQUFZLEVBQUUsTUFBTSxDQUFDO0NBQ3RCLGlCQTZFQSJ9
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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;AAMnC,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"}
|
package/dest/e2e_p2p/shared.js
CHANGED
|
@@ -101,7 +101,7 @@ export async function awaitCommitteeExists({ rollup, logger }) {
|
|
|
101
101
|
committee = await rollup.getCurrentEpochCommittee();
|
|
102
102
|
return committee && committee.length > 0;
|
|
103
103
|
}, 'non-empty committee', 60);
|
|
104
|
-
return committee;
|
|
104
|
+
return committee.map((c)=>c.toString());
|
|
105
105
|
}
|
|
106
106
|
export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds = 120 }) {
|
|
107
107
|
const targetOffenseCount = waitUntilOffenseCount ?? 1;
|
|
@@ -130,9 +130,9 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
130
130
|
await cheatCodes.debugRollup();
|
|
131
131
|
if (slashingProposer.type === 'empire') {
|
|
132
132
|
// Await for the slash payload to be created if empire (no payload is created on tally until execution time)
|
|
133
|
-
const targetEpoch =
|
|
133
|
+
const targetEpoch = EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1);
|
|
134
134
|
logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
|
|
135
|
-
await cheatCodes.advanceToEpoch(
|
|
135
|
+
await cheatCodes.advanceToEpoch(targetEpoch);
|
|
136
136
|
const slashPayloadEvents = await retryUntil(async ()=>{
|
|
137
137
|
const events = await slashFactory.getSlashPayloadCreatedEvents();
|
|
138
138
|
return events.length > 0 ? events : undefined;
|
|
@@ -173,7 +173,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
173
173
|
}
|
|
174
174
|
logger.info(`Advancing to check current committee`);
|
|
175
175
|
await cheatCodes.debugRollup();
|
|
176
|
-
await cheatCodes.advanceToEpoch(EpochNumber
|
|
176
|
+
await cheatCodes.advanceToEpoch(EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1));
|
|
177
177
|
await cheatCodes.debugRollup();
|
|
178
178
|
const committeeNextEpoch = await rollup.getCurrentEpochCommittee();
|
|
179
179
|
// The committee should be undefined, since the validator set is empty
|
|
@@ -4,14 +4,15 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
4
4
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
5
|
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
6
6
|
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
7
|
-
import { type
|
|
7
|
+
import { type EndToEndContext } from '../fixtures/setup.js';
|
|
8
8
|
import { TokenSimulator } from '../simulators/token_simulator.js';
|
|
9
9
|
export declare class TokenContractTest {
|
|
10
10
|
static TOKEN_NAME: string;
|
|
11
11
|
static TOKEN_SYMBOL: string;
|
|
12
12
|
static TOKEN_DECIMALS: bigint;
|
|
13
|
-
|
|
13
|
+
context: EndToEndContext;
|
|
14
14
|
logger: Logger;
|
|
15
|
+
metricsPort?: number;
|
|
15
16
|
asset: TokenContract;
|
|
16
17
|
tokenSim: TokenSimulator;
|
|
17
18
|
node: AztecNode;
|
|
@@ -20,16 +21,22 @@ export declare class TokenContractTest {
|
|
|
20
21
|
adminAddress: AztecAddress;
|
|
21
22
|
account1Address: AztecAddress;
|
|
22
23
|
account2Address: AztecAddress;
|
|
24
|
+
private shouldApplyBaseSetup;
|
|
25
|
+
private shouldApplyMint;
|
|
23
26
|
constructor(testName: string);
|
|
24
27
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* 2. Publicly deploy accounts, deploy token contract and a "bad account".
|
|
28
|
+
* Registers that base setup should be applied during setup().
|
|
29
|
+
* Call this before setup() to deploy 3 accounts, publicly deploy accounts, token contract and a "bad account".
|
|
28
30
|
*/
|
|
29
|
-
applyBaseSnapshots():
|
|
31
|
+
applyBaseSnapshots(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Registers that mint should be applied during setup().
|
|
34
|
+
* Call this before setup() to mint tokens to the admin account.
|
|
35
|
+
*/
|
|
36
|
+
applyMintSnapshot(): void;
|
|
37
|
+
private applyBaseSetup;
|
|
30
38
|
setup(): Promise<void>;
|
|
31
|
-
snapshot: <T>(name: string, apply: (context: SubsystemsContext) => Promise<T>, restore?: (snapshotData: T, context: SubsystemsContext) => Promise<void>) => Promise<void>;
|
|
32
39
|
teardown(): Promise<void>;
|
|
33
|
-
|
|
40
|
+
private applyMint;
|
|
34
41
|
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV90b2tlbl9jb250cmFjdC90b2tlbl9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBeUQsTUFBTSxzQkFBc0IsQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJbEUscUJBQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixLQUFLLEVBQUcsYUFBYSxDQUFDO0lBQ3RCLFFBQVEsRUFBRyxjQUFjLENBQUM7SUFDMUIsSUFBSSxFQUFHLFNBQVMsQ0FBQztJQUVqQixVQUFVLEVBQUcsc0JBQXNCLENBQUM7SUFDcEMsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLGVBQWUsRUFBRyxZQUFZLENBQUM7SUFDL0IsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLGVBQWUsQ0FBUztJQUVoQyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBRzNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLFNBRWhCO1lBS2EsY0FBYztJQStDdEIsS0FBSyxrQkFjVjtJQUVLLFFBQVEsa0JBRWI7WUFFYSxTQUFTO0NBMkJ4QiJ9
|