@aztec/end-to-end 0.0.1-commit.8f9871590 → 0.0.1-commit.934299a21
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 +9 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +53 -34
- package/dest/e2e_fees/fees_test.js +1 -1
- package/dest/e2e_p2p/p2p_network.d.ts +1 -1
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +16 -2
- package/dest/e2e_p2p/reqresp/utils.d.ts +3 -3
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
- package/dest/e2e_p2p/reqresp/utils.js +32 -8
- package/dest/fixtures/e2e_prover_test.d.ts +3 -3
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +27 -34
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +5 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +6 -0
- package/dest/fixtures/setup.d.ts +25 -8
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +46 -77
- package/dest/fixtures/setup_p2p_test.d.ts +6 -3
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +12 -9
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +3 -2
- package/dest/shared/jest_setup.js +10 -1
- package/dest/shared/submit-transactions.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.d.ts +8 -1
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +28 -0
- package/dest/spartan/utils/bot.d.ts +3 -2
- package/dest/spartan/utils/bot.d.ts.map +1 -1
- package/dest/spartan/utils/bot.js +2 -1
- package/dest/spartan/utils/index.d.ts +2 -2
- package/dest/spartan/utils/index.d.ts.map +1 -1
- package/dest/spartan/utils/index.js +1 -1
- package/dest/spartan/utils/k8s.d.ts +3 -1
- package/dest/spartan/utils/k8s.d.ts.map +1 -1
- package/dest/spartan/utils/k8s.js +6 -0
- package/dest/spartan/utils/nodes.d.ts +4 -5
- package/dest/spartan/utils/nodes.d.ts.map +1 -1
- package/dest/spartan/utils/nodes.js +8 -8
- package/dest/test-wallet/test_wallet.js +1 -1
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +48 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +151 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +40 -40
- package/src/e2e_epochs/epochs_test.ts +66 -66
- package/src/e2e_fees/fees_test.ts +1 -1
- package/src/e2e_p2p/p2p_network.ts +24 -2
- package/src/e2e_p2p/reqresp/utils.ts +36 -8
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +25 -35
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +10 -0
- package/src/fixtures/setup.ts +62 -105
- package/src/fixtures/setup_p2p_test.ts +9 -17
- package/src/fixtures/token_utils.ts +2 -1
- package/src/shared/jest_setup.ts +16 -1
- package/src/shared/submit-transactions.ts +4 -1
- package/src/spartan/setup_test_wallets.ts +55 -3
- package/src/spartan/utils/bot.ts +3 -0
- package/src/spartan/utils/index.ts +1 -0
- package/src/spartan/utils/k8s.ts +8 -0
- package/src/spartan/utils/nodes.ts +14 -9
- package/src/test-wallet/test_wallet.ts +1 -1
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +213 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
|
@@ -4,18 +4,19 @@ import type { Logger } from '@aztec/aztec.js/log';
|
|
|
4
4
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
5
5
|
import { EpochCache } from '@aztec/epoch-cache';
|
|
6
6
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
7
|
-
import {
|
|
7
|
+
import { Delayer } from '@aztec/ethereum/l1-tx-utils';
|
|
8
|
+
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
8
9
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
9
10
|
import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
10
11
|
import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
11
12
|
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
12
|
-
import {
|
|
13
|
+
import type { ProverNodeConfig } from '@aztec/prover-node';
|
|
13
14
|
import type { PXEConfig } from '@aztec/pxe/config';
|
|
14
15
|
import { type SequencerClient, type SequencerEvents } from '@aztec/sequencer-client';
|
|
15
16
|
import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
|
|
16
17
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
17
18
|
import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
|
|
18
|
-
export declare const
|
|
19
|
+
export declare const WORLD_STATE_CHECKPOINT_HISTORY = 2;
|
|
19
20
|
export declare const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
|
|
20
21
|
export declare const ARCHIVER_POLL_INTERVAL = 50;
|
|
21
22
|
export declare const DEFAULT_L1_BLOCK_TIME: number;
|
|
@@ -46,7 +47,7 @@ export declare class EpochsTestContext {
|
|
|
46
47
|
epochCache: EpochCache;
|
|
47
48
|
proverDelayer: Delayer;
|
|
48
49
|
sequencerDelayer: Delayer;
|
|
49
|
-
proverNodes:
|
|
50
|
+
proverNodes: AztecNodeService[];
|
|
50
51
|
nodes: AztecNodeService[];
|
|
51
52
|
epochDuration: number;
|
|
52
53
|
L1_BLOCK_TIME_IN_S: number;
|
|
@@ -63,10 +64,9 @@ export declare class EpochsTestContext {
|
|
|
63
64
|
teardown(): Promise<void>;
|
|
64
65
|
createProverNode(opts?: {
|
|
65
66
|
dontStart?: boolean;
|
|
66
|
-
} & Partial<ProverNodeConfig>): Promise<
|
|
67
|
+
} & Partial<ProverNodeConfig>): Promise<AztecNodeService>;
|
|
67
68
|
createNonValidatorNode(opts?: Partial<AztecNodeConfig>): Promise<AztecNodeService>;
|
|
68
69
|
createValidatorNode(privateKeys: `0x${string}`[], opts?: Partial<AztecNodeConfig> & {
|
|
69
|
-
txDelayerMaxInclusionTimeIntoSlot?: number;
|
|
70
70
|
dontStartSequencer?: boolean;
|
|
71
71
|
}): Promise<AztecNodeService>;
|
|
72
72
|
private createNode;
|
|
@@ -92,9 +92,11 @@ export declare class EpochsTestContext {
|
|
|
92
92
|
}>;
|
|
93
93
|
/** Verifies whether the given block number is found on the aztec node. */
|
|
94
94
|
verifyHistoricBlock(blockNumber: BlockParameter, expectedSuccess: boolean): Promise<void>;
|
|
95
|
+
/** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */
|
|
96
|
+
assertMultipleBlocksPerSlot(targetBlockCount: number): Promise<void>;
|
|
95
97
|
watchSequencerEvents(sequencers: SequencerClient[], getMetadata?: (i: number) => Record<string, any>): {
|
|
96
98
|
failEvents: TrackedSequencerEvent[];
|
|
97
99
|
stateChanges: TrackedSequencerEvent[];
|
|
98
100
|
};
|
|
99
101
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hzX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZXBvY2hzL2Vwb2Noc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQThELE1BQU0sNkJBQTZCLENBQUM7QUFDbEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbEUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxlQUFlLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFDckcsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFC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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAA8D,MAAM,6BAA6B,CAAC;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAe,MAAM,iCAAiC,CAAC;AAM7F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAkB,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,KAAK,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,KAAK,iBAAiB,EAAuC,MAAM,6BAA6B,CAAC;AAO1G,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAIlB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,qBAAqB,QAA0B,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;KACjC,CAAC,IAAI,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAChE,IAAI,EAAE,CAAC,CAAC;QACR,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,UAAU,CAAC;KACvB;CACF,CAAC,MAAM,eAAe,CAAC,CAAC;AAEzB;;;;GAIG;AACH,qBAAa,iBAAiB;IACrB,OAAO,EAAG,eAAe,CAAC;IAC1B,QAAQ,EAAG,wBAAwB,CAAC;IACpC,MAAM,EAAG,cAAc,CAAC;IACxB,SAAS,EAAG,iBAAiB,CAAC;IAC9B,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAG,YAAY,CAAC;IACvB,UAAU,EAAG,UAAU,CAAC;IACxB,aAAa,EAAG,OAAO,CAAC;IACxB,gBAAgB,EAAG,OAAO,CAAC;IAE3B,WAAW,EAAE,gBAAgB,EAAE,CAAM;IACrC,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAE/B,aAAa,EAAG,MAAM,CAAC;IAEvB,kBAAkB,EAAG,MAAM,CAAC;IAC5B,qBAAqB,EAAG,MAAM,CAAC;IAEtC,OAAoB,KAAK,CAAC,IAAI,GAAE,cAAmB,8BAIlD;IAED,OAAc,gBAAgB,CAAC,IAAI,GAAE,cAAmB;;;;;;MAgBvD;IAEY,KAAK,CAAC,IAAI,GAAE,cAAmB,iBA8E3C;IAEY,QAAQ,kBAKpB;IAEY,gBAAgB,CAAC,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAM,6BAiC3F;IAEM,sBAAsB,CAAC,IAAI,GAAE,OAAO,CAAC,eAAe,CAAM,6BAGhE;IAEM,mBAAmB,CACxB,WAAW,EAAE,KAAK,MAAM,EAAE,EAAE,EAC5B,IAAI,GAAE,OAAO,CAAC,eAAe,CAAC,GAAG;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAO,6BAIvE;YAEa,UAAU;IAiCxB,OAAO,CAAC,iBAAiB;IAKzB,0FAA0F;IAC7E,oBAAoB,CAAC,KAAK,EAAE,MAAM,mBAU9C;IAED,wDAAwD;IAC3C,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,SAAM,iBAO7E;IAED,mEAAmE;IACtD,+BAA+B,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,SAAM,6BAQnF;IAED,kFAAkF;IACrE,wCAAwC,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,iBAWjF;IAED,mEAAmE;IACtD,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,iBAkBjG;IAED,sDAAsD;IACzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,KAAU,yBAU/D;IAED,sDAAsD;IACzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,KAAU,yBAU/D;IAED,0GAA0G;IAC7F,cAAc;;;OAU1B;IAED,0EAA0E;IAC7D,mBAAmB,CAAC,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,iBASrF;IAED,8FAA8F;IACjF,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,iBA6BhE;IAEM,oBAAoB,CACzB,UAAU,EAAE,eAAe,EAAE,EAC7B,WAAW,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAc;;;MAgD7D;CACF"}
|
|
@@ -7,8 +7,9 @@ import { EpochCache } from '@aztec/epoch-cache';
|
|
|
7
7
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
8
8
|
import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
|
|
9
9
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { createDelayer, waitUntilL1Timestamp, wrapClientWithDelayer } from '@aztec/ethereum/l1-tx-utils';
|
|
11
|
+
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
12
|
+
import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
12
13
|
import { SecretValue } from '@aztec/foundation/config';
|
|
13
14
|
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
15
|
import { withLoggerBindings } from '@aztec/foundation/log/server';
|
|
@@ -24,7 +25,7 @@ import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
|
24
25
|
import { join } from 'path';
|
|
25
26
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
26
27
|
import { createAndSyncProverNode, getPrivateKeyFromIndex, setup } from '../fixtures/utils.js';
|
|
27
|
-
export const
|
|
28
|
+
export const WORLD_STATE_CHECKPOINT_HISTORY = 2;
|
|
28
29
|
export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
|
|
29
30
|
export const ARCHIVER_POLL_INTERVAL = 50;
|
|
30
31
|
export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
@@ -91,7 +92,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
91
92
|
// using the prover's eth address if the proverId is used for something in the rollup contract
|
|
92
93
|
// Use numeric EthAddress for deterministic prover id
|
|
93
94
|
proverId: EthAddress.fromNumber(1),
|
|
94
|
-
|
|
95
|
+
worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
|
|
95
96
|
exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
|
|
96
97
|
slasherFlavor: 'none',
|
|
97
98
|
l1PublishingTime,
|
|
@@ -117,10 +118,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
117
118
|
});
|
|
118
119
|
// Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
|
|
119
120
|
this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this.proverDelayer = context.proverNode ? context.proverNode.publisher.l1TxUtils.delayer : undefined;
|
|
123
|
-
this.sequencerDelayer = context.sequencer ? context.sequencer.sequencer.publisher.l1TxUtils.delayer : undefined;
|
|
121
|
+
this.proverDelayer = context.proverDelayer;
|
|
122
|
+
this.sequencerDelayer = context.sequencerDelayer;
|
|
124
123
|
if (context.proverNode && !this.proverDelayer || context.sequencer && !this.sequencerDelayer) {
|
|
125
124
|
throw new Error(`Could not find prover or sequencer delayer`);
|
|
126
125
|
}
|
|
@@ -148,21 +147,27 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
148
147
|
const proverNodePrivateKey = this.getNextPrivateKey();
|
|
149
148
|
const proverIndex = this.proverNodes.length + 1;
|
|
150
149
|
const { mockGossipSubNetwork } = this.context;
|
|
151
|
-
const proverNode = await withLoggerBindings({
|
|
150
|
+
const { proverNode } = await withLoggerBindings({
|
|
152
151
|
actor: `prover-${proverIndex}`
|
|
153
152
|
}, ()=>createAndSyncProverNode(proverNodePrivateKey, {
|
|
154
153
|
...this.context.config,
|
|
155
|
-
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined
|
|
156
|
-
}, {
|
|
157
|
-
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
|
|
154
|
+
p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined,
|
|
158
155
|
proverId: EthAddress.fromNumber(proverIndex),
|
|
159
156
|
dontStart: opts.dontStart,
|
|
160
157
|
...opts
|
|
161
|
-
},
|
|
158
|
+
}, {
|
|
159
|
+
dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex'))
|
|
160
|
+
}, {
|
|
162
161
|
dateProvider: this.context.dateProvider,
|
|
163
|
-
p2pClientDeps:
|
|
164
|
-
p2pServiceFactory: getMockPubSubP2PServiceFactory(mockGossipSubNetwork)
|
|
165
|
-
|
|
162
|
+
p2pClientDeps: {
|
|
163
|
+
p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
|
|
164
|
+
rpcTxProviders: [
|
|
165
|
+
this.context.aztecNode
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
}, {
|
|
169
|
+
prefilledPublicData: this.context.prefilledPublicData ?? [],
|
|
170
|
+
dontStart: opts.dontStart
|
|
166
171
|
}));
|
|
167
172
|
this.proverNodes.push(proverNode);
|
|
168
173
|
return proverNode;
|
|
@@ -209,20 +214,6 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
209
214
|
prefilledPublicData: this.context.prefilledPublicData,
|
|
210
215
|
...opts
|
|
211
216
|
}));
|
|
212
|
-
// REFACTOR: We're getting too much into the internals of the sequencer here.
|
|
213
|
-
// We should have a single method for constructing an aztec node that returns a TestAztecNodeService
|
|
214
|
-
// which directly exposes the delayer and sets any test config.
|
|
215
|
-
if (opts.txDelayerMaxInclusionTimeIntoSlot !== undefined) {
|
|
216
|
-
this.logger.info(`Setting tx delayer max inclusion time into slot to ${opts.txDelayerMaxInclusionTimeIntoSlot} seconds`);
|
|
217
|
-
// Here we reach into the sequencer and hook in a tx delayer. The problem is that the sequencer's l1 utils only uses a public client, not a wallet.
|
|
218
|
-
// The delayer needs a wallet (a client that can sign), so we have to create one here.
|
|
219
|
-
const l1Client = createExtendedL1Client(resolvedConfig.l1RpcUrls, resolvedConfig.publisherPrivateKeys[0].getValue());
|
|
220
|
-
const sequencer = node.getSequencer();
|
|
221
|
-
const publisher = sequencer.sequencer.publisher;
|
|
222
|
-
const delayed = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, this.L1_BLOCK_TIME_IN_S, l1Client);
|
|
223
|
-
delayed.delayer.setMaxInclusionTimeIntoSlot(opts.txDelayerMaxInclusionTimeIntoSlot);
|
|
224
|
-
publisher.l1TxUtils = delayed;
|
|
225
|
-
}
|
|
226
217
|
this.nodes.push(node);
|
|
227
218
|
return node;
|
|
228
219
|
}
|
|
@@ -250,7 +241,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
250
241
|
this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
|
|
251
242
|
oneSlotBefore
|
|
252
243
|
});
|
|
253
|
-
|
|
244
|
+
// Use a timeout that accounts for the full proof submission window
|
|
245
|
+
const proofSubmissionWindowDuration = this.constants.proofSubmissionEpochs * this.epochDuration * this.L2_SLOT_DURATION_IN_S;
|
|
246
|
+
await waitUntilL1Timestamp(this.l1Client, oneSlotBefore, undefined, proofSubmissionWindowDuration * 2);
|
|
254
247
|
}
|
|
255
248
|
/** Waits for the aztec node to sync to the target block number. */ async waitForNodeToSync(blockNumber, type) {
|
|
256
249
|
const waitTime = ARCHIVER_POLL_INTERVAL + WORLD_STATE_BLOCK_CHECK_INTERVAL;
|
|
@@ -299,11 +292,13 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
299
292
|
return TestContract.at(instance.address, wallet);
|
|
300
293
|
}
|
|
301
294
|
/** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
|
|
302
|
-
const
|
|
295
|
+
const rawClient = createExtendedL1Client([
|
|
303
296
|
...this.l1Client.chain.rpcUrls.default.http
|
|
304
|
-
], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain)
|
|
297
|
+
], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain);
|
|
298
|
+
const delayer = createDelayer(this.context.dateProvider, {
|
|
305
299
|
ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S
|
|
306
|
-
});
|
|
300
|
+
}, {});
|
|
301
|
+
const client = wrapClientWithDelayer(rawClient, delayer);
|
|
307
302
|
expect(await client.getBalance({
|
|
308
303
|
address: client.account.address
|
|
309
304
|
})).toBeGreaterThan(0n);
|
|
@@ -321,6 +316,30 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
|
|
|
321
316
|
]).then((_)=>true).catch((_)=>false);
|
|
322
317
|
expect(result).toBe(expectedSuccess);
|
|
323
318
|
}
|
|
319
|
+
/** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */ async assertMultipleBlocksPerSlot(targetBlockCount) {
|
|
320
|
+
const archiver = this.context.aztecNode.getBlockSource();
|
|
321
|
+
const checkpoints = await archiver.getCheckpoints(CheckpointNumber(1), 50);
|
|
322
|
+
this.logger.warn(`Retrieved ${checkpoints.length} checkpoints from archiver`, {
|
|
323
|
+
checkpoints: checkpoints.map((pc)=>pc.checkpoint.getStats())
|
|
324
|
+
});
|
|
325
|
+
let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
|
|
326
|
+
let targetFound = false;
|
|
327
|
+
for (const checkpoint of checkpoints){
|
|
328
|
+
const blockCount = checkpoint.checkpoint.blocks.length;
|
|
329
|
+
targetFound = targetFound || blockCount >= targetBlockCount;
|
|
330
|
+
this.logger.verbose(`Checkpoint ${checkpoint.checkpoint.number} has ${blockCount} blocks`, {
|
|
331
|
+
checkpoint: checkpoint.checkpoint.getStats()
|
|
332
|
+
});
|
|
333
|
+
for(let i = 0; i < blockCount; i++){
|
|
334
|
+
const block = checkpoint.checkpoint.blocks[i];
|
|
335
|
+
expect(block.indexWithinCheckpoint).toBe(i);
|
|
336
|
+
expect(block.checkpointNumber).toBe(checkpoint.checkpoint.number);
|
|
337
|
+
expect(block.number).toBe(expectedBlockNumber);
|
|
338
|
+
expectedBlockNumber++;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
expect(targetFound).toBe(true);
|
|
342
|
+
}
|
|
324
343
|
watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
|
|
325
344
|
const stateChanges = [];
|
|
326
345
|
const failEvents = [];
|
|
@@ -216,7 +216,7 @@ import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_h
|
|
|
216
216
|
const block = await this.aztecNode.getBlock(blockNumber);
|
|
217
217
|
// @todo @lherskind As we deal with #13601
|
|
218
218
|
// Right now the value is from `FeeLib.sol`
|
|
219
|
-
const L1_GAS_PER_EPOCH_VERIFIED =
|
|
219
|
+
const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
|
|
220
220
|
// We round up
|
|
221
221
|
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
222
222
|
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
@@ -312,4 +312,4 @@ export declare class P2PNetworkTest {
|
|
|
312
312
|
slashFactory: SlashFactoryContract;
|
|
313
313
|
}>;
|
|
314
314
|
}
|
|
315
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX25ldHdvcmsuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfcDJwL3AycF9uZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBYyxNQUFNLDJCQUEyQixDQUFDO0FBR3JFLE9BQU8sRUFDTCxLQUFLLDhCQUE4QixFQUVuQyxjQUFjLEVBQ2QsS0FBSyw2QkFBNkIsRUFDbkMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQTRCLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xGLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQWEsVUFBVSxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSzlELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUczRSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBQ3BCLEtBQUssWUFBWSxFQU1sQixNQUFNLHNCQUFzQixDQUFDO0FBTzlCLE9BQU8sS0FBSyxFQUFF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAc,MAAM,2BAA2B,CAAC;AAGrE,OAAO,EACL,KAAK,8BAA8B,EAEnC,cAAc,EACd,KAAK,6BAA6B,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAI1E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAA4B,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGlF,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAa,UAAU,EAAgB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"p2p_network.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/p2p_network.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
|
4
4
|
import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
6
6
|
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
7
|
-
import {
|
|
7
|
+
import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
8
8
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
9
9
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
10
10
|
import { SecretValue } from '@aztec/foundation/config';
|
|
@@ -15,6 +15,7 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
|
15
15
|
import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
|
|
16
16
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
17
17
|
import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
18
|
+
import { TopicType } from '@aztec/stdlib/p2p';
|
|
18
19
|
import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
|
|
19
20
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
20
21
|
import getPort from 'get-port';
|
|
@@ -238,7 +239,7 @@ export class P2PNetworkTest {
|
|
|
238
239
|
return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
|
|
239
240
|
}
|
|
240
241
|
async _sendDummyTx(l1Client) {
|
|
241
|
-
const l1TxUtils =
|
|
242
|
+
const l1TxUtils = createL1TxUtils(l1Client);
|
|
242
243
|
return await l1TxUtils.sendAndMonitorTransaction({
|
|
243
244
|
to: l1Client.account.address,
|
|
244
245
|
value: 1n
|
|
@@ -300,6 +301,19 @@ export class P2PNetworkTest {
|
|
|
300
301
|
}, `Node ${index} to connect to at least ${minPeerCount} peers`, timeoutSeconds, checkIntervalSeconds);
|
|
301
302
|
}));
|
|
302
303
|
this.logger.warn('All nodes connected to P2P mesh');
|
|
304
|
+
// Wait for GossipSub mesh to form for the tx topic.
|
|
305
|
+
// We only require at least 1 mesh peer per node because GossipSub
|
|
306
|
+
// stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
|
|
307
|
+
this.logger.warn('Waiting for GossipSub mesh to form for tx topic...');
|
|
308
|
+
await Promise.all(nodes.map(async (node, index)=>{
|
|
309
|
+
const p2p = node.getP2P();
|
|
310
|
+
await retryUntil(async ()=>{
|
|
311
|
+
const meshPeers = await p2p.getGossipMeshPeerCount(TopicType.tx);
|
|
312
|
+
this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for tx topic`);
|
|
313
|
+
return meshPeers >= 1 ? true : undefined;
|
|
314
|
+
}, `Node ${index} to have gossip mesh peers for tx topic`, timeoutSeconds, checkIntervalSeconds);
|
|
315
|
+
}));
|
|
316
|
+
this.logger.warn('All nodes have gossip mesh peers for tx topic');
|
|
303
317
|
}
|
|
304
318
|
async teardown() {
|
|
305
319
|
await this.monitor.stop();
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
2
2
|
import { P2PNetworkTest } from '../p2p_network.js';
|
|
3
3
|
export declare const NUM_VALIDATORS = 6;
|
|
4
|
-
export declare const NUM_TXS_PER_NODE =
|
|
5
|
-
export declare const BOOT_NODE_UDP_PORT
|
|
4
|
+
export declare const NUM_TXS_PER_NODE = 4;
|
|
5
|
+
export declare const BOOT_NODE_UDP_PORT: number;
|
|
6
6
|
export declare const createReqrespDataDir: () => string;
|
|
7
7
|
type ReqrespOptions = {
|
|
8
8
|
disableStatusHandshake?: boolean;
|
|
@@ -19,4 +19,4 @@ export declare function runReqrespTxTest(params: {
|
|
|
19
19
|
disableStatusHandshake?: boolean;
|
|
20
20
|
}): Promise<AztecNodeService[]>;
|
|
21
21
|
export {};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RSxlQUFPLE1BQU0sY0FBYyxJQUFJLENBQUM7QUFDaEMsZUFBTyxNQUFNLGdCQUFnQixJQUFJLENBQUM7QUFDbEMsZUFBTyxNQUFNLGtCQUFrQixRQUF1QixDQUFDO0FBRXZELGVBQU8sTUFBTSxvQkFBb0IsY0FBMkQsQ0FBQztBQUU3RixLQUFLLGNBQWMsR0FBRztJQUNwQixzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBRUYsd0JBQXNCLGlCQUFpQixDQUFDLE9BQU8sR0FBRSxjQUFtQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0EwQjdGO0FBRUQsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtJQUFFLENBQUMsRUFBRSxjQUFjLENBQUM7SUFBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLGlCQVNsSDtBQUlELHdCQUFzQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7SUFDN0MsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0E4SDlCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2e_p2p/reqresp/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAgB1D,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2e_p2p/reqresp/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAgB1D,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAIxE,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAuB,CAAC;AAEvD,eAAO,MAAM,oBAAoB,cAA2D,CAAC;AAE7F,KAAK,cAAc,GAAG;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0B7F;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBASlH;AAID,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,CAAC,EAAE,cAAc,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8H9B"}
|
|
@@ -2,21 +2,21 @@ import { createLogger } from '@aztec/aztec.js/log';
|
|
|
2
2
|
import { waitForTx } from '@aztec/aztec.js/node';
|
|
3
3
|
import { Tx } from '@aztec/aztec.js/tx';
|
|
4
4
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
5
|
-
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
5
|
+
import { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
6
6
|
import { timesAsync } from '@aztec/foundation/collection';
|
|
7
7
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
8
|
-
import { jest } from '@jest/globals';
|
|
8
|
+
import { expect, jest } from '@jest/globals';
|
|
9
9
|
import fs from 'fs';
|
|
10
10
|
import os from 'os';
|
|
11
11
|
import path from 'path';
|
|
12
|
-
import { shouldCollectMetrics } from '../../fixtures/fixtures.js';
|
|
12
|
+
import { getBootNodeUdpPort, shouldCollectMetrics } from '../../fixtures/fixtures.js';
|
|
13
13
|
import { createNodes } from '../../fixtures/setup_p2p_test.js';
|
|
14
|
-
import { P2PNetworkTest,
|
|
14
|
+
import { P2PNetworkTest, WAIT_FOR_TX_TIMEOUT } from '../p2p_network.js';
|
|
15
15
|
import { prepareTransactions } from '../shared.js';
|
|
16
16
|
// Don't set this to a higher value than 9 because each node will use a different L1 publisher account and anvil seeds
|
|
17
17
|
export const NUM_VALIDATORS = 6;
|
|
18
|
-
export const NUM_TXS_PER_NODE =
|
|
19
|
-
export const BOOT_NODE_UDP_PORT =
|
|
18
|
+
export const NUM_TXS_PER_NODE = 4;
|
|
19
|
+
export const BOOT_NODE_UDP_PORT = getBootNodeUdpPort();
|
|
20
20
|
export const createReqrespDataDir = ()=>fs.mkdtempSync(path.join(os.tmpdir(), 'reqresp-'));
|
|
21
21
|
export async function createReqrespTest(options = {}) {
|
|
22
22
|
const { disableStatusHandshake = false } = options;
|
|
@@ -28,8 +28,14 @@ export async function createReqrespTest(options = {}) {
|
|
|
28
28
|
// To collect metrics - run in aztec-packages `docker compose --profile metrics up`
|
|
29
29
|
metricsPort: shouldCollectMetrics(),
|
|
30
30
|
initialConfig: {
|
|
31
|
-
|
|
32
|
-
aztecSlotDuration:
|
|
31
|
+
ethereumSlotDuration: 8,
|
|
32
|
+
aztecSlotDuration: 36,
|
|
33
|
+
blockDurationMs: 6000,
|
|
34
|
+
l1PublishingTime: 8,
|
|
35
|
+
minTxsPerBlock: 1,
|
|
36
|
+
maxTxsPerBlock: 2,
|
|
37
|
+
enforceTimeTable: true,
|
|
38
|
+
aztecProofSubmissionEpochs: 1024,
|
|
33
39
|
...disableStatusHandshake ? {
|
|
34
40
|
p2pDisableStatusHandshake: true
|
|
35
41
|
} : {},
|
|
@@ -124,6 +130,24 @@ export async function runReqrespTxTest(params) {
|
|
|
124
130
|
t.logger.info(`Tx ${batchIndex}-${txIndex} ${submittedTx.txHash.toString()} has been mined`);
|
|
125
131
|
})));
|
|
126
132
|
t.logger.info('All transactions mined');
|
|
133
|
+
// Assert that multiple blocks were built for at least one slot
|
|
134
|
+
t.logger.info('Verifying multiple blocks for at least one checkpoint');
|
|
135
|
+
const checkpoints = await nodes[0].getCheckpoints(CheckpointNumber(1), 50);
|
|
136
|
+
expect(checkpoints.length).toBeGreaterThan(0);
|
|
137
|
+
let mbpsFound = false;
|
|
138
|
+
let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
|
|
139
|
+
for (const published of checkpoints){
|
|
140
|
+
const blockCount = published.checkpoint.blocks.length;
|
|
141
|
+
mbpsFound = mbpsFound || blockCount >= 2;
|
|
142
|
+
for(let i = 0; i < blockCount; i++){
|
|
143
|
+
const block = published.checkpoint.blocks[i];
|
|
144
|
+
expect(block.indexWithinCheckpoint).toBe(i);
|
|
145
|
+
expect(block.checkpointNumber).toBe(published.checkpoint.number);
|
|
146
|
+
expect(block.number).toBe(expectedBlockNumber);
|
|
147
|
+
expectedBlockNumber++;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
expect(mbpsFound).toBe(true);
|
|
127
151
|
return nodes;
|
|
128
152
|
}
|
|
129
153
|
async function getProposerIndexes(t, startSlotTimestamp) {
|
|
@@ -38,8 +38,8 @@ export declare class FullProverTest {
|
|
|
38
38
|
circuitProofVerifier?: ClientProtocolCircuitVerifier;
|
|
39
39
|
provenAsset: TokenContract;
|
|
40
40
|
context: EndToEndContext;
|
|
41
|
-
private
|
|
42
|
-
private
|
|
41
|
+
private proverAztecNode;
|
|
42
|
+
private simulatedProverAztecNode;
|
|
43
43
|
l1Contracts: DeployAztecL1ContractsReturnType;
|
|
44
44
|
proverAddress: EthAddress;
|
|
45
45
|
private minNumberOfTxsPerBlock;
|
|
@@ -52,4 +52,4 @@ export declare class FullProverTest {
|
|
|
52
52
|
teardown(): Promise<void>;
|
|
53
53
|
private applyMint;
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTJlX3Byb3Zlcl90ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZml4dHVyZXMvZTJlX3Byb3Zlcl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxLQUFLLDZCQUE2QixFQUduQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFJbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBUXJCLE1BQU0sWUFBWSxDQUFDO0FBT3BCOzs7OztHQUtHO0FBRUgscUJBQWEsY0FBYztJQUN6QixNQUFNLENBQUMsVUFBVSxTQUFVO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLFNBQVM7SUFDNUIsTUFBTSxDQUFDLGNBQWMsU0FBTztJQUM1QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsVUFBVSxDQUFDO0lBQzFCLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBTTtJQUM5QixnQkFBZ0IsRUFBRyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3hDLGVBQWUsRUFBRyxhQUFhLENBQUM7SUFDaEMsdUJBQXVCLEVBQUcsMkJBQTJCLENBQUM7SUFDdEQsUUFBUSxFQUFHLGNBQWMsQ0FBQztJQUMxQixTQUFTLEVBQUcsU0FBUyxDQUFDO0lBQ3RCLGNBQWMsRUFBRyxjQUFjLENBQUM7SUFDaEMsVUFBVSxFQUFHLFVBQVUsQ0FBQztJQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQXFCO0lBQzdDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBc0I7SUFDOUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQXNCO0lBQ2hELG9CQUFvQixDQUFDLEVBQUUsNkJBQTZCLENBQUM7SUFDckQsV0FBVyxFQUFHLGFBQWEsQ0FBQztJQUM1QixPQUFPLEVBQUcsZUFBZSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxlQUFlLENBQW9CO0lBQzNDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBb0I7SUFDN0MsV0FBVyxFQUFHLGdDQUFnQyxDQUFDO0lBQy9DLGFBQWEsRUFBRyxVQUFVLENBQUM7SUFDbEMsT0FBTyxDQUFDLHNCQUFzQixDQUFTO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQWE7SUFDN0IsT0FBTyxDQUFDLFVBQVUsQ0FBVTtJQUU1QixZQUFZLFFBQVEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxVQUFPLEVBS3BHO1lBS2EsY0FBYztJQXFDdEIsS0FBSyxrQkF3SVY7WUFFYSxZQUFZO0lBU3BCLFFBQVEsa0JBY2I7WUFFYSxTQUFTO0NBa0N4QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e_prover_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/e2e_prover_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAEL,KAAK,6BAA6B,EAGnC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"e2e_prover_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/e2e_prover_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAEL,KAAK,6BAA6B,EAGnC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,eAAe,EAQrB,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AAEH,qBAAa,cAAc;IACzB,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,UAAU,CAAC;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,gBAAgB,EAAG,kBAAkB,EAAE,CAAC;IACxC,eAAe,EAAG,aAAa,CAAC;IAChC,uBAAuB,EAAG,2BAA2B,CAAC;IACtD,QAAQ,EAAG,cAAc,CAAC;IAC1B,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAAsB;IAChD,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;IACrD,WAAW,EAAG,aAAa,CAAC;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,wBAAwB,CAAoB;IAC7C,WAAW,EAAG,gCAAgC,CAAC;IAC/C,aAAa,EAAG,UAAU,CAAC;IAClC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAU;IAE5B,YAAY,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,UAAO,EAKpG;YAKa,cAAc;IAqCtB,KAAK,kBAwIV;YAEa,YAAY;IASpB,QAAQ,kBAcb;YAEa,SAAS;CAkCxB"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AztecNodeService } from '@aztec/aztec-node';
|
|
2
2
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
3
3
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
4
4
|
import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
|
|
5
5
|
import { BackendType, Barretenberg } from '@aztec/bb.js';
|
|
6
|
-
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
7
6
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
8
7
|
import { SecretValue } from '@aztec/foundation/config';
|
|
9
8
|
import { FeeAssetHandlerAbi } from '@aztec/l1-artifacts';
|
|
10
9
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
11
|
-
import { createProverNode } from '@aztec/prover-node';
|
|
12
10
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
13
11
|
import { getContract } from 'viem';
|
|
14
12
|
import { privateKeyToAddress } from 'viem/accounts';
|
|
@@ -42,8 +40,8 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
|
|
|
42
40
|
circuitProofVerifier;
|
|
43
41
|
provenAsset;
|
|
44
42
|
context;
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
proverAztecNode;
|
|
44
|
+
simulatedProverAztecNode;
|
|
47
45
|
l1Contracts;
|
|
48
46
|
proverAddress;
|
|
49
47
|
minNumberOfTxsPerBlock;
|
|
@@ -102,11 +100,10 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
|
|
|
102
100
|
});
|
|
103
101
|
// We don't wish to mark as proven automatically, so we set the flag to false
|
|
104
102
|
this.context.watcher.setIsMarkingAsProven(false);
|
|
105
|
-
this.
|
|
103
|
+
this.simulatedProverAztecNode = this.context.proverNode;
|
|
106
104
|
({ aztecNode: this.aztecNode, deployL1ContractsValues: this.l1Contracts, cheatCodes: this.cheatCodes } = this.context);
|
|
107
105
|
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
108
106
|
const config = this.context.aztecNodeConfig;
|
|
109
|
-
const blobClient = await createBlobClientWithFileStores(config, this.logger);
|
|
110
107
|
// Configure a full prover PXE
|
|
111
108
|
let acvmConfig;
|
|
112
109
|
let bbConfig;
|
|
@@ -159,36 +156,30 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
|
|
|
159
156
|
this.provenAsset = asset;
|
|
160
157
|
this.provenWallet = provenWallet;
|
|
161
158
|
this.logger.info(`Full prover PXE started`);
|
|
162
|
-
// Shutdown the current, simulated prover node
|
|
159
|
+
// Shutdown the current, simulated prover node (by stopping its hosting aztec node)
|
|
163
160
|
this.logger.verbose('Shutting down simulated prover node');
|
|
164
|
-
await this.
|
|
165
|
-
// Creating temp store and archiver for fully proven prover node
|
|
166
|
-
this.logger.verbose('Starting archiver for new prover node');
|
|
167
|
-
const archiver = await createArchiver({
|
|
168
|
-
...this.context.aztecNodeConfig,
|
|
169
|
-
dataDirectory: undefined
|
|
170
|
-
}, {
|
|
171
|
-
blobClient,
|
|
172
|
-
dateProvider: this.context.dateProvider
|
|
173
|
-
}, {
|
|
174
|
-
blockUntilSync: true
|
|
175
|
-
});
|
|
161
|
+
await this.simulatedProverAztecNode.stop();
|
|
176
162
|
// The simulated prover node (now shutdown) used private key index 2
|
|
177
163
|
const proverNodePrivateKey = getPrivateKeyFromIndex(2);
|
|
164
|
+
const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
|
|
178
165
|
const proverNodeSenderAddress = privateKeyToAddress(new Buffer32(proverNodePrivateKey).toString());
|
|
179
166
|
this.proverAddress = EthAddress.fromString(proverNodeSenderAddress);
|
|
180
167
|
this.logger.verbose(`Funding prover node at ${proverNodeSenderAddress}`);
|
|
181
168
|
await this.mintFeeJuice(proverNodeSenderAddress);
|
|
182
169
|
this.logger.verbose('Starting prover node');
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
170
|
+
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
171
|
+
const { prefilledPublicData } = await getGenesisValues(this.context.initialFundedAccounts.map((a)=>a.address).concat(sponsoredFPCAddress));
|
|
172
|
+
const proverNodeConfig = {
|
|
173
|
+
...config,
|
|
174
|
+
enableProverNode: true,
|
|
175
|
+
disableValidator: true,
|
|
186
176
|
dataDirectory: undefined,
|
|
177
|
+
txCollectionNodeRpcUrls: [],
|
|
187
178
|
proverId: this.proverAddress,
|
|
188
179
|
realProofs: this.realProofs,
|
|
189
180
|
proverAgentCount: 2,
|
|
190
|
-
|
|
191
|
-
new SecretValue(
|
|
181
|
+
proverPublisherPrivateKeys: [
|
|
182
|
+
new SecretValue(proverNodePrivateKeyHex)
|
|
192
183
|
],
|
|
193
184
|
proverNodeMaxPendingJobs: 100,
|
|
194
185
|
proverNodeMaxParallelBlocksPerEpoch: 32,
|
|
@@ -198,17 +189,19 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
|
|
|
198
189
|
txGatheringMaxParallelRequestsPerNode: 100,
|
|
199
190
|
txGatheringTimeoutMs: 24_000,
|
|
200
191
|
proverNodeFailedEpochStore: undefined,
|
|
201
|
-
proverNodeEpochProvingDelayMs: undefined
|
|
192
|
+
proverNodeEpochProvingDelayMs: undefined,
|
|
193
|
+
validatorPrivateKeys: new SecretValue([])
|
|
202
194
|
};
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
195
|
+
this.proverAztecNode = await AztecNodeService.createAndSync(proverNodeConfig, {
|
|
196
|
+
dateProvider: this.context.dateProvider,
|
|
197
|
+
p2pClientDeps: {
|
|
198
|
+
rpcTxProviders: [
|
|
199
|
+
this.aztecNode
|
|
200
|
+
]
|
|
201
|
+
}
|
|
208
202
|
}, {
|
|
209
203
|
prefilledPublicData
|
|
210
204
|
});
|
|
211
|
-
await this.proverNode.start();
|
|
212
205
|
this.logger.warn(`Proofs are now enabled`, {
|
|
213
206
|
realProofs: this.realProofs
|
|
214
207
|
});
|
|
@@ -235,8 +228,8 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
|
|
|
235
228
|
for(let i = 0; i < this.provenComponents.length; i++){
|
|
236
229
|
await this.provenComponents[i].teardown();
|
|
237
230
|
}
|
|
238
|
-
// clean up the full prover node
|
|
239
|
-
await this.
|
|
231
|
+
// clean up the full prover node (by stopping its hosting aztec node)
|
|
232
|
+
await this.proverAztecNode.stop();
|
|
240
233
|
await Barretenberg.destroySingleton();
|
|
241
234
|
await this.bbConfigCleanup?.();
|
|
242
235
|
await this.acvmConfigCleanup?.();
|