@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.
- package/dest/e2e_fees/fees_test.js +1 -1
- package/dest/e2e_p2p/p2p_network.d.ts +9 -1
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +33 -4
- package/dest/e2e_p2p/shared.d.ts +24 -0
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +72 -1
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +5 -0
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +3 -1
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +5 -3
- package/package.json +37 -36
- package/src/e2e_fees/fees_test.ts +1 -1
- package/src/e2e_p2p/p2p_network.ts +43 -4
- package/src/e2e_p2p/shared.ts +136 -1
- package/src/fixtures/setup_p2p_test.ts +7 -0
- package/src/fixtures/snapshot_manager.ts +2 -0
- package/src/fixtures/utils.ts +4 -2
|
@@ -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
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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
|
}
|
package/dest/e2e_p2p/shared.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dest/e2e_p2p/shared.js
CHANGED
|
@@ -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,
|
|
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":"AACA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,eAAe,EAAsC,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EACjB,KAAK,SAAS,EAEd,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,GAAG,EACR,KAAK,MAAM,EAMZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,yBAAyB,CAAC;AAEpF,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,iBAAiB,EAEjB,KAAK,QAAQ,EAMd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAA0C,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG1F,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAG3B,MAAM,yBAAyB,CAAC;AASjC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,GAAG,EAAE,KAAK,iBAAiB,EAAe,MAAM,MAAM,CAAC;AASjG,OAAO,EAAE,0CAA0C,EAAE,MAAM,uCAAuC,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,CAAC;AAmBtB,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,IAI/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,MAAM,EAAE,EACnB,SAAS,SAAS,GAAG,iBAAiB,EACtC,QAAQ,MAAM,EACd,OAAM,OAAO,CAAC,qBAAqB,CAAM,EACzC,QAAO,KAAe,yCAcvB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,EACpB,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,EACpC,MAAM,SAAc,EACpB,YAAY,UAAQ,GACnB,OAAO,CAAC;IACT;;OAEG;IACH,GAAG,EAAE,UAAU,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC,CA2BD;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/utils.ts"],"names":[],"mappings":"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"}
|
package/dest/fixtures/utils.js
CHANGED
|
@@ -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
|
|
137
|
+
const { l1ContractAddresses, rollupVersion } = await pxeClient.getNodeInfo();
|
|
138
138
|
const l1Client = createExtendedL1Client(config.l1RpcUrls, account, foundry);
|
|
139
139
|
const deployL1ContractsValues = {
|
|
140
|
-
l1ContractAddresses
|
|
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.
|
|
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.
|
|
29
|
-
"@aztec/archiver": "1.0.0-nightly.
|
|
30
|
-
"@aztec/aztec": "1.0.0-nightly.
|
|
31
|
-
"@aztec/aztec-node": "1.0.0-nightly.
|
|
32
|
-
"@aztec/aztec.js": "1.0.0-nightly.
|
|
33
|
-
"@aztec/bb-prover": "1.0.0-nightly.
|
|
34
|
-
"@aztec/blob-lib": "1.0.0-nightly.
|
|
35
|
-
"@aztec/blob-sink": "1.0.0-nightly.
|
|
36
|
-
"@aztec/bot": "1.0.0-nightly.
|
|
37
|
-
"@aztec/cli": "1.0.0-nightly.
|
|
38
|
-
"@aztec/constants": "1.0.0-nightly.
|
|
39
|
-
"@aztec/entrypoints": "1.0.0-nightly.
|
|
40
|
-
"@aztec/epoch-cache": "1.0.0-nightly.
|
|
41
|
-
"@aztec/ethereum": "1.0.0-nightly.
|
|
42
|
-
"@aztec/foundation": "1.0.0-nightly.
|
|
43
|
-
"@aztec/kv-store": "1.0.0-nightly.
|
|
44
|
-
"@aztec/l1-artifacts": "1.0.0-nightly.
|
|
45
|
-
"@aztec/merkle-tree": "1.0.0-nightly.
|
|
46
|
-
"@aztec/noir-contracts.js": "1.0.0-nightly.
|
|
47
|
-
"@aztec/noir-noirc_abi": "1.0.0-nightly.
|
|
48
|
-
"@aztec/noir-protocol-circuits-types": "1.0.0-nightly.
|
|
49
|
-
"@aztec/noir-test-contracts.js": "1.0.0-nightly.
|
|
50
|
-
"@aztec/p2p": "1.0.0-nightly.
|
|
51
|
-
"@aztec/protocol-contracts": "1.0.0-nightly.
|
|
52
|
-
"@aztec/prover-client": "1.0.0-nightly.
|
|
53
|
-
"@aztec/prover-node": "1.0.0-nightly.
|
|
54
|
-
"@aztec/pxe": "1.0.0-nightly.
|
|
55
|
-
"@aztec/sequencer-client": "1.0.0-nightly.
|
|
56
|
-
"@aztec/simulator": "1.0.0-nightly.
|
|
57
|
-
"@aztec/slasher": "1.0.0-nightly.
|
|
58
|
-
"@aztec/stdlib": "1.0.0-nightly.
|
|
59
|
-
"@aztec/telemetry-client": "1.0.0-nightly.
|
|
60
|
-
"@aztec/validator-client": "1.0.0-nightly.
|
|
61
|
-
"@aztec/world-state": "1.0.0-nightly.
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
}
|
package/src/e2e_p2p/shared.ts
CHANGED
|
@@ -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 {
|
|
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,
|
package/src/fixtures/utils.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|