@aztec/end-to-end 2.0.3 → 2.1.0-rc.2
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_epochs/epochs_test.d.ts +4 -2
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +7 -7
- package/dest/e2e_multi_validator/utils.d.ts.map +1 -1
- package/dest/e2e_multi_validator/utils.js +3 -9
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
- package/dest/e2e_p2p/inactivity_slash_test.js +132 -0
- package/dest/e2e_p2p/p2p_network.d.ts +6 -4
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +4 -5
- package/dest/e2e_p2p/shared.d.ts +2 -1
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +8 -12
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +2 -1
- package/dest/fixtures/setup_p2p_test.d.ts +10 -2
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +38 -20
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +16 -13
- package/dest/fixtures/utils.d.ts +3 -1
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +7 -6
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +42 -0
- package/package.json +37 -37
- package/src/e2e_epochs/epochs_test.ts +10 -8
- package/src/e2e_multi_validator/utils.ts +3 -9
- package/src/e2e_p2p/inactivity_slash_test.ts +174 -0
- package/src/e2e_p2p/p2p_network.ts +11 -10
- package/src/e2e_p2p/shared.ts +13 -7
- package/src/fixtures/e2e_prover_test.ts +1 -0
- package/src/fixtures/setup_p2p_test.ts +60 -19
- package/src/fixtures/snapshot_manager.ts +19 -11
- package/src/fixtures/utils.ts +10 -7
- package/src/fixtures/web3signer.ts +46 -0
|
@@ -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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"}
|
|
@@ -234,17 +234,6 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
234
234
|
aztecNodeConfig.dataDirectory = statePath;
|
|
235
235
|
}
|
|
236
236
|
aztecNodeConfig.blobSinkUrl = `http://127.0.0.1:${blobSinkPort}`;
|
|
237
|
-
// Start anvil. We go via a wrapper script to ensure if the parent dies, anvil dies.
|
|
238
|
-
logger.verbose('Starting anvil...');
|
|
239
|
-
const res = await startAnvil({
|
|
240
|
-
l1BlockTime: opts.ethereumSlotDuration
|
|
241
|
-
});
|
|
242
|
-
const anvil = res.anvil;
|
|
243
|
-
aztecNodeConfig.l1RpcUrls = [
|
|
244
|
-
res.rpcUrl
|
|
245
|
-
];
|
|
246
|
-
// Deploy our L1 contracts.
|
|
247
|
-
logger.verbose('Deploying L1 contracts...');
|
|
248
237
|
const hdAccount = mnemonicToAccount(MNEMONIC, {
|
|
249
238
|
addressIndex: 0
|
|
250
239
|
});
|
|
@@ -262,7 +251,19 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
262
251
|
`0x${validatorPrivKey.toString('hex')}`
|
|
263
252
|
]);
|
|
264
253
|
aztecNodeConfig.coinbase = opts.coinbase ?? EthAddress.fromString(`${hdAccount.address}`);
|
|
254
|
+
logger.info(`Setting up environment with config`, aztecNodeConfig);
|
|
255
|
+
// Start anvil. We go via a wrapper script to ensure if the parent dies, anvil dies.
|
|
256
|
+
logger.verbose('Starting anvil...');
|
|
257
|
+
const res = await startAnvil({
|
|
258
|
+
l1BlockTime: opts.ethereumSlotDuration
|
|
259
|
+
});
|
|
260
|
+
const anvil = res.anvil;
|
|
261
|
+
aztecNodeConfig.l1RpcUrls = [
|
|
262
|
+
res.rpcUrl
|
|
263
|
+
];
|
|
265
264
|
const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls);
|
|
265
|
+
// Deploy our L1 contracts.
|
|
266
|
+
logger.verbose('Deploying L1 contracts...');
|
|
266
267
|
if (opts.l1StartTime) {
|
|
267
268
|
await ethCheatCodes.warp(opts.l1StartTime, {
|
|
268
269
|
resetBlockInterval: true
|
|
@@ -282,7 +283,6 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
282
283
|
});
|
|
283
284
|
aztecNodeConfig.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
|
|
284
285
|
aztecNodeConfig.rollupVersion = deployL1ContractsValues.rollupVersion;
|
|
285
|
-
aztecNodeConfig.l1PublishRetryIntervalMS = 100;
|
|
286
286
|
const dateProvider = new TestDateProvider();
|
|
287
287
|
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
288
288
|
await watcher.start();
|
|
@@ -318,6 +318,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
318
318
|
if (opts.startProverNode) {
|
|
319
319
|
logger.verbose('Creating and syncing a simulated prover node with p2p disabled...');
|
|
320
320
|
proverNode = await createAndSyncProverNode(`0x${proverNodePrivateKey.toString('hex')}`, aztecNodeConfig, {
|
|
321
|
+
...aztecNodeConfig.proverNodeConfig,
|
|
321
322
|
dataDirectory: path.join(directoryToCleanup, randomBytes(8).toString('hex')),
|
|
322
323
|
p2pEnabled: false
|
|
323
324
|
}, aztecNode, prefilledPublicData);
|
|
@@ -416,7 +417,9 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
416
417
|
const proverNodePrivateKey = getPrivateKeyFromIndex(2);
|
|
417
418
|
const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
|
|
418
419
|
proverNode = await createAndSyncProverNode(proverNodePrivateKeyHex, aztecNodeConfig, {
|
|
419
|
-
|
|
420
|
+
...aztecNodeConfig.proverNodeConfig,
|
|
421
|
+
dataDirectory: path.join(directoryToCleanup, randomBytes(8).toString('hex')),
|
|
422
|
+
p2pEnabled: false
|
|
420
423
|
}, aztecNode, prefilledPublicData);
|
|
421
424
|
}
|
|
422
425
|
logger.verbose('Creating pxe...');
|
package/dest/fixtures/utils.d.ts
CHANGED
|
@@ -192,5 +192,7 @@ export declare function setupSponsoredFPC(pxe: PXE): Promise<ContractInstanceWit
|
|
|
192
192
|
*/
|
|
193
193
|
export declare function registerSponsoredFPC(pxe: PXE): Promise<void>;
|
|
194
194
|
export declare function waitForProvenChain(node: AztecNode, targetBlock?: number, timeoutSec?: number, intervalSec?: number): Promise<void>;
|
|
195
|
-
export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${string}`, aztecNodeConfig: AztecNodeConfig, proverNodeConfig: Partial<ProverNodeConfig> & Pick<DataStoreConfig, 'dataDirectory'
|
|
195
|
+
export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${string}`, aztecNodeConfig: AztecNodeConfig, proverNodeConfig: Partial<ProverNodeConfig> & Pick<DataStoreConfig, 'dataDirectory'> & {
|
|
196
|
+
dontStart?: boolean;
|
|
197
|
+
}, aztecNode: AztecNode | undefined, prefilledPublicData?: PublicDataTreeLeaf[], proverNodeDeps?: ProverNodeDeps): Promise<ProverNode>;
|
|
196
198
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -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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"}
|
package/dest/fixtures/utils.js
CHANGED
|
@@ -328,7 +328,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
328
328
|
}, telemetry);
|
|
329
329
|
await blobSink.start();
|
|
330
330
|
config.blobSinkUrl = `http://localhost:${blobSinkPort}`;
|
|
331
|
-
logger.verbose('Creating and synching an aztec node
|
|
331
|
+
logger.verbose('Creating and synching an aztec node', config);
|
|
332
332
|
const acvmConfig = await getACVMConfig(logger);
|
|
333
333
|
if (acvmConfig) {
|
|
334
334
|
config.acvmWorkingDirectory = acvmConfig.acvmWorkingDirectory;
|
|
@@ -339,7 +339,6 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
339
339
|
config.bbBinaryPath = bbConfig.bbBinaryPath;
|
|
340
340
|
config.bbWorkingDirectory = bbConfig.bbWorkingDirectory;
|
|
341
341
|
}
|
|
342
|
-
config.l1PublishRetryIntervalMS = 100;
|
|
343
342
|
const blobSinkClient = createBlobSinkClient(config, {
|
|
344
343
|
logger: createLogger('node:blob-sink:client')
|
|
345
344
|
});
|
|
@@ -408,9 +407,8 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
408
407
|
const { pxe, teardown: pxeTeardown } = await setupPXEService(aztecNode, pxeOpts, logger);
|
|
409
408
|
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, pxe);
|
|
410
409
|
if (opts.aztecTargetCommitteeSize && opts.aztecTargetCommitteeSize > 0 || opts.initialValidators && opts.initialValidators.length > 0) {
|
|
411
|
-
// We need to advance
|
|
412
|
-
|
|
413
|
-
await cheatCodes.rollup.advanceToEpoch(2n, {
|
|
410
|
+
// We need to advance such that the committee is set up.
|
|
411
|
+
await cheatCodes.rollup.advanceToEpoch(await cheatCodes.rollup.getEpoch() + BigInt(config.lagInEpochs + 1), {
|
|
414
412
|
updateDateProvider: dateProvider
|
|
415
413
|
});
|
|
416
414
|
await cheatCodes.rollup.setupEpoch();
|
|
@@ -646,6 +644,7 @@ export function createAndSyncProverNode(proverNodePrivateKey, aztecNodeConfig, p
|
|
|
646
644
|
txGatheringTimeoutMs: 24_000,
|
|
647
645
|
proverNodeFailedEpochStore: undefined,
|
|
648
646
|
proverId: EthAddress.fromNumber(1),
|
|
647
|
+
proverNodeEpochProvingDelayMs: undefined,
|
|
649
648
|
...proverNodeConfig
|
|
650
649
|
};
|
|
651
650
|
const l1TxUtils = createDelayedL1TxUtils(aztecNodeConfig, proverNodePrivateKey, 'prover-node', proverNodeDeps.dateProvider);
|
|
@@ -660,7 +659,9 @@ export function createAndSyncProverNode(proverNodePrivateKey, aztecNodeConfig, p
|
|
|
660
659
|
getLogger().info(`Created and synced prover node`, {
|
|
661
660
|
publisherAddress: l1TxUtils.client.account.address
|
|
662
661
|
});
|
|
663
|
-
|
|
662
|
+
if (!proverNodeConfig.dontStart) {
|
|
663
|
+
await proverNode.start();
|
|
664
|
+
}
|
|
664
665
|
return proverNode;
|
|
665
666
|
});
|
|
666
667
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function createWeb3SignerKeystore(dir: string, ...privateKeys: string[]): Promise<void>;
|
|
2
|
+
export declare function refreshWeb3Signer(url: string): Promise<void>;
|
|
3
|
+
export declare function getWeb3SignerTestKeystoreDir(): string;
|
|
4
|
+
export declare function getWeb3SignerUrl(): string;
|
|
5
|
+
//# sourceMappingURL=web3signer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web3signer.d.ts","sourceRoot":"","sources":["../../src/fixtures/web3signer.ts"],"names":[],"mappings":"AAOA,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,iBAcnF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,iBAKlD;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAOrD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { sleep } from '@aztec/aztec.js';
|
|
2
|
+
import { randomBytes } from '@aztec/foundation/crypto';
|
|
3
|
+
import { mkdirSync } from 'node:fs';
|
|
4
|
+
import { writeFile } from 'node:fs/promises';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
export async function createWeb3SignerKeystore(dir, ...privateKeys) {
|
|
7
|
+
const yaml = privateKeys.map((pk)=>`\
|
|
8
|
+
type: file-raw
|
|
9
|
+
keyType: SECP256K1
|
|
10
|
+
privateKey: ${pk}`).join('\n---\n');
|
|
11
|
+
// NOTE: nodejs stdlib can only create temp directories, not temp files!
|
|
12
|
+
// this write uses wx (write-exclusive) so it'll throw if the file already exists
|
|
13
|
+
const path = join(dir, `keystore-${randomBytes(4).toString('hex')}.yaml`);
|
|
14
|
+
await writeFile(path, yaml, {
|
|
15
|
+
flag: 'wx'
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export async function refreshWeb3Signer(url) {
|
|
19
|
+
await fetch(new URL('reload', url), {
|
|
20
|
+
method: 'POST'
|
|
21
|
+
});
|
|
22
|
+
// give the service a chance to load up the new files
|
|
23
|
+
// 1s might not be enough if there are a lot of files to scan
|
|
24
|
+
await sleep(1000);
|
|
25
|
+
}
|
|
26
|
+
export function getWeb3SignerTestKeystoreDir() {
|
|
27
|
+
if (process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR) {
|
|
28
|
+
mkdirSync(process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR, {
|
|
29
|
+
recursive: true
|
|
30
|
+
});
|
|
31
|
+
return process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR;
|
|
32
|
+
} else {
|
|
33
|
+
throw new Error('Web3signer not running');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function getWeb3SignerUrl() {
|
|
37
|
+
if (process.env.WEB3_SIGNER_URL) {
|
|
38
|
+
return process.env.WEB3_SIGNER_URL;
|
|
39
|
+
} else {
|
|
40
|
+
throw new Error('Web3signer not running');
|
|
41
|
+
}
|
|
42
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/end-to-end",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.1.0-rc.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"inherits": [
|
|
@@ -25,41 +25,41 @@
|
|
|
25
25
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@aztec/accounts": "2.0.
|
|
29
|
-
"@aztec/archiver": "2.0.
|
|
30
|
-
"@aztec/aztec": "2.0.
|
|
31
|
-
"@aztec/aztec-node": "2.0.
|
|
32
|
-
"@aztec/aztec.js": "2.0.
|
|
33
|
-
"@aztec/bb-prover": "2.0.
|
|
34
|
-
"@aztec/blob-lib": "2.0.
|
|
35
|
-
"@aztec/blob-sink": "2.0.
|
|
36
|
-
"@aztec/bot": "2.0.
|
|
37
|
-
"@aztec/cli": "2.0.
|
|
38
|
-
"@aztec/constants": "2.0.
|
|
39
|
-
"@aztec/entrypoints": "2.0.
|
|
40
|
-
"@aztec/epoch-cache": "2.0.
|
|
41
|
-
"@aztec/ethereum": "2.0.
|
|
42
|
-
"@aztec/foundation": "2.0.
|
|
43
|
-
"@aztec/kv-store": "2.0.
|
|
44
|
-
"@aztec/l1-artifacts": "2.0.
|
|
45
|
-
"@aztec/merkle-tree": "2.0.
|
|
46
|
-
"@aztec/node-keystore": "2.0.
|
|
47
|
-
"@aztec/noir-contracts.js": "2.0.
|
|
48
|
-
"@aztec/noir-noirc_abi": "2.0.
|
|
49
|
-
"@aztec/noir-protocol-circuits-types": "2.0.
|
|
50
|
-
"@aztec/noir-test-contracts.js": "2.0.
|
|
51
|
-
"@aztec/p2p": "2.0.
|
|
52
|
-
"@aztec/protocol-contracts": "2.0.
|
|
53
|
-
"@aztec/prover-client": "2.0.
|
|
54
|
-
"@aztec/prover-node": "2.0.
|
|
55
|
-
"@aztec/pxe": "2.0.
|
|
56
|
-
"@aztec/sequencer-client": "2.0.
|
|
57
|
-
"@aztec/simulator": "2.0.
|
|
58
|
-
"@aztec/slasher": "2.0.
|
|
59
|
-
"@aztec/stdlib": "2.0.
|
|
60
|
-
"@aztec/telemetry-client": "2.0.
|
|
61
|
-
"@aztec/validator-client": "2.0.
|
|
62
|
-
"@aztec/world-state": "2.0.
|
|
28
|
+
"@aztec/accounts": "2.1.0-rc.2",
|
|
29
|
+
"@aztec/archiver": "2.1.0-rc.2",
|
|
30
|
+
"@aztec/aztec": "2.1.0-rc.2",
|
|
31
|
+
"@aztec/aztec-node": "2.1.0-rc.2",
|
|
32
|
+
"@aztec/aztec.js": "2.1.0-rc.2",
|
|
33
|
+
"@aztec/bb-prover": "2.1.0-rc.2",
|
|
34
|
+
"@aztec/blob-lib": "2.1.0-rc.2",
|
|
35
|
+
"@aztec/blob-sink": "2.1.0-rc.2",
|
|
36
|
+
"@aztec/bot": "2.1.0-rc.2",
|
|
37
|
+
"@aztec/cli": "2.1.0-rc.2",
|
|
38
|
+
"@aztec/constants": "2.1.0-rc.2",
|
|
39
|
+
"@aztec/entrypoints": "2.1.0-rc.2",
|
|
40
|
+
"@aztec/epoch-cache": "2.1.0-rc.2",
|
|
41
|
+
"@aztec/ethereum": "2.1.0-rc.2",
|
|
42
|
+
"@aztec/foundation": "2.1.0-rc.2",
|
|
43
|
+
"@aztec/kv-store": "2.1.0-rc.2",
|
|
44
|
+
"@aztec/l1-artifacts": "2.1.0-rc.2",
|
|
45
|
+
"@aztec/merkle-tree": "2.1.0-rc.2",
|
|
46
|
+
"@aztec/node-keystore": "2.1.0-rc.2",
|
|
47
|
+
"@aztec/noir-contracts.js": "2.1.0-rc.2",
|
|
48
|
+
"@aztec/noir-noirc_abi": "2.1.0-rc.2",
|
|
49
|
+
"@aztec/noir-protocol-circuits-types": "2.1.0-rc.2",
|
|
50
|
+
"@aztec/noir-test-contracts.js": "2.1.0-rc.2",
|
|
51
|
+
"@aztec/p2p": "2.1.0-rc.2",
|
|
52
|
+
"@aztec/protocol-contracts": "2.1.0-rc.2",
|
|
53
|
+
"@aztec/prover-client": "2.1.0-rc.2",
|
|
54
|
+
"@aztec/prover-node": "2.1.0-rc.2",
|
|
55
|
+
"@aztec/pxe": "2.1.0-rc.2",
|
|
56
|
+
"@aztec/sequencer-client": "2.1.0-rc.2",
|
|
57
|
+
"@aztec/simulator": "2.1.0-rc.2",
|
|
58
|
+
"@aztec/slasher": "2.1.0-rc.2",
|
|
59
|
+
"@aztec/stdlib": "2.1.0-rc.2",
|
|
60
|
+
"@aztec/telemetry-client": "2.1.0-rc.2",
|
|
61
|
+
"@aztec/validator-client": "2.1.0-rc.2",
|
|
62
|
+
"@aztec/world-state": "2.1.0-rc.2",
|
|
63
63
|
"@iarna/toml": "^2.2.5",
|
|
64
64
|
"@jest/globals": "^30.0.0",
|
|
65
65
|
"@noble/curves": "=1.0.0",
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"snappy": "^7.2.2",
|
|
92
92
|
"stream-browserify": "^3.0.0",
|
|
93
93
|
"string-argv": "^0.3.2",
|
|
94
|
-
"ts-loader": "^9.
|
|
94
|
+
"ts-loader": "^9.5.4",
|
|
95
95
|
"ts-node": "^10.9.1",
|
|
96
96
|
"tslib": "^2.4.0",
|
|
97
97
|
"typescript": "^5.3.3",
|
|
@@ -18,7 +18,7 @@ import { randomBytes } from '@aztec/foundation/crypto';
|
|
|
18
18
|
import { withLogNameSuffix } from '@aztec/foundation/log';
|
|
19
19
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
20
20
|
import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
21
|
-
import { ProverNode, ProverNodePublisher } from '@aztec/prover-node';
|
|
21
|
+
import { ProverNode, type ProverNodeConfig, ProverNodePublisher } from '@aztec/prover-node';
|
|
22
22
|
import type { TestProverNode } from '@aztec/prover-node/test';
|
|
23
23
|
import {
|
|
24
24
|
type SequencerClient,
|
|
@@ -128,9 +128,6 @@ export class EpochsTestContext {
|
|
|
128
128
|
// using the prover's eth address if the proverId is used for something in the rollup contract
|
|
129
129
|
// Use numeric EthAddress for deterministic prover id
|
|
130
130
|
proverId: EthAddress.fromNumber(1),
|
|
131
|
-
// This must be enough so that the tx from the prover is delayed properly,
|
|
132
|
-
// but not so much to hang the sequencer and timeout the teardown
|
|
133
|
-
txPropagationMaxQueryAttempts: opts.txPropagationMaxQueryAttempts ?? 12,
|
|
134
131
|
worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
|
|
135
132
|
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
136
133
|
slasherFlavor: 'none',
|
|
@@ -187,15 +184,20 @@ export class EpochsTestContext {
|
|
|
187
184
|
await this.context.teardown();
|
|
188
185
|
}
|
|
189
186
|
|
|
190
|
-
public async createProverNode() {
|
|
187
|
+
public async createProverNode(opts: { dontStart?: boolean } & Partial<ProverNodeConfig> = {}) {
|
|
191
188
|
this.logger.warn('Creating and syncing a simulated prover node...');
|
|
192
189
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
193
190
|
const suffix = (this.proverNodes.length + 1).toString();
|
|
191
|
+
const proverId = EthAddress.fromNumber(parseInt(suffix, 10));
|
|
194
192
|
const proverNode = await withLogNameSuffix(suffix, () =>
|
|
195
193
|
createAndSyncProverNode(
|
|
196
194
|
proverNodePrivateKey,
|
|
197
|
-
{ ...this.context.config, proverId
|
|
198
|
-
{
|
|
195
|
+
{ ...this.context.config, proverId },
|
|
196
|
+
{
|
|
197
|
+
dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')),
|
|
198
|
+
proverId,
|
|
199
|
+
...opts,
|
|
200
|
+
},
|
|
199
201
|
this.context.aztecNode,
|
|
200
202
|
undefined,
|
|
201
203
|
{ dateProvider: this.context.dateProvider },
|
|
@@ -427,7 +429,7 @@ export class EpochsTestContext {
|
|
|
427
429
|
sequencer.getSequencer().on(eventName, (args: Parameters<SequencerEvents[typeof eventName]>[0]) => {
|
|
428
430
|
const evt = makeEvent(i, eventName, args);
|
|
429
431
|
failEvents.push(evt);
|
|
430
|
-
this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, evt);
|
|
432
|
+
this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, undefined, evt);
|
|
431
433
|
});
|
|
432
434
|
});
|
|
433
435
|
});
|
|
@@ -157,9 +157,7 @@ export async function createKeyFile3(
|
|
|
157
157
|
schemaVersion: 1,
|
|
158
158
|
validators: [
|
|
159
159
|
{
|
|
160
|
-
attester:
|
|
161
|
-
address: validatorAddress.toChecksumString(),
|
|
162
|
-
},
|
|
160
|
+
attester: validatorAddress.toChecksumString(),
|
|
163
161
|
coinbase: coinbase.toChecksumString(),
|
|
164
162
|
publisher: [publisher1Key, publisher2Key],
|
|
165
163
|
feeRecipient: feeRecipient.toString(),
|
|
@@ -193,9 +191,7 @@ export async function createKeyFile4(
|
|
|
193
191
|
},
|
|
194
192
|
validators: [
|
|
195
193
|
{
|
|
196
|
-
attester:
|
|
197
|
-
address: validator1Address.toChecksumString(),
|
|
198
|
-
},
|
|
194
|
+
attester: validator1Address.toChecksumString(),
|
|
199
195
|
coinbase: coinbase1.toChecksumString(),
|
|
200
196
|
publisher: {
|
|
201
197
|
mnemonic: mnemonic,
|
|
@@ -206,9 +202,7 @@ export async function createKeyFile4(
|
|
|
206
202
|
feeRecipient: feeRecipient1.toString(),
|
|
207
203
|
},
|
|
208
204
|
{
|
|
209
|
-
attester:
|
|
210
|
-
address: validator2Address.toChecksumString(),
|
|
211
|
-
},
|
|
205
|
+
attester: validator2Address.toChecksumString(),
|
|
212
206
|
coinbase: coinbase2.toChecksumString(),
|
|
213
207
|
publisher: [publisher2Key, publisher3Key],
|
|
214
208
|
feeRecipient: feeRecipient2.toString(),
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
2
|
+
import { EthAddress } from '@aztec/aztec.js';
|
|
3
|
+
import { RollupContract } from '@aztec/ethereum';
|
|
4
|
+
|
|
5
|
+
import fs from 'fs';
|
|
6
|
+
import 'jest-extended';
|
|
7
|
+
import os from 'os';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
|
|
10
|
+
import { createNodes } from '../fixtures/setup_p2p_test.js';
|
|
11
|
+
import { P2PNetworkTest } from './p2p_network.js';
|
|
12
|
+
|
|
13
|
+
const NUM_NODES = 6;
|
|
14
|
+
const NUM_VALIDATORS = NUM_NODES;
|
|
15
|
+
const COMMITTEE_SIZE = NUM_VALIDATORS;
|
|
16
|
+
const SLASHING_QUORUM = 3;
|
|
17
|
+
const EPOCH_DURATION = 2;
|
|
18
|
+
const SLASHING_ROUND_SIZE_IN_EPOCHS = 2;
|
|
19
|
+
const BOOT_NODE_UDP_PORT = 4500;
|
|
20
|
+
const ETHEREUM_SLOT_DURATION = 4;
|
|
21
|
+
const AZTEC_SLOT_DURATION = 8;
|
|
22
|
+
const SLASHING_UNIT = BigInt(1e18);
|
|
23
|
+
const SLASHING_AMOUNT = SLASHING_UNIT * 3n;
|
|
24
|
+
|
|
25
|
+
// How many epochs it may take to set everything up, so we dont slash during this period
|
|
26
|
+
const SETUP_EPOCH_DURATION = 5;
|
|
27
|
+
|
|
28
|
+
export class P2PInactivityTest {
|
|
29
|
+
public nodes!: AztecNodeService[];
|
|
30
|
+
public activeNodes!: AztecNodeService[];
|
|
31
|
+
public inactiveNodes!: AztecNodeService[];
|
|
32
|
+
|
|
33
|
+
public rollup!: RollupContract;
|
|
34
|
+
public offlineValidators!: EthAddress[];
|
|
35
|
+
|
|
36
|
+
private dataDir: string;
|
|
37
|
+
private inactiveNodeCount: number;
|
|
38
|
+
private keepInitialNode: boolean;
|
|
39
|
+
|
|
40
|
+
constructor(
|
|
41
|
+
public readonly test: P2PNetworkTest,
|
|
42
|
+
opts: { inactiveNodeCount: number; keepInitialNode?: boolean },
|
|
43
|
+
) {
|
|
44
|
+
this.dataDir = fs.mkdtempSync(path.join(os.tmpdir(), test.testName));
|
|
45
|
+
this.inactiveNodeCount = opts.inactiveNodeCount;
|
|
46
|
+
this.keepInitialNode = opts.keepInitialNode ?? false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static async create(
|
|
50
|
+
testName: string,
|
|
51
|
+
opts: { slashInactivityConsecutiveEpochThreshold: number; inactiveNodeCount: number; keepInitialNode?: boolean },
|
|
52
|
+
) {
|
|
53
|
+
const test = await P2PNetworkTest.create({
|
|
54
|
+
testName,
|
|
55
|
+
numberOfNodes: 0,
|
|
56
|
+
numberOfValidators: NUM_VALIDATORS,
|
|
57
|
+
basePort: BOOT_NODE_UDP_PORT,
|
|
58
|
+
startProverNode: true,
|
|
59
|
+
initialConfig: {
|
|
60
|
+
proverNodeConfig: { proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000 },
|
|
61
|
+
aztecTargetCommitteeSize: COMMITTEE_SIZE,
|
|
62
|
+
aztecSlotDuration: AZTEC_SLOT_DURATION,
|
|
63
|
+
ethereumSlotDuration: ETHEREUM_SLOT_DURATION,
|
|
64
|
+
aztecProofSubmissionEpochs: 1024, // effectively do not reorg
|
|
65
|
+
listenAddress: '127.0.0.1',
|
|
66
|
+
minTxsPerBlock: 0,
|
|
67
|
+
aztecEpochDuration: EPOCH_DURATION,
|
|
68
|
+
validatorReexecute: false,
|
|
69
|
+
sentinelEnabled: true,
|
|
70
|
+
slashingQuorum: SLASHING_QUORUM,
|
|
71
|
+
slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
|
|
72
|
+
slashInactivityTargetPercentage: 0.8,
|
|
73
|
+
slashGracePeriodL2Slots: SETUP_EPOCH_DURATION * EPOCH_DURATION, // do not slash during setup
|
|
74
|
+
slashAmountSmall: SLASHING_UNIT,
|
|
75
|
+
slashAmountMedium: SLASHING_UNIT * 2n,
|
|
76
|
+
slashAmountLarge: SLASHING_UNIT * 3n,
|
|
77
|
+
...opts,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
return new P2PInactivityTest(test, opts);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public async setup() {
|
|
84
|
+
await this.test.applyBaseSnapshots();
|
|
85
|
+
await this.test.setup();
|
|
86
|
+
|
|
87
|
+
// Set slashing penalties for inactivity
|
|
88
|
+
const { rollup } = await this.test.getContracts();
|
|
89
|
+
const [activationThreshold, ejectionThreshold, localEjectionThreshold] = await Promise.all([
|
|
90
|
+
rollup.getActivationThreshold(),
|
|
91
|
+
rollup.getEjectionThreshold(),
|
|
92
|
+
rollup.getLocalEjectionThreshold(),
|
|
93
|
+
]);
|
|
94
|
+
const biggestEjection = ejectionThreshold > localEjectionThreshold ? ejectionThreshold : localEjectionThreshold;
|
|
95
|
+
expect(activationThreshold - SLASHING_AMOUNT).toBeLessThan(biggestEjection);
|
|
96
|
+
this.test.ctx.aztecNodeConfig.slashInactivityPenalty = SLASHING_AMOUNT;
|
|
97
|
+
this.rollup = rollup;
|
|
98
|
+
|
|
99
|
+
if (!this.keepInitialNode) {
|
|
100
|
+
await this.test.ctx.aztecNode.stop();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Create all active nodes
|
|
104
|
+
this.activeNodes = await createNodes(
|
|
105
|
+
this.test.ctx.aztecNodeConfig,
|
|
106
|
+
this.test.ctx.dateProvider,
|
|
107
|
+
this.test.bootstrapNodeEnr,
|
|
108
|
+
NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode),
|
|
109
|
+
BOOT_NODE_UDP_PORT,
|
|
110
|
+
this.test.prefilledPublicData,
|
|
111
|
+
this.dataDir,
|
|
112
|
+
undefined,
|
|
113
|
+
Number(this.keepInitialNode),
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
// And the ones with an initially disabled sequencer
|
|
117
|
+
const inactiveConfig = { ...this.test.ctx.aztecNodeConfig, dontStartSequencer: true };
|
|
118
|
+
this.inactiveNodes = await createNodes(
|
|
119
|
+
inactiveConfig,
|
|
120
|
+
this.test.ctx.dateProvider,
|
|
121
|
+
this.test.bootstrapNodeEnr,
|
|
122
|
+
this.inactiveNodeCount,
|
|
123
|
+
BOOT_NODE_UDP_PORT,
|
|
124
|
+
this.test.prefilledPublicData,
|
|
125
|
+
this.dataDir,
|
|
126
|
+
undefined,
|
|
127
|
+
NUM_NODES - this.inactiveNodeCount,
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
this.nodes = [
|
|
131
|
+
...(this.keepInitialNode ? [this.test.ctx.aztecNode] : []),
|
|
132
|
+
...this.activeNodes,
|
|
133
|
+
...this.inactiveNodes,
|
|
134
|
+
];
|
|
135
|
+
|
|
136
|
+
if (this.nodes.length !== NUM_NODES) {
|
|
137
|
+
throw new Error(`Expected ${NUM_NODES} nodes but got ${this.nodes.length}`);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
this.offlineValidators = this.test.validators
|
|
141
|
+
.slice(this.test.validators.length - this.inactiveNodeCount)
|
|
142
|
+
.map(a => a.attester);
|
|
143
|
+
|
|
144
|
+
this.test.logger.warn(`Setup complete. Offline validators are ${this.offlineValidators.join(', ')}.`, {
|
|
145
|
+
validators: this.test.validators,
|
|
146
|
+
offlineValidators: this.offlineValidators,
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
this.test.logger.warn(`Advancing to epoch ${SETUP_EPOCH_DURATION + 1} to start slashing`);
|
|
150
|
+
await this.test.ctx.cheatCodes.rollup.advanceToEpoch(SETUP_EPOCH_DURATION + 1);
|
|
151
|
+
|
|
152
|
+
return this;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
public async teardown() {
|
|
156
|
+
await this.test.stopNodes(this.nodes);
|
|
157
|
+
await this.test.teardown();
|
|
158
|
+
for (let i = 0; i < NUM_NODES; i++) {
|
|
159
|
+
fs.rmSync(`${this.dataDir}-${i}`, { recursive: true, force: true, maxRetries: 3 });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
public get ctx() {
|
|
164
|
+
return this.test.ctx;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
public get logger() {
|
|
168
|
+
return this.test.logger;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
public get slashingAmount() {
|
|
172
|
+
return SLASHING_AMOUNT;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
createSnapshotManager,
|
|
44
44
|
deployAccounts,
|
|
45
45
|
} from '../fixtures/snapshot_manager.js';
|
|
46
|
-
import { getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
46
|
+
import { type SetupOptions, getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
47
47
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
48
48
|
|
|
49
49
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
@@ -82,11 +82,11 @@ export class P2PNetworkTest {
|
|
|
82
82
|
public bootstrapNode?: BootstrapNode;
|
|
83
83
|
|
|
84
84
|
constructor(
|
|
85
|
-
testName: string,
|
|
85
|
+
public readonly testName: string,
|
|
86
86
|
public bootstrapNodeEnr: string,
|
|
87
87
|
public bootNodePort: number,
|
|
88
88
|
public numberOfValidators: number,
|
|
89
|
-
initialValidatorConfig:
|
|
89
|
+
initialValidatorConfig: SetupOptions,
|
|
90
90
|
public numberOfNodes = 0,
|
|
91
91
|
// If set enable metrics collection
|
|
92
92
|
private metricsPort?: number,
|
|
@@ -162,7 +162,7 @@ export class P2PNetworkTest {
|
|
|
162
162
|
numberOfValidators: number;
|
|
163
163
|
basePort?: number;
|
|
164
164
|
metricsPort?: number;
|
|
165
|
-
initialConfig?:
|
|
165
|
+
initialConfig?: SetupOptions;
|
|
166
166
|
startProverNode?: boolean;
|
|
167
167
|
mockZkPassportVerifier?: boolean;
|
|
168
168
|
}) {
|
|
@@ -260,7 +260,7 @@ export class P2PNetworkTest {
|
|
|
260
260
|
client: deployL1ContractsValues.l1Client,
|
|
261
261
|
});
|
|
262
262
|
|
|
263
|
-
const stakeNeeded =
|
|
263
|
+
const stakeNeeded = (await rollup.read.getActivationThreshold()) * BigInt(this.numberOfValidators);
|
|
264
264
|
await Promise.all(
|
|
265
265
|
[await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
|
|
266
266
|
deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
|
|
@@ -291,14 +291,15 @@ export class P2PNetworkTest {
|
|
|
291
291
|
hash: await multiAdder.write.addValidators([validatorTuples]),
|
|
292
292
|
});
|
|
293
293
|
|
|
294
|
-
|
|
294
|
+
await cheatCodes.rollup.advanceToEpoch(
|
|
295
|
+
(await cheatCodes.rollup.getEpoch()) + (await rollup.read.getLagInEpochs()) + 1n,
|
|
296
|
+
{
|
|
297
|
+
updateDateProvider: dateProvider,
|
|
298
|
+
},
|
|
299
|
+
);
|
|
295
300
|
|
|
296
301
|
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
297
302
|
await this._sendDummyTx(deployL1ContractsValues.l1Client);
|
|
298
|
-
|
|
299
|
-
// Set the system time in the node, only after we have warped the time and waited for a block
|
|
300
|
-
// Time is only set in the NEXT block
|
|
301
|
-
dateProvider.setTime(Number(timestamp) * 1000);
|
|
302
303
|
},
|
|
303
304
|
);
|
|
304
305
|
}
|