@aztec/end-to-end 1.0.0-nightly.20250610 → 1.0.0-nightly.20250612

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.
@@ -234,7 +234,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
234
234
  const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
235
235
  // We round up
236
236
  const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
237
- const { baseFee } = await rollup.getL1FeesAt(block.header.globalVariables.timestamp.toBigInt());
237
+ const { baseFee } = await rollup.getL1FeesAt(block.header.globalVariables.timestamp);
238
238
  const proverCost = mulDiv(mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, await rollup.getEpochDuration()), 1n, await rollup.getManaTarget()) + await rollup.getProvingCostPerMana();
239
239
  const price = await rollup.getFeeAssetPerEth();
240
240
  const mana = block.header.totalManaUsed.toBigInt();
@@ -1,12 +1,14 @@
1
1
  import type { InitialAccountData } from '@aztec/accounts/testing';
2
2
  import type { AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
3
3
  import { type AccountWalletWithSecretKey } from '@aztec/aztec.js';
4
- import { type Operator } from '@aztec/ethereum';
4
+ import { type Operator, RollupContract, type ViemClient } from '@aztec/ethereum';
5
5
  import { ChainMonitor } from '@aztec/ethereum/test';
6
6
  import { type Logger } from '@aztec/foundation/log';
7
+ import { SlashFactoryAbi, SlasherAbi, SlashingProposerAbi } from '@aztec/l1-artifacts';
7
8
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
8
9
  import type { BootstrapNode } from '@aztec/p2p/bootstrap';
9
10
  import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
11
+ import { type GetContractReturnType } from 'viem';
10
12
  import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
11
13
  export declare const WAIT_FOR_TX_TIMEOUT: number;
12
14
  export declare const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES: {
@@ -78,5 +80,11 @@ export declare class P2PNetworkTest {
78
80
  setup(): Promise<void>;
79
81
  stopNodes(nodes: AztecNodeService[]): Promise<void>;
80
82
  teardown(): Promise<void>;
83
+ getContracts(): Promise<{
84
+ rollup: RollupContract;
85
+ slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
86
+ slashingProposer: GetContractReturnType<typeof SlashingProposerAbi, ViemClient>;
87
+ slashFactory: GetContractReturnType<typeof SlashFactoryAbi, ViemClient>;
88
+ }>;
81
89
  }
82
90
  //# sourceMappingURL=p2p_network.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,KAAK,0BAA0B,EAAc,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAGL,KAAK,QAAQ,EAKd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAY9D,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,iCAAiC,CAAC;AAOzC,eAAO,MAAM,mBAAmB,QAA0C,CAAC;AAE3E,eAAO,MAAM,qCAAqC;;;;CAIjD,CAAC;AAEF,qBAAa,cAAc;IAwBhB,gBAAgB,EAAE,MAAM;IACxB,YAAY,EAAE,MAAM;IAC3B,OAAO,CAAC,aAAa;IAGrB,OAAO,CAAC,WAAW,CAAC;IA5BtB,OAAO,CAAC,eAAe,CAAmB;IACnC,qBAAqB,EAAE,KAAK,MAAM,EAAE,CAAC;IACrC,WAAW;;;;;;;;;;wTAdgD,CAAC;sBAAsB,CAAC;;;;;;MAcvE;IAEZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAG,YAAY,CAAC;IAEvB,GAAG,EAAG,iBAAiB,CAAC;IACxB,mBAAmB,EAAE,KAAK,MAAM,EAAE,EAAE,CAAM;IAC1C,kBAAkB,EAAE,MAAM,EAAE,CAAM;IAClC,iBAAiB,EAAE,MAAM,EAAE,CAAM;IACjC,UAAU,EAAE,QAAQ,EAAE,CAAM;IAE5B,gBAAgB,EAAE,kBAAkB,EAAE,CAAM;IAC5C,mBAAmB,EAAE,kBAAkB,EAAE,CAAM;IAE/C,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpC,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,aAAa,CAAC,EAAE,aAAa,CAAC;gBAGnC,QAAQ,EAAE,MAAM,EACT,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAC7B,sBAAsB,EAAE,eAAe,EAE/B,WAAW,CAAC,EAAE,MAAM,YAAA,EAC5B,eAAe,CAAC,EAAE,OAAO,EACzB,sBAAsB,CAAC,EAAE,OAAO;WAsCrB,MAAM,CAAC,EAClB,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,WAAW,EACX,aAAa,EACb,eAAe,EACf,sBAAsB,GACvB,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QACzC,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC;IAuBD,IAAI,aAAa,uBAKhB;IAEK,gBAAgB;IActB,aAAa;;;IAgBP,kBAAkB;IAkElB,YAAY;IAYZ,kBAAkB;IAoBlB,iBAAiB;IAgBjB,WAAW;;;;YAIH,YAAY;IAQpB,KAAK;IAaL,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE;IAanC,QAAQ;CAKf"}
1
+ {"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,13 @@ import { EthAddress } from '@aztec/aztec.js';
3
3
  import { L1TxUtils, RollupContract, deployL1Contract, getL1ContractsConfigEnvVars, l1Artifacts } from '@aztec/ethereum';
4
4
  import { ChainMonitor } from '@aztec/ethereum/test';
5
5
  import { createLogger } from '@aztec/foundation/log';
6
- import { RollupAbi, TestERC20Abi } from '@aztec/l1-artifacts';
6
+ import { RollupAbi, SlashFactoryAbi, SlasherAbi, SlashingProposerAbi, TestERC20Abi } from '@aztec/l1-artifacts';
7
7
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
8
8
  import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
9
9
  import { tryStop } from '@aztec/stdlib/interfaces/server';
10
10
  import { getGenesisValues } from '@aztec/world-state/testing';
11
11
  import getPort from 'get-port';
12
- import { getContract } from 'viem';
12
+ import { getAddress, getContract } from 'viem';
13
13
  import { privateKeyToAccount } from 'viem/accounts';
14
14
  import { ATTESTER_PRIVATE_KEYS_START_INDEX, createValidatorConfig, generatePrivateKeys } from '../fixtures/setup_p2p_test.js';
15
15
  import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
@@ -80,7 +80,9 @@ export class P2PNetworkTest {
80
80
  aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
81
81
  aztecProofSubmissionWindow: initialValidatorConfig.aztecProofSubmissionWindow ?? l1ContractsConfig.aztecProofSubmissionWindow,
82
82
  initialValidators: [],
83
- mockZkPassportVerifier
83
+ zkPassportArgs: {
84
+ mockZkPassportVerifier
85
+ }
84
86
  });
85
87
  }
86
88
  static async create({ testName, numberOfNodes, basePort, metricsPort, initialConfig, startProverNode, mockZkPassportVerifier }) {
@@ -141,7 +143,7 @@ export class P2PNetworkTest {
141
143
  abi: l1Artifacts.multiAdder.contractAbi,
142
144
  client: deployL1ContractsValues.l1Client
143
145
  });
144
- const stakeNeeded = l1ContractsConfig.minimumStake * BigInt(this.numberOfNodes);
146
+ const stakeNeeded = l1ContractsConfig.depositAmount * BigInt(this.numberOfNodes);
145
147
  await Promise.all([
146
148
  await stakingAsset.write.mint([
147
149
  multiAdder.address,
@@ -238,4 +240,31 @@ export class P2PNetworkTest {
238
240
  await tryStop(this.bootstrapNode, this.logger);
239
241
  await this.snapshotManager.teardown();
240
242
  }
243
+ async getContracts() {
244
+ if (!this.ctx.deployL1ContractsValues) {
245
+ throw new Error('DeployL1ContractsValues not set');
246
+ }
247
+ const rollup = new RollupContract(this.ctx.deployL1ContractsValues.l1Client, this.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
248
+ const slasherContract = getContract({
249
+ address: getAddress(await rollup.getSlasher()),
250
+ abi: SlasherAbi,
251
+ client: this.ctx.deployL1ContractsValues.l1Client
252
+ });
253
+ const slashingProposer = getContract({
254
+ address: getAddress(await slasherContract.read.PROPOSER()),
255
+ abi: SlashingProposerAbi,
256
+ client: this.ctx.deployL1ContractsValues.l1Client
257
+ });
258
+ const slashFactory = getContract({
259
+ address: getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress.toString()),
260
+ abi: SlashFactoryAbi,
261
+ client: this.ctx.deployL1ContractsValues.l1Client
262
+ });
263
+ return {
264
+ rollup,
265
+ slasherContract,
266
+ slashingProposer,
267
+ slashFactory
268
+ };
269
+ }
241
270
  }
@@ -1,8 +1,14 @@
1
1
  import type { InitialAccountData } from '@aztec/accounts/testing';
2
2
  import type { AztecNodeService } from '@aztec/aztec-node';
3
3
  import { type Logger, ProvenTx, type SentTx } from '@aztec/aztec.js';
4
+ import type { RollupCheatCodes } from '@aztec/aztec.js/testing';
5
+ import type { RollupContract, ViemClient } from '@aztec/ethereum';
6
+ import type { SlashFactoryAbi } from '@aztec/l1-artifacts/SlashFactoryAbi';
7
+ import type { SlashingProposerAbi } from '@aztec/l1-artifacts/SlashingProposerAbi';
4
8
  import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
5
9
  import { PXEService } from '@aztec/pxe/server';
10
+ import { Offense } from '@aztec/slasher';
11
+ import type { GetContractReturnType } from 'viem';
6
12
  import type { NodeContext } from '../fixtures/setup_p2p_test.js';
7
13
  export declare const submitComplexTxsTo: (logger: Logger, spamContract: SpamContract, numTxs: number, opts?: {
8
14
  callPublic?: boolean;
@@ -13,4 +19,22 @@ export declare function createPXEServiceAndPrepareTransactions(logger: Logger, n
13
19
  txs: ProvenTx[];
14
20
  node: AztecNodeService;
15
21
  }>;
22
+ export declare function awaitProposalExecution(slashingProposer: GetContractReturnType<typeof SlashingProposerAbi, ViemClient>, timeoutSeconds: number): Promise<void>;
23
+ export declare function awaitCommitteeExists({ rollup, logger }: {
24
+ rollup: RollupContract;
25
+ logger: Logger;
26
+ }): Promise<readonly `0x${string}`[]>;
27
+ export declare function awaitCommitteeKicked({ offense, rollup, cheatCodes, committee, slashingAmount, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, logger, sendDummyTx, }: {
28
+ offense: Offense;
29
+ rollup: RollupContract;
30
+ cheatCodes: RollupCheatCodes;
31
+ committee: readonly `0x${string}`[];
32
+ slashingAmount: bigint;
33
+ slashFactory: GetContractReturnType<typeof SlashFactoryAbi, ViemClient>;
34
+ slashingProposer: GetContractReturnType<typeof SlashingProposerAbi, ViemClient>;
35
+ slashingRoundSize: number;
36
+ aztecSlotDuration: number;
37
+ logger: Logger;
38
+ sendDummyTx: () => Promise<void>;
39
+ }): Promise<void>;
16
40
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAM,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAiD,MAAM,iBAAiB,CAAC;AAExH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAyD,MAAM,mBAAmB,CAAC;AAEtG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,EACd,cAAc,YAAY,EAC1B,QAAQ,MAAM,EACd,OAAM;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,sBAsBpC,CAAC;AAGF,eAAO,MAAM,qCAAqC,GAChD,QAAQ,MAAM,EACd,MAAM,gBAAgB,EACtB,QAAQ,MAAM,EACd,eAAe,kBAAkB,KAChC,OAAO,CAAC,WAAW,CAgBrB,CAAC;AAEF,wBAAsB,sCAAsC,CAC1D,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAqB9E"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAEL,KAAK,MAAM,EACX,QAAQ,EACR,KAAK,MAAM,EAIZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAyD,MAAM,mBAAmB,CAAC;AACtG,OAAO,EAAE,OAAO,EAAmB,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,EACd,cAAc,YAAY,EAC1B,QAAQ,MAAM,EACd,OAAM;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,sBAsBpC,CAAC;AAGF,eAAO,MAAM,qCAAqC,GAChD,QAAQ,MAAM,EACd,MAAM,gBAAgB,EACtB,QAAQ,MAAM,EACd,eAAe,kBAAkB,KAChC,OAAO,CAAC,WAAW,CAgBrB,CAAC;AAEF,wBAAsB,sCAAsC,CAC1D,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAqB9E;AAED,wBAAsB,sBAAsB,CAC1C,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,mBAAmB,EAAE,UAAU,CAAC,EAC/E,cAAc,EAAE,MAAM,iBAiBvB;AAED,wBAAsB,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,qCAYxG;AAED,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,WAAW,GACZ,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,qBAAqB,CAAC,OAAO,eAAe,EAAE,UAAU,CAAC,CAAC;IACxE,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,mBAAmB,EAAE,UAAU,CAAC,CAAC;IAChF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,iBA2DA"}
@@ -1,8 +1,9 @@
1
1
  import { getSchnorrAccount } from '@aztec/accounts/schnorr';
2
- import { Fr, TxStatus, getContractInstanceFromDeployParams } from '@aztec/aztec.js';
2
+ import { Fr, TxStatus, getContractInstanceFromDeployParams, retryUntil } from '@aztec/aztec.js';
3
3
  import { timesAsync } from '@aztec/foundation/collection';
4
4
  import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
5
5
  import { createPXEService, getPXEServiceConfig as getRpcConfig } from '@aztec/pxe/server';
6
+ import { OffenseToBigInt } from '@aztec/slasher';
6
7
  import { submitTxsTo } from '../shared/submit-transactions.js';
7
8
  // submits a set of transactions to the provided Private eXecution Environment (PXE)
8
9
  export const submitComplexTxsTo = async (logger, spamContract, numTxs, opts = {})=>{
@@ -67,3 +68,73 @@ export async function createPXEServiceAndPrepareTransactions(logger, node, numTx
67
68
  node
68
69
  };
69
70
  }
71
+ export async function awaitProposalExecution(slashingProposer, timeoutSeconds) {
72
+ await retryUntil(async ()=>{
73
+ const events = await slashingProposer.getEvents.ProposalExecuted();
74
+ if (events.length === 0) {
75
+ return false;
76
+ }
77
+ const event = events[0];
78
+ const roundNumber = event.args.round;
79
+ const proposal = event.args.proposal;
80
+ return roundNumber && proposal;
81
+ }, 'proposal executed', timeoutSeconds, 1);
82
+ }
83
+ export async function awaitCommitteeExists({ rollup, logger }) {
84
+ logger.info(`Waiting for committee to be set`);
85
+ let committee = [];
86
+ await retryUntil(async ()=>{
87
+ committee = await rollup.getCurrentEpochCommittee();
88
+ return committee.length > 0;
89
+ }, 'non-empty committee', 60);
90
+ return committee;
91
+ }
92
+ export async function awaitCommitteeKicked({ offense, rollup, cheatCodes, committee, slashingAmount, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, logger, sendDummyTx }) {
93
+ logger.info(`Waiting for slash payload to be deployed`);
94
+ const expectedSlashes = Array.from({
95
+ length: committee.length
96
+ }, ()=>slashingAmount);
97
+ const sortedCommittee = [
98
+ ...committee
99
+ ].sort((a, b)=>a.localeCompare(b));
100
+ await retryUntil(async ()=>{
101
+ const [address, _, isDeployed] = await slashFactory.read.getAddressAndIsDeployed([
102
+ sortedCommittee,
103
+ expectedSlashes
104
+ ]);
105
+ return address && isDeployed;
106
+ }, 'slash payload deployed', 60, 1);
107
+ const slashPayloadEvents = await slashFactory.getEvents.SlashPayloadCreated();
108
+ expect(slashPayloadEvents.length).toBe(1);
109
+ expect(slashPayloadEvents[0].args.offenses).toEqual(Array.from({
110
+ length: committee.length
111
+ }, ()=>OffenseToBigInt[offense]));
112
+ const attestersPre = await rollup.getAttesters();
113
+ expect(attestersPre.length).toBe(committee.length);
114
+ for (const attester of attestersPre){
115
+ const attesterInfo = await rollup.getAttesterView(attester);
116
+ // Check that status isValidating
117
+ expect(attesterInfo.status).toEqual(1);
118
+ }
119
+ logger.info(`Waiting for slash proposal to be executed`);
120
+ await awaitProposalExecution(slashingProposer, slashingRoundSize * 2 * aztecSlotDuration);
121
+ // The attesters should still form the committee
122
+ // but they should be reduced to the "living" status
123
+ await cheatCodes.debugRollup();
124
+ const committeePostSlashing = await rollup.getCurrentEpochCommittee();
125
+ expect(committeePostSlashing.length).toBe(attestersPre.length);
126
+ const attestersPostSlashing = await rollup.getAttesters();
127
+ expect(attestersPostSlashing.length).toBe(0);
128
+ for (const attester of attestersPre){
129
+ const attesterInfo = await rollup.getAttesterView(attester);
130
+ // Check that status is Living
131
+ expect(attesterInfo.status).toEqual(2);
132
+ }
133
+ await cheatCodes.advanceToNextEpoch();
134
+ await sendDummyTx();
135
+ await cheatCodes.debugRollup();
136
+ const committeeNextEpoch = await rollup.getCurrentEpochCommittee();
137
+ expect(committeeNextEpoch.length).toBe(0);
138
+ const attestersNextEpoch = await rollup.getAttesters();
139
+ expect(attestersNextEpoch.length).toBe(0);
140
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrD,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,EAAE,CAO7F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4B7B;AAGD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,EACpB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,6BAQ5C;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,GAAE,MAAU,EACxB,aAAa,CAAC,EAAE,MAAM,4BAuBvB"}
1
+ {"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrD,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,EAAE,CAO7F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmC7B;AAGD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,eAAe,EACvB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,EACpB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,6BAQ5C;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,GAAE,MAAU,EACxB,aAAa,CAAC,EAAE,MAAM,4BAuBvB"}
@@ -31,6 +31,11 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
31
31
  nodePromises.push(nodePromise);
32
32
  }
33
33
  const nodes = await Promise.all(nodePromises);
34
+ // Sanity check that we have a sequencer
35
+ const seqClient = nodes[0].getSequencer();
36
+ if (!seqClient) {
37
+ throw new Error('Sequencer not found');
38
+ }
34
39
  removeLogNameHandler(logNameHandler);
35
40
  return nodes;
36
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"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"}
@@ -264,6 +264,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
264
264
  initialValidators: opts.initialValidators
265
265
  });
266
266
  aztecNodeConfig.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
267
+ aztecNodeConfig.rollupVersion = deployL1ContractsValues.rollupVersion;
267
268
  aztecNodeConfig.l1PublishRetryIntervalMS = 100;
268
269
  if (opts.fundRewardDistributor) {
269
270
  // Mints block rewards for 10000 blocks to the rewardDistributor contract
@@ -437,7 +438,8 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
437
438
  proverNode,
438
439
  deployL1ContractsValues: {
439
440
  l1Client,
440
- l1ContractAddresses: aztecNodeConfig.l1Contracts
441
+ l1ContractAddresses: aztecNodeConfig.l1Contracts,
442
+ rollupVersion: aztecNodeConfig.rollupVersion
441
443
  },
442
444
  watcher,
443
445
  cheatCodes,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"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"}
@@ -134,11 +134,12 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
134
134
  await waitForPXE(pxeClient, logger);
135
135
  logger.verbose('JSON RPC client connected to PXE');
136
136
  logger.verbose(`Retrieving contract addresses from ${PXE_URL}`);
137
- const l1Contracts = (await pxeClient.getNodeInfo()).l1ContractAddresses;
137
+ const { l1ContractAddresses, rollupVersion } = await pxeClient.getNodeInfo();
138
138
  const l1Client = createExtendedL1Client(config.l1RpcUrls, account, foundry);
139
139
  const deployL1ContractsValues = {
140
- l1ContractAddresses: l1Contracts,
141
- l1Client
140
+ l1ContractAddresses,
141
+ l1Client,
142
+ rollupVersion
142
143
  };
143
144
  const cheatCodes = await CheatCodes.create(config.l1RpcUrls, pxeClient);
144
145
  const teardown = ()=>Promise.resolve();
@@ -254,6 +255,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
254
255
  initialValidators: opts.initialValidators
255
256
  }, chain);
256
257
  config.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
258
+ config.rollupVersion = deployL1ContractsValues.rollupVersion;
257
259
  if (opts.fundRewardDistributor) {
258
260
  // Mints block rewards for 10000 blocks to the rewardDistributor contract
259
261
  const rewardDistributor = getContract({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/end-to-end",
3
- "version": "1.0.0-nightly.20250610",
3
+ "version": "1.0.0-nightly.20250612",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "inherits": [
@@ -25,40 +25,40 @@
25
25
  "formatting": "run -T prettier --check ./src && run -T eslint ./src"
26
26
  },
27
27
  "dependencies": {
28
- "@aztec/accounts": "1.0.0-nightly.20250610",
29
- "@aztec/archiver": "1.0.0-nightly.20250610",
30
- "@aztec/aztec": "1.0.0-nightly.20250610",
31
- "@aztec/aztec-node": "1.0.0-nightly.20250610",
32
- "@aztec/aztec.js": "1.0.0-nightly.20250610",
33
- "@aztec/bb-prover": "1.0.0-nightly.20250610",
34
- "@aztec/blob-lib": "1.0.0-nightly.20250610",
35
- "@aztec/blob-sink": "1.0.0-nightly.20250610",
36
- "@aztec/bot": "1.0.0-nightly.20250610",
37
- "@aztec/cli": "1.0.0-nightly.20250610",
38
- "@aztec/constants": "1.0.0-nightly.20250610",
39
- "@aztec/entrypoints": "1.0.0-nightly.20250610",
40
- "@aztec/epoch-cache": "1.0.0-nightly.20250610",
41
- "@aztec/ethereum": "1.0.0-nightly.20250610",
42
- "@aztec/foundation": "1.0.0-nightly.20250610",
43
- "@aztec/kv-store": "1.0.0-nightly.20250610",
44
- "@aztec/l1-artifacts": "1.0.0-nightly.20250610",
45
- "@aztec/merkle-tree": "1.0.0-nightly.20250610",
46
- "@aztec/noir-contracts.js": "1.0.0-nightly.20250610",
47
- "@aztec/noir-noirc_abi": "1.0.0-nightly.20250610",
48
- "@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250610",
49
- "@aztec/noir-test-contracts.js": "1.0.0-nightly.20250610",
50
- "@aztec/p2p": "1.0.0-nightly.20250610",
51
- "@aztec/protocol-contracts": "1.0.0-nightly.20250610",
52
- "@aztec/prover-client": "1.0.0-nightly.20250610",
53
- "@aztec/prover-node": "1.0.0-nightly.20250610",
54
- "@aztec/pxe": "1.0.0-nightly.20250610",
55
- "@aztec/sequencer-client": "1.0.0-nightly.20250610",
56
- "@aztec/simulator": "1.0.0-nightly.20250610",
57
- "@aztec/slasher": "1.0.0-nightly.20250610",
58
- "@aztec/stdlib": "1.0.0-nightly.20250610",
59
- "@aztec/telemetry-client": "1.0.0-nightly.20250610",
60
- "@aztec/validator-client": "1.0.0-nightly.20250610",
61
- "@aztec/world-state": "1.0.0-nightly.20250610",
28
+ "@aztec/accounts": "1.0.0-nightly.20250612",
29
+ "@aztec/archiver": "1.0.0-nightly.20250612",
30
+ "@aztec/aztec": "1.0.0-nightly.20250612",
31
+ "@aztec/aztec-node": "1.0.0-nightly.20250612",
32
+ "@aztec/aztec.js": "1.0.0-nightly.20250612",
33
+ "@aztec/bb-prover": "1.0.0-nightly.20250612",
34
+ "@aztec/blob-lib": "1.0.0-nightly.20250612",
35
+ "@aztec/blob-sink": "1.0.0-nightly.20250612",
36
+ "@aztec/bot": "1.0.0-nightly.20250612",
37
+ "@aztec/cli": "1.0.0-nightly.20250612",
38
+ "@aztec/constants": "1.0.0-nightly.20250612",
39
+ "@aztec/entrypoints": "1.0.0-nightly.20250612",
40
+ "@aztec/epoch-cache": "1.0.0-nightly.20250612",
41
+ "@aztec/ethereum": "1.0.0-nightly.20250612",
42
+ "@aztec/foundation": "1.0.0-nightly.20250612",
43
+ "@aztec/kv-store": "1.0.0-nightly.20250612",
44
+ "@aztec/l1-artifacts": "1.0.0-nightly.20250612",
45
+ "@aztec/merkle-tree": "1.0.0-nightly.20250612",
46
+ "@aztec/noir-contracts.js": "1.0.0-nightly.20250612",
47
+ "@aztec/noir-noirc_abi": "1.0.0-nightly.20250612",
48
+ "@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250612",
49
+ "@aztec/noir-test-contracts.js": "1.0.0-nightly.20250612",
50
+ "@aztec/p2p": "1.0.0-nightly.20250612",
51
+ "@aztec/protocol-contracts": "1.0.0-nightly.20250612",
52
+ "@aztec/prover-client": "1.0.0-nightly.20250612",
53
+ "@aztec/prover-node": "1.0.0-nightly.20250612",
54
+ "@aztec/pxe": "1.0.0-nightly.20250612",
55
+ "@aztec/sequencer-client": "1.0.0-nightly.20250612",
56
+ "@aztec/simulator": "1.0.0-nightly.20250612",
57
+ "@aztec/slasher": "1.0.0-nightly.20250612",
58
+ "@aztec/stdlib": "1.0.0-nightly.20250612",
59
+ "@aztec/telemetry-client": "1.0.0-nightly.20250612",
60
+ "@aztec/validator-client": "1.0.0-nightly.20250612",
61
+ "@aztec/world-state": "1.0.0-nightly.20250612",
62
62
  "@iarna/toml": "^2.2.5",
63
63
  "@jest/globals": "^29.5.0",
64
64
  "@noble/curves": "^1.0.0",
@@ -155,6 +155,7 @@
155
155
  "testTimeout": 120000,
156
156
  "setupFiles": [
157
157
  "../../foundation/src/jest/setup.mjs"
158
- ]
158
+ ],
159
+ "testEnvironment": "../../foundation/src/jest/env.mjs"
159
160
  }
160
161
  }
@@ -325,7 +325,7 @@ export class FeesTest {
325
325
  // We round up
326
326
  const mulDiv = (a: bigint, b: bigint, c: bigint) => (a * b) / c + ((a * b) % c > 0n ? 1n : 0n);
327
327
 
328
- const { baseFee } = await rollup.getL1FeesAt(block!.header.globalVariables.timestamp.toBigInt());
328
+ const { baseFee } = await rollup.getL1FeesAt(block!.header.globalVariables.timestamp);
329
329
  const proverCost =
330
330
  mulDiv(
331
331
  mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, await rollup.getEpochDuration()),
@@ -7,13 +7,14 @@ import {
7
7
  L1TxUtils,
8
8
  type Operator,
9
9
  RollupContract,
10
+ type ViemClient,
10
11
  deployL1Contract,
11
12
  getL1ContractsConfigEnvVars,
12
13
  l1Artifacts,
13
14
  } from '@aztec/ethereum';
14
15
  import { ChainMonitor } from '@aztec/ethereum/test';
15
16
  import { type Logger, createLogger } from '@aztec/foundation/log';
16
- import { RollupAbi, TestERC20Abi } from '@aztec/l1-artifacts';
17
+ import { RollupAbi, SlashFactoryAbi, SlasherAbi, SlashingProposerAbi, TestERC20Abi } from '@aztec/l1-artifacts';
17
18
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
18
19
  import type { BootstrapNode } from '@aztec/p2p/bootstrap';
19
20
  import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
@@ -22,7 +23,7 @@ import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
22
23
  import { getGenesisValues } from '@aztec/world-state/testing';
23
24
 
24
25
  import getPort from 'get-port';
25
- import { getContract } from 'viem';
26
+ import { type GetContractReturnType, getAddress, getContract } from 'viem';
26
27
  import { privateKeyToAccount } from 'viem/accounts';
27
28
 
28
29
  import {
@@ -114,7 +115,9 @@ export class P2PNetworkTest {
114
115
  aztecProofSubmissionWindow:
115
116
  initialValidatorConfig.aztecProofSubmissionWindow ?? l1ContractsConfig.aztecProofSubmissionWindow,
116
117
  initialValidators: [],
117
- mockZkPassportVerifier,
118
+ zkPassportArgs: {
119
+ mockZkPassportVerifier,
120
+ },
118
121
  },
119
122
  );
120
123
  }
@@ -227,7 +230,7 @@ export class P2PNetworkTest {
227
230
  client: deployL1ContractsValues.l1Client,
228
231
  });
229
232
 
230
- const stakeNeeded = l1ContractsConfig.minimumStake * BigInt(this.numberOfNodes);
233
+ const stakeNeeded = l1ContractsConfig.depositAmount * BigInt(this.numberOfNodes);
231
234
  await Promise.all(
232
235
  [await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
233
236
  deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
@@ -352,4 +355,40 @@ export class P2PNetworkTest {
352
355
  await tryStop(this.bootstrapNode, this.logger);
353
356
  await this.snapshotManager.teardown();
354
357
  }
358
+
359
+ async getContracts(): Promise<{
360
+ rollup: RollupContract;
361
+ slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
362
+ slashingProposer: GetContractReturnType<typeof SlashingProposerAbi, ViemClient>;
363
+ slashFactory: GetContractReturnType<typeof SlashFactoryAbi, ViemClient>;
364
+ }> {
365
+ if (!this.ctx.deployL1ContractsValues) {
366
+ throw new Error('DeployL1ContractsValues not set');
367
+ }
368
+
369
+ const rollup = new RollupContract(
370
+ this.ctx.deployL1ContractsValues!.l1Client,
371
+ this.ctx.deployL1ContractsValues!.l1ContractAddresses.rollupAddress,
372
+ );
373
+
374
+ const slasherContract = getContract({
375
+ address: getAddress(await rollup.getSlasher()),
376
+ abi: SlasherAbi,
377
+ client: this.ctx.deployL1ContractsValues.l1Client,
378
+ });
379
+
380
+ const slashingProposer = getContract({
381
+ address: getAddress(await slasherContract.read.PROPOSER()),
382
+ abi: SlashingProposerAbi,
383
+ client: this.ctx.deployL1ContractsValues.l1Client,
384
+ });
385
+
386
+ const slashFactory = getContract({
387
+ address: getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress!.toString()),
388
+ abi: SlashFactoryAbi,
389
+ client: this.ctx.deployL1ContractsValues.l1Client,
390
+ });
391
+
392
+ return { rollup, slasherContract, slashingProposer, slashFactory };
393
+ }
355
394
  }
@@ -1,11 +1,26 @@
1
1
  import { getSchnorrAccount } from '@aztec/accounts/schnorr';
2
2
  import type { InitialAccountData } from '@aztec/accounts/testing';
3
3
  import type { AztecNodeService } from '@aztec/aztec-node';
4
- import { Fr, type Logger, ProvenTx, type SentTx, TxStatus, getContractInstanceFromDeployParams } from '@aztec/aztec.js';
4
+ import {
5
+ Fr,
6
+ type Logger,
7
+ ProvenTx,
8
+ type SentTx,
9
+ TxStatus,
10
+ getContractInstanceFromDeployParams,
11
+ retryUntil,
12
+ } from '@aztec/aztec.js';
13
+ import type { RollupCheatCodes } from '@aztec/aztec.js/testing';
14
+ import type { RollupContract, ViemClient } from '@aztec/ethereum';
5
15
  import { timesAsync } from '@aztec/foundation/collection';
16
+ import type { SlashFactoryAbi } from '@aztec/l1-artifacts/SlashFactoryAbi';
17
+ import type { SlashingProposerAbi } from '@aztec/l1-artifacts/SlashingProposerAbi';
6
18
  import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
7
19
  import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
8
20
  import { PXEService, createPXEService, getPXEServiceConfig as getRpcConfig } from '@aztec/pxe/server';
21
+ import { Offense, OffenseToBigInt } from '@aztec/slasher';
22
+
23
+ import type { GetContractReturnType } from 'viem';
9
24
 
10
25
  import type { NodeContext } from '../fixtures/setup_p2p_test.js';
11
26
  import { submitTxsTo } from '../shared/submit-transactions.js';
@@ -90,3 +105,123 @@ export async function createPXEServiceAndPrepareTransactions(
90
105
 
91
106
  return { txs, pxeService: pxe, node };
92
107
  }
108
+
109
+ export async function awaitProposalExecution(
110
+ slashingProposer: GetContractReturnType<typeof SlashingProposerAbi, ViemClient>,
111
+ timeoutSeconds: number,
112
+ ) {
113
+ await retryUntil(
114
+ async () => {
115
+ const events = await slashingProposer.getEvents.ProposalExecuted();
116
+ if (events.length === 0) {
117
+ return false;
118
+ }
119
+ const event = events[0];
120
+ const roundNumber = event.args.round;
121
+ const proposal = event.args.proposal;
122
+ return roundNumber && proposal;
123
+ },
124
+ 'proposal executed',
125
+ timeoutSeconds,
126
+ 1,
127
+ );
128
+ }
129
+
130
+ export async function awaitCommitteeExists({ rollup, logger }: { rollup: RollupContract; logger: Logger }) {
131
+ logger.info(`Waiting for committee to be set`);
132
+ let committee: readonly `0x${string}`[] = [];
133
+ await retryUntil(
134
+ async () => {
135
+ committee = await rollup.getCurrentEpochCommittee();
136
+ return committee.length > 0;
137
+ },
138
+ 'non-empty committee',
139
+ 60,
140
+ );
141
+ return committee;
142
+ }
143
+
144
+ export async function awaitCommitteeKicked({
145
+ offense,
146
+ rollup,
147
+ cheatCodes,
148
+ committee,
149
+ slashingAmount,
150
+ slashFactory,
151
+ slashingProposer,
152
+ slashingRoundSize,
153
+ aztecSlotDuration,
154
+ logger,
155
+ sendDummyTx,
156
+ }: {
157
+ offense: Offense;
158
+ rollup: RollupContract;
159
+ cheatCodes: RollupCheatCodes;
160
+ committee: readonly `0x${string}`[];
161
+ slashingAmount: bigint;
162
+ slashFactory: GetContractReturnType<typeof SlashFactoryAbi, ViemClient>;
163
+ slashingProposer: GetContractReturnType<typeof SlashingProposerAbi, ViemClient>;
164
+ slashingRoundSize: number;
165
+ aztecSlotDuration: number;
166
+ logger: Logger;
167
+ sendDummyTx: () => Promise<void>;
168
+ }) {
169
+ logger.info(`Waiting for slash payload to be deployed`);
170
+ const expectedSlashes = Array.from({ length: committee.length }, () => slashingAmount);
171
+ const sortedCommittee = [...committee].sort((a, b) => a.localeCompare(b));
172
+ await retryUntil(
173
+ async () => {
174
+ const [address, _, isDeployed] = await slashFactory.read.getAddressAndIsDeployed([
175
+ sortedCommittee,
176
+ expectedSlashes,
177
+ ]);
178
+ return address && isDeployed;
179
+ },
180
+ 'slash payload deployed',
181
+ 60,
182
+ 1,
183
+ );
184
+
185
+ const slashPayloadEvents = await slashFactory.getEvents.SlashPayloadCreated();
186
+ expect(slashPayloadEvents.length).toBe(1);
187
+ expect(slashPayloadEvents[0].args.offenses).toEqual(
188
+ Array.from({ length: committee.length }, () => OffenseToBigInt[offense]),
189
+ );
190
+
191
+ const attestersPre = await rollup.getAttesters();
192
+ expect(attestersPre.length).toBe(committee.length);
193
+
194
+ for (const attester of attestersPre) {
195
+ const attesterInfo = await rollup.getAttesterView(attester);
196
+ // Check that status isValidating
197
+ expect(attesterInfo.status).toEqual(1);
198
+ }
199
+
200
+ logger.info(`Waiting for slash proposal to be executed`);
201
+ await awaitProposalExecution(slashingProposer, slashingRoundSize * 2 * aztecSlotDuration);
202
+
203
+ // The attesters should still form the committee
204
+ // but they should be reduced to the "living" status
205
+ await cheatCodes.debugRollup();
206
+ const committeePostSlashing = await rollup.getCurrentEpochCommittee();
207
+ expect(committeePostSlashing.length).toBe(attestersPre.length);
208
+
209
+ const attestersPostSlashing = await rollup.getAttesters();
210
+ expect(attestersPostSlashing.length).toBe(0);
211
+
212
+ for (const attester of attestersPre) {
213
+ const attesterInfo = await rollup.getAttesterView(attester);
214
+ // Check that status is Living
215
+ expect(attesterInfo.status).toEqual(2);
216
+ }
217
+
218
+ await cheatCodes.advanceToNextEpoch();
219
+ await sendDummyTx();
220
+ await cheatCodes.debugRollup();
221
+
222
+ const committeeNextEpoch = await rollup.getCurrentEpochCommittee();
223
+ expect(committeeNextEpoch.length).toBe(0);
224
+
225
+ const attestersNextEpoch = await rollup.getAttesters();
226
+ expect(attestersNextEpoch.length).toBe(0);
227
+ }
@@ -69,6 +69,13 @@ export async function createNodes(
69
69
  nodePromises.push(nodePromise);
70
70
  }
71
71
  const nodes = await Promise.all(nodePromises);
72
+
73
+ // Sanity check that we have a sequencer
74
+ const seqClient = nodes[0].getSequencer();
75
+ if (!seqClient) {
76
+ throw new Error('Sequencer not found');
77
+ }
78
+
72
79
  removeLogNameHandler(logNameHandler);
73
80
  return nodes;
74
81
  }
@@ -359,6 +359,7 @@ async function setupFromFresh(
359
359
  initialValidators: opts.initialValidators,
360
360
  });
361
361
  aztecNodeConfig.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
362
+ aztecNodeConfig.rollupVersion = deployL1ContractsValues.rollupVersion;
362
363
  aztecNodeConfig.l1PublishRetryIntervalMS = 100;
363
364
 
364
365
  if (opts.fundRewardDistributor) {
@@ -584,6 +585,7 @@ async function setupFromState(statePath: string, logger: Logger): Promise<Subsys
584
585
  deployL1ContractsValues: {
585
586
  l1Client,
586
587
  l1ContractAddresses: aztecNodeConfig.l1Contracts,
588
+ rollupVersion: aztecNodeConfig.rollupVersion,
587
589
  },
588
590
  watcher,
589
591
  cheatCodes,
@@ -216,13 +216,14 @@ async function setupWithRemoteEnvironment(
216
216
  await waitForPXE(pxeClient, logger);
217
217
  logger.verbose('JSON RPC client connected to PXE');
218
218
  logger.verbose(`Retrieving contract addresses from ${PXE_URL}`);
219
- const l1Contracts = (await pxeClient.getNodeInfo()).l1ContractAddresses;
219
+ const { l1ContractAddresses, rollupVersion } = await pxeClient.getNodeInfo();
220
220
 
221
221
  const l1Client = createExtendedL1Client(config.l1RpcUrls, account, foundry);
222
222
 
223
223
  const deployL1ContractsValues: DeployL1ContractsReturnType = {
224
- l1ContractAddresses: l1Contracts,
224
+ l1ContractAddresses,
225
225
  l1Client,
226
+ rollupVersion,
226
227
  };
227
228
  const cheatCodes = await CheatCodes.create(config.l1RpcUrls, pxeClient!);
228
229
  const teardown = () => Promise.resolve();
@@ -442,6 +443,7 @@ export async function setup(
442
443
  ));
443
444
 
444
445
  config.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
446
+ config.rollupVersion = deployL1ContractsValues.rollupVersion;
445
447
 
446
448
  if (opts.fundRewardDistributor) {
447
449
  // Mints block rewards for 10000 blocks to the rewardDistributor contract