@aztec/prover-node 3.0.0-nightly.20250930 → 3.0.0-nightly.20251002
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/config.d.ts +1 -0
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +6 -1
- package/dest/job/epoch-proving-job.d.ts +6 -4
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +11 -2
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +1 -0
- package/dest/prover-node.js +2 -1
- package/package.json +22 -22
- package/src/config.ts +12 -1
- package/src/job/epoch-proving-job.ts +21 -3
- package/src/prover-node-publisher.ts +2 -0
- package/src/prover-node.ts +2 -2
package/dest/config.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export type SpecificProverNodeConfig = {
|
|
|
17
17
|
proverNodeMaxParallelBlocksPerEpoch: number;
|
|
18
18
|
proverNodeFailedEpochStore: string | undefined;
|
|
19
19
|
proverNodeEpochProvingDelayMs: number | undefined;
|
|
20
|
+
proverNodeDisableProofPublish?: boolean;
|
|
20
21
|
txGatheringTimeoutMs: number;
|
|
21
22
|
txGatheringIntervalMs: number;
|
|
22
23
|
txGatheringBatchSize: number;
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,iBAAiB,CAAC;AACtF,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,iBAAiB,CAAC;AACtF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAA+C,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,sBAAsB,EAAgD,MAAM,6BAA6B,CAAC;AACxH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,2BAA2B,CAAC;AAE5F,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAC3C,sBAAsB,GACtB,SAAS,GACT,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,wBAAwB,GACxB,kBAAkB,CAAC;AAErB,MAAM,MAAM,wBAAwB,GAAG;IACrC,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qCAAqC,EAAE,MAAM,CAAC;CAC/C,CAAC;AAsDF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,gBAAgB,CAYzE,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,gBAAgB,CAE7D;AAED,wBAAgB,gCAAgC,IAAI,kBAAkB,CAIrE;AAED,wBAAgB,+BAA+B,IAAI,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAK3F;AA0DD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAMtF"}
|
package/dest/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { archiverConfigMappings } from '@aztec/archiver/config';
|
|
2
2
|
import { genesisStateConfigMappings } from '@aztec/ethereum';
|
|
3
|
-
import { getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
3
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
4
4
|
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
5
5
|
import { ethPrivateKeySchema, keyStoreConfigMappings } from '@aztec/node-keystore';
|
|
6
6
|
import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
@@ -53,6 +53,11 @@ const specificProverNodeConfigMappings = {
|
|
|
53
53
|
env: 'PROVER_NODE_TX_GATHERING_TIMEOUT_MS',
|
|
54
54
|
description: 'How long to wait for tx data to be available before giving up',
|
|
55
55
|
...numberConfigHelper(120_000)
|
|
56
|
+
},
|
|
57
|
+
proverNodeDisableProofPublish: {
|
|
58
|
+
env: 'PROVER_NODE_DISABLE_PROOF_PUBLISH',
|
|
59
|
+
description: 'Whether the prover node skips publishing proofs to L1',
|
|
60
|
+
...booleanConfigHelper(false)
|
|
56
61
|
}
|
|
57
62
|
};
|
|
58
63
|
export const proverNodeConfigMappings = {
|
|
@@ -5,6 +5,11 @@ import { type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
|
5
5
|
import type { ProverNodeJobMetrics } from '../metrics.js';
|
|
6
6
|
import type { ProverNodePublisher } from '../prover-node-publisher.js';
|
|
7
7
|
import { type EpochProvingJobData } from './epoch-proving-job-data.js';
|
|
8
|
+
export type EpochProvingJobOptions = {
|
|
9
|
+
parallelBlockLimit?: number;
|
|
10
|
+
skipEpochCheck?: boolean;
|
|
11
|
+
skipSubmitProof?: boolean;
|
|
12
|
+
};
|
|
8
13
|
/**
|
|
9
14
|
* Job that grabs a range of blocks from the unfinalized chain from L1, gets their txs given their hashes,
|
|
10
15
|
* re-executes their public calls, generates a rollup proof, and submits it to L1. This job will update the
|
|
@@ -27,10 +32,7 @@ export declare class EpochProvingJob implements Traceable {
|
|
|
27
32
|
private epochCheckPromise;
|
|
28
33
|
private deadlineTimeoutHandler;
|
|
29
34
|
readonly tracer: Tracer;
|
|
30
|
-
constructor(data: EpochProvingJobData, dbProvider: Pick<ForkMerkleTreeOperations, 'fork'>, prover: EpochProver, publicProcessorFactory: PublicProcessorFactory, publisher: Pick<ProverNodePublisher, 'submitEpochProof'>, l2BlockSource: L2BlockSource | undefined, metrics: ProverNodeJobMetrics, deadline: Date | undefined, config:
|
|
31
|
-
parallelBlockLimit?: number;
|
|
32
|
-
skipEpochCheck?: boolean;
|
|
33
|
-
});
|
|
35
|
+
constructor(data: EpochProvingJobData, dbProvider: Pick<ForkMerkleTreeOperations, 'fork'>, prover: EpochProver, publicProcessorFactory: PublicProcessorFactory, publisher: Pick<ProverNodePublisher, 'submitEpochProof'>, l2BlockSource: L2BlockSource | undefined, metrics: ProverNodeJobMetrics, deadline: Date | undefined, config: EpochProvingJobOptions);
|
|
34
36
|
getId(): string;
|
|
35
37
|
getState(): EpochProvingJobState;
|
|
36
38
|
getEpochNumber(): bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,6BAA6B,CAAC;AAEpG;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAY7C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAiD;IAC5D,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACxD,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,6BAA6B,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAY7C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAiD;IAC5D,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACxD,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,sBAAsB;IAOjC,KAAK,IAAI,MAAM;IAIf,QAAQ,IAAI,oBAAoB;IAIhC,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,IAAI,GAAG,SAAS;IAI/B,cAAc,IAAI,mBAAmB;IAI5C,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IAIU,GAAG;IAiKhB;;;OAGG;YACW,UAAU;IAgBxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC;IAQjE,OAAO,CAAC,oBAAoB;IAoB5B;;;OAGG;YACW,kBAAkB;IAiChC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAmBzB;AASD,OAAO,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
|
|
@@ -155,7 +155,11 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
155
155
|
await this.prover.startNewBlock(block.number, globalVariables.timestamp, txs.length);
|
|
156
156
|
// Process public fns
|
|
157
157
|
const db = await this.createFork(block.number - 1, l1ToL2Messages);
|
|
158
|
-
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables,
|
|
158
|
+
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, {
|
|
159
|
+
skipFeeEnforcement: true,
|
|
160
|
+
clientInitiatedSimulation: false,
|
|
161
|
+
proverId: this.prover.getProverId().toField()
|
|
162
|
+
});
|
|
159
163
|
const processed = await this.processTxs(publicProcessor, txs);
|
|
160
164
|
await this.prover.addTxs(processed);
|
|
161
165
|
await db.close();
|
|
@@ -177,6 +181,12 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
177
181
|
duration: timer.ms()
|
|
178
182
|
});
|
|
179
183
|
this.progressState('publishing-proof');
|
|
184
|
+
if (this.config.skipSubmitProof) {
|
|
185
|
+
this.log.info(`Proof publishing is disabled. Dropping valid proof for epoch ${epochNumber} (blocks ${fromBlock} to ${toBlock})`);
|
|
186
|
+
this.state = 'completed';
|
|
187
|
+
this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeBlocks, epochSizeTxs);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
180
190
|
const success = await this.publisher.submitEpochProof({
|
|
181
191
|
fromBlock,
|
|
182
192
|
toBlock,
|
|
@@ -243,7 +253,6 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
243
253
|
async stop(state = 'stopped') {
|
|
244
254
|
this.state = state;
|
|
245
255
|
this.prover.cancel();
|
|
246
|
-
// TODO(palla/prover): Stop the publisher as well
|
|
247
256
|
if (this.runPromise) {
|
|
248
257
|
await this.runPromise;
|
|
249
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAoC,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAOnF,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,EAAE,CAAC;IACf,YAAY,EAAE,EAAE,CAAC;IACjB,OAAO,EAAE,EAAE,CAAC;IACZ,QAAQ,EAAE,EAAE,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,wBAAwB,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,yCAA+C;IAE5D,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAGnC,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACJ,cAAc,EAAE,cAAc,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC;QACrB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B;IAYI,iBAAiB;IAIxB;;;;;OAKG;IACI,SAAS;
|
|
1
|
+
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAoC,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAOnF,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,EAAE,CAAC;IACf,YAAY,EAAE,EAAE,CAAC;IACjB,OAAO,EAAE,EAAE,CAAC;IACZ,QAAQ,EAAE,EAAE,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,wBAAwB,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,yCAA+C;IAE5D,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAGnC,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACJ,cAAc,EAAE,cAAc,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC;QACrB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B;IAYI,iBAAiB;IAIxB;;;;;OAKG;IACI,SAAS;IAMhB,wDAAwD;IACjD,OAAO;IAIP,gBAAgB;IAIV,gBAAgB,CAAC,IAAI,EAAE;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,sBAAsB,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC;QACb,iBAAiB,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,wBAAwB,EAAE,CAAC;KAC1C,GAAG,OAAO,CAAC,OAAO,CAAC;YAmDN,4BAA4B;YA0D5B,sBAAsB;IAyCpC,OAAO,CAAC,6BAA6B;IAyBrC,OAAO,CAAC,uBAAuB;cAwBf,kBAAkB;CAGnC"}
|
package/dest/prover-node.js
CHANGED
|
@@ -289,9 +289,10 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
|
|
|
289
289
|
return header;
|
|
290
290
|
}
|
|
291
291
|
/** Extracted for testing purposes. */ doCreateEpochProvingJob(data, deadline, publicProcessorFactory, publisher, opts = {}) {
|
|
292
|
-
const { proverNodeMaxParallelBlocksPerEpoch: parallelBlockLimit } = this.config;
|
|
292
|
+
const { proverNodeMaxParallelBlocksPerEpoch: parallelBlockLimit, proverNodeDisableProofPublish } = this.config;
|
|
293
293
|
return new EpochProvingJob(data, this.worldState, this.prover.createEpochProver(), publicProcessorFactory, publisher, this.l2BlockSource, this.jobMetrics, deadline, {
|
|
294
294
|
parallelBlockLimit,
|
|
295
|
+
skipSubmitProof: proverNodeDisableProofPublish,
|
|
295
296
|
...opts
|
|
296
297
|
});
|
|
297
298
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20251002",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -56,27 +56,27 @@
|
|
|
56
56
|
]
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@aztec/archiver": "3.0.0-nightly.
|
|
60
|
-
"@aztec/bb-prover": "3.0.0-nightly.
|
|
61
|
-
"@aztec/blob-lib": "3.0.0-nightly.
|
|
62
|
-
"@aztec/blob-sink": "3.0.0-nightly.
|
|
63
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
64
|
-
"@aztec/epoch-cache": "3.0.0-nightly.
|
|
65
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
66
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
67
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
68
|
-
"@aztec/l1-artifacts": "3.0.0-nightly.
|
|
69
|
-
"@aztec/node-keystore": "3.0.0-nightly.
|
|
70
|
-
"@aztec/node-lib": "3.0.0-nightly.
|
|
71
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
72
|
-
"@aztec/p2p": "3.0.0-nightly.
|
|
73
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
74
|
-
"@aztec/prover-client": "3.0.0-nightly.
|
|
75
|
-
"@aztec/sequencer-client": "3.0.0-nightly.
|
|
76
|
-
"@aztec/simulator": "3.0.0-nightly.
|
|
77
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
78
|
-
"@aztec/telemetry-client": "3.0.0-nightly.
|
|
79
|
-
"@aztec/world-state": "3.0.0-nightly.
|
|
59
|
+
"@aztec/archiver": "3.0.0-nightly.20251002",
|
|
60
|
+
"@aztec/bb-prover": "3.0.0-nightly.20251002",
|
|
61
|
+
"@aztec/blob-lib": "3.0.0-nightly.20251002",
|
|
62
|
+
"@aztec/blob-sink": "3.0.0-nightly.20251002",
|
|
63
|
+
"@aztec/constants": "3.0.0-nightly.20251002",
|
|
64
|
+
"@aztec/epoch-cache": "3.0.0-nightly.20251002",
|
|
65
|
+
"@aztec/ethereum": "3.0.0-nightly.20251002",
|
|
66
|
+
"@aztec/foundation": "3.0.0-nightly.20251002",
|
|
67
|
+
"@aztec/kv-store": "3.0.0-nightly.20251002",
|
|
68
|
+
"@aztec/l1-artifacts": "3.0.0-nightly.20251002",
|
|
69
|
+
"@aztec/node-keystore": "3.0.0-nightly.20251002",
|
|
70
|
+
"@aztec/node-lib": "3.0.0-nightly.20251002",
|
|
71
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20251002",
|
|
72
|
+
"@aztec/p2p": "3.0.0-nightly.20251002",
|
|
73
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20251002",
|
|
74
|
+
"@aztec/prover-client": "3.0.0-nightly.20251002",
|
|
75
|
+
"@aztec/sequencer-client": "3.0.0-nightly.20251002",
|
|
76
|
+
"@aztec/simulator": "3.0.0-nightly.20251002",
|
|
77
|
+
"@aztec/stdlib": "3.0.0-nightly.20251002",
|
|
78
|
+
"@aztec/telemetry-client": "3.0.0-nightly.20251002",
|
|
79
|
+
"@aztec/world-state": "3.0.0-nightly.20251002",
|
|
80
80
|
"source-map-support": "^0.5.21",
|
|
81
81
|
"tslib": "^2.4.0",
|
|
82
82
|
"viem": "2.23.7"
|
package/src/config.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { type ArchiverConfig, archiverConfigMappings } from '@aztec/archiver/config';
|
|
2
2
|
import type { ACVMConfig, BBConfig } from '@aztec/bb-prover/config';
|
|
3
3
|
import { type GenesisStateConfig, genesisStateConfigMappings } from '@aztec/ethereum';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
type ConfigMappingsType,
|
|
6
|
+
booleanConfigHelper,
|
|
7
|
+
getConfigFromMappings,
|
|
8
|
+
numberConfigHelper,
|
|
9
|
+
} from '@aztec/foundation/config';
|
|
5
10
|
import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
|
|
6
11
|
import { type KeyStore, type KeyStoreConfig, ethPrivateKeySchema, keyStoreConfigMappings } from '@aztec/node-keystore';
|
|
7
12
|
import { type SharedNodeConfig, sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
@@ -39,6 +44,7 @@ export type SpecificProverNodeConfig = {
|
|
|
39
44
|
proverNodeMaxParallelBlocksPerEpoch: number;
|
|
40
45
|
proverNodeFailedEpochStore: string | undefined;
|
|
41
46
|
proverNodeEpochProvingDelayMs: number | undefined;
|
|
47
|
+
proverNodeDisableProofPublish?: boolean;
|
|
42
48
|
txGatheringTimeoutMs: number;
|
|
43
49
|
txGatheringIntervalMs: number;
|
|
44
50
|
txGatheringBatchSize: number;
|
|
@@ -90,6 +96,11 @@ const specificProverNodeConfigMappings: ConfigMappingsType<SpecificProverNodeCon
|
|
|
90
96
|
description: 'How long to wait for tx data to be available before giving up',
|
|
91
97
|
...numberConfigHelper(120_000),
|
|
92
98
|
},
|
|
99
|
+
proverNodeDisableProofPublish: {
|
|
100
|
+
env: 'PROVER_NODE_DISABLE_PROOF_PUBLISH',
|
|
101
|
+
description: 'Whether the prover node skips publishing proofs to L1',
|
|
102
|
+
...booleanConfigHelper(false),
|
|
103
|
+
},
|
|
93
104
|
};
|
|
94
105
|
|
|
95
106
|
export const proverNodeConfigMappings: ConfigMappingsType<ProverNodeConfig> = {
|
|
@@ -27,6 +27,12 @@ import type { ProverNodeJobMetrics } from '../metrics.js';
|
|
|
27
27
|
import type { ProverNodePublisher } from '../prover-node-publisher.js';
|
|
28
28
|
import { type EpochProvingJobData, validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
29
29
|
|
|
30
|
+
export type EpochProvingJobOptions = {
|
|
31
|
+
parallelBlockLimit?: number;
|
|
32
|
+
skipEpochCheck?: boolean;
|
|
33
|
+
skipSubmitProof?: boolean;
|
|
34
|
+
};
|
|
35
|
+
|
|
30
36
|
/**
|
|
31
37
|
* Job that grabs a range of blocks from the unfinalized chain from L1, gets their txs given their hashes,
|
|
32
38
|
* re-executes their public calls, generates a rollup proof, and submits it to L1. This job will update the
|
|
@@ -52,7 +58,7 @@ export class EpochProvingJob implements Traceable {
|
|
|
52
58
|
private l2BlockSource: L2BlockSource | undefined,
|
|
53
59
|
private metrics: ProverNodeJobMetrics,
|
|
54
60
|
private deadline: Date | undefined,
|
|
55
|
-
private config:
|
|
61
|
+
private config: EpochProvingJobOptions,
|
|
56
62
|
) {
|
|
57
63
|
validateEpochProvingJobData(data);
|
|
58
64
|
this.uuid = crypto.randomUUID();
|
|
@@ -186,7 +192,11 @@ export class EpochProvingJob implements Traceable {
|
|
|
186
192
|
|
|
187
193
|
// Process public fns
|
|
188
194
|
const db = await this.createFork(block.number - 1, l1ToL2Messages);
|
|
189
|
-
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables,
|
|
195
|
+
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, {
|
|
196
|
+
skipFeeEnforcement: true,
|
|
197
|
+
clientInitiatedSimulation: false,
|
|
198
|
+
proverId: this.prover.getProverId().toField(),
|
|
199
|
+
});
|
|
190
200
|
const processed = await this.processTxs(publicProcessor, txs);
|
|
191
201
|
await this.prover.addTxs(processed);
|
|
192
202
|
await db.close();
|
|
@@ -209,6 +219,15 @@ export class EpochProvingJob implements Traceable {
|
|
|
209
219
|
|
|
210
220
|
this.progressState('publishing-proof');
|
|
211
221
|
|
|
222
|
+
if (this.config.skipSubmitProof) {
|
|
223
|
+
this.log.info(
|
|
224
|
+
`Proof publishing is disabled. Dropping valid proof for epoch ${epochNumber} (blocks ${fromBlock} to ${toBlock})`,
|
|
225
|
+
);
|
|
226
|
+
this.state = 'completed';
|
|
227
|
+
this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeBlocks, epochSizeTxs);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
|
|
212
231
|
const success = await this.publisher.submitEpochProof({
|
|
213
232
|
fromBlock,
|
|
214
233
|
toBlock,
|
|
@@ -283,7 +302,6 @@ export class EpochProvingJob implements Traceable {
|
|
|
283
302
|
public async stop(state: EpochProvingJobTerminalState = 'stopped') {
|
|
284
303
|
this.state = state;
|
|
285
304
|
this.prover.cancel();
|
|
286
|
-
// TODO(palla/prover): Stop the publisher as well
|
|
287
305
|
if (this.runPromise) {
|
|
288
306
|
await this.runPromise;
|
|
289
307
|
}
|
|
@@ -77,6 +77,7 @@ export class ProverNodePublisher {
|
|
|
77
77
|
public interrupt() {
|
|
78
78
|
this.interrupted = true;
|
|
79
79
|
this.interruptibleSleep.interrupt();
|
|
80
|
+
this.l1TxUtils.interrupt();
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
/** Restarts the publisher after calling `interrupt`. */
|
|
@@ -99,6 +100,7 @@ export class ProverNodePublisher {
|
|
|
99
100
|
}): Promise<boolean> {
|
|
100
101
|
const { epochNumber, fromBlock, toBlock } = args;
|
|
101
102
|
const ctx = { epochNumber, fromBlock, toBlock };
|
|
103
|
+
|
|
102
104
|
if (!this.interrupted) {
|
|
103
105
|
const timer = new Timer();
|
|
104
106
|
// Validate epoch proof range and hashes are correct before submitting
|
package/src/prover-node.ts
CHANGED
|
@@ -367,7 +367,7 @@ export class ProverNode implements EpochMonitorHandler, ProverNodeApi, Traceable
|
|
|
367
367
|
publisher: ProverNodePublisher,
|
|
368
368
|
opts: { skipEpochCheck?: boolean } = {},
|
|
369
369
|
) {
|
|
370
|
-
const { proverNodeMaxParallelBlocksPerEpoch: parallelBlockLimit } = this.config;
|
|
370
|
+
const { proverNodeMaxParallelBlocksPerEpoch: parallelBlockLimit, proverNodeDisableProofPublish } = this.config;
|
|
371
371
|
return new EpochProvingJob(
|
|
372
372
|
data,
|
|
373
373
|
this.worldState,
|
|
@@ -377,7 +377,7 @@ export class ProverNode implements EpochMonitorHandler, ProverNodeApi, Traceable
|
|
|
377
377
|
this.l2BlockSource,
|
|
378
378
|
this.jobMetrics,
|
|
379
379
|
deadline,
|
|
380
|
-
{ parallelBlockLimit, ...opts },
|
|
380
|
+
{ parallelBlockLimit, skipSubmitProof: proverNodeDisableProofPublish, ...opts },
|
|
381
381
|
);
|
|
382
382
|
}
|
|
383
383
|
|