@aztec/prover-node 5.3.0-nightly.20260901 → 5.3.0-nightly.20260903
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/job/epoch-session.d.ts +1 -1
- package/dest/job/epoch-session.d.ts.map +1 -1
- package/dest/job/epoch-session.js +9 -0
- package/dest/proof-publishing-service.d.ts +8 -4
- package/dest/proof-publishing-service.d.ts.map +1 -1
- package/dest/proof-publishing-service.js +4 -3
- package/dest/prover-node-publisher.d.ts +11 -2
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +24 -7
- package/package.json +23 -23
- package/src/job/epoch-session.ts +9 -0
- package/src/proof-publishing-service.ts +9 -5
- package/src/prover-node-publisher.ts +38 -8
|
@@ -157,4 +157,4 @@ export declare class EpochSession implements Traceable {
|
|
|
157
157
|
protected handleDeadline(): Promise<void>;
|
|
158
158
|
private toTopTreeHooks;
|
|
159
159
|
}
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtc2Vzc2lvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pvYi9lcG9jaC1zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQXlCLEtBQUssV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEgsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssb0JBQW9CLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFDMUcsT0FBTyxFQUFjLEtBQUssU0FBUyxFQUFFLEtBQUssTUFBTSxFQUFhLE1BQU0seUJBQXlCLENBQUM7QUFJN0YsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQW9DLEtBQUssWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEYsWUFBWSxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUFFckMsd0ZBQXNGO0FBQ3RGLE1BQU0sTUFBTSxXQUFXLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUU3Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxXQUFXLFdBQVc7SUFDMUIsSUFBSSxFQUFFLFdBQVcsQ0FBQztJQUNsQixXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxV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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-session.d.ts","sourceRoot":"","sources":["../../src/job/epoch-session.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"epoch-session.d.ts","sourceRoot":"","sources":["../../src/job/epoch-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -663,6 +663,15 @@ _dec = trackSpan('EpochSession.start', function() {
|
|
|
663
663
|
this.state = 'completed';
|
|
664
664
|
this.deps.metrics.recordProvingJob(timer.ms(), checkpointCount, epochSizeBlocks, epochSizeTxs);
|
|
665
665
|
return;
|
|
666
|
+
case 'already-submitted':
|
|
667
|
+
// L1 already holds our proof for this epoch (e.g. a re-prove after restart), so there is nothing to
|
|
668
|
+
// retry or report as failed. Not recorded as a proving job since no new proof landed.
|
|
669
|
+
this.log.info(`Proof for epoch ${this.spec.epochNumber} (checkpoints ${fromCheckpoint}..${toCheckpoint}) was already submitted`, {
|
|
670
|
+
uuid: this.uuid,
|
|
671
|
+
...this.spec
|
|
672
|
+
});
|
|
673
|
+
this.state = 'completed';
|
|
674
|
+
return;
|
|
666
675
|
case 'superseded':
|
|
667
676
|
this.log.info(`EpochSession ${this.uuid} superseded by a longer candidate`, {
|
|
668
677
|
uuid: this.uuid,
|
|
@@ -45,8 +45,11 @@ export type PublishCandidate = {
|
|
|
45
45
|
/** Committee-attested checkpoint headers for the range, supplying the L1-verified fee recipient/value. */
|
|
46
46
|
headers: CheckpointHeader[];
|
|
47
47
|
};
|
|
48
|
-
/**
|
|
49
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Terminal outcome for a candidate. The promise from `submit()` resolves with one of these. `'already-submitted'`
|
|
50
|
+
* means L1 already holds a proof of this length from this prover for the epoch, so nothing was sent.
|
|
51
|
+
*/
|
|
52
|
+
export type PublishOutcome = 'published' | 'already-submitted' | 'superseded' | 'failed' | 'withdrawn' | 'expired';
|
|
50
53
|
/** Subset of `ProverPublisherFactory` the service uses — single async `create()` call. */
|
|
51
54
|
export type PublisherFactoryLike = Pick<ProverPublisherFactory, 'create'>;
|
|
52
55
|
/** Subset of `ProverNodePublisher` the service drives — one publish per fresh publisher. */
|
|
@@ -104,7 +107,8 @@ export declare class ProofPublishingService {
|
|
|
104
107
|
/**
|
|
105
108
|
* Offers a proof candidate to the service. The returned promise resolves once the
|
|
106
109
|
* service settles the candidate's fate: `'published'` if it wins and L1 accepts it,
|
|
107
|
-
* `'
|
|
110
|
+
* `'already-submitted'` if this prover had already registered a proof of the same length
|
|
111
|
+
* for the epoch, `'superseded'` if a longer candidate for the same epoch wins, `'failed'` if the
|
|
108
112
|
* L1 submission errored, `'withdrawn'` if the originating session cancelled,
|
|
109
113
|
* `'expired'` if the candidate's `deadline` elapsed before publishing started.
|
|
110
114
|
*/
|
|
@@ -158,4 +162,4 @@ export declare class ProofPublishingService {
|
|
|
158
162
|
protected handleExpiry(candidateId: string): void;
|
|
159
163
|
private readProvenBlockNumber;
|
|
160
164
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2YtcHVibGlzaGluZy1zZXJ2aWNlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvb2YtcHVibGlzaGluZy1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLGdCQUFnQixFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkcsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJGLE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSx1RkFBdUY7QUFDdkYsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLHNGQUFzRjtJQUN0RixFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQ1gsS0FBSyxFQUFFLFdBQVcsQ0FBQztJQUNuQjs7Ozs7OztPQU9HO0lBQ0gsSUFBSSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDekIsK0NBQStDO0lBQy9DLFVBQVUsRUFBRSxXQUFXLENBQUM7SUFDeEIsOENBQThDO0lBQzlDLFFBQVEsRUFBRSxXQUFXLENBQUM7SUFDdEI7Ozs7OztPQU1HO0lBQ0gsUUFBUSxFQUFFLElBQUksR0FBRyxTQUFTLENBQUM7SUFDM0IsK0RBQStEO0lBQy9ELGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztJQUNqQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7SUFDL0IsWUFBWSxFQUFFLHNCQUFzQixDQUFDO0lBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDYixpQkFBaUIsRUFBRSxXQUFXLENBQUM7SUFDL0IsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7SUFDekMsMEdBQTBHO0lBQzFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0NBQzdCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLE1BQU0sY0FBYyxHQUFHLFdBQVcsR0FBRyxtQkFBbUIsR0FBRyxZQUFZLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFFbkgsNEZBQTBGO0FBQzFGLE1BQU0sTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFMUUsOEZBQTRGO0FBQzVGLE1BQU0sTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixHQUFHLDZCQUE2QixDQUFDLENBQUM7QUFFMUcseUNBQXlDO0FBQ3pDLE1BQU0sTUFBTSw0QkFBNEIsR0FBRztJQUN6QyxrR0FBa0c7SUFDbEcsZUFBZSxFQUFFLE9BQU8sQ0FBQztDQUMxQixDQUFDO0FBRUYsTUFBTSxNQUFNLDBCQUEwQixHQUFHO0lBQ3ZDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO0lBQ3ZDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDckQsWUFBWSxFQUFFLFlBQVksQ0FBQztJQUMzQixNQUFNLEVBQUUsNEJBQTRCLENBQUM7SUFDckMsUUFBUSxDQUFDLEVBQUUsY0FBYyxDQUFDO0NBQzNCLENBQUM7QUFnQkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gscUJBQWEsc0JBQXNCO0lBZ0JyQixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUk7SUFmakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQVM7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQTRDO0lBQ25FOzs7Ozs7O09BT0c7SUFDSCxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsY0FBcUI7SUFDbEQsa0dBQWtHO0lBQ2xHLE9BQU8sQ0FBQyxRQUFRLENBQTZCO0lBQzdDLE9BQU8sQ0FBQyxPQUFPLENBQVM7SUFFeEIsWUFBNkIsSUFBSSxFQUFFLDBCQUEwQixFQUc1RDtJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsU0FBUyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FzQmxFO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQWV6QztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFlBQVksRUFBRSxXQUFXLEdBQUcsSUFBSSxDQUVwRDtJQUVEOzs7T0FHRztJQUNVLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBV2pDO0lBSUQsT0FBTyxDQUFDLGFBQWE7WUFXUCxLQUFLO0lBNEJuQjs7Ozs7OztPQU9HO0lBQ0gsT0FBTyxDQUFDLGVBQWU7WUE2QlQsYUFBYTtZQXNDYixVQUFVO0lBMEN4QixPQUFPLENBQUMsZ0JBQWdCO0lBZXhCOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLGNBQWM7SUFTdEI7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBZWhEO1lBRWEscUJBQXFCO0NBSXBDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof-publishing-service.d.ts","sourceRoot":"","sources":["../src/proof-publishing-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACvG,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,uFAAuF;AACvF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,WAAW,CAAC;IACnB;;;;;;;OAOG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,+CAA+C;IAC/C,UAAU,EAAE,WAAW,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,EAAE,WAAW,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,cAAc,EAAE,gBAAgB,CAAC;IACjC,YAAY,EAAE,gBAAgB,CAAC;IAC/B,YAAY,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,WAAW,CAAC;IAC/B,YAAY,EAAE,wBAAwB,EAAE,CAAC;IACzC,0GAA0G;IAC1G,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"proof-publishing-service.d.ts","sourceRoot":"","sources":["../src/proof-publishing-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,7 +52,8 @@ import { SerialQueue } from '@aztec/foundation/queue';
|
|
|
52
52
|
/**
|
|
53
53
|
* Offers a proof candidate to the service. The returned promise resolves once the
|
|
54
54
|
* service settles the candidate's fate: `'published'` if it wins and L1 accepts it,
|
|
55
|
-
* `'
|
|
55
|
+
* `'already-submitted'` if this prover had already registered a proof of the same length
|
|
56
|
+
* for the epoch, `'superseded'` if a longer candidate for the same epoch wins, `'failed'` if the
|
|
56
57
|
* L1 submission errored, `'withdrawn'` if the originating session cancelled,
|
|
57
58
|
* `'expired'` if the candidate's `deadline` elapsed before publishing started.
|
|
58
59
|
*/ submit(candidate) {
|
|
@@ -238,6 +239,7 @@ import { SerialQueue } from '@aztec/foundation/queue';
|
|
|
238
239
|
async runPublish(candidate, publisher) {
|
|
239
240
|
const submitArgs = {
|
|
240
241
|
epochNumber: candidate.epoch,
|
|
242
|
+
kind: candidate.kind,
|
|
241
243
|
fromCheckpoint: candidate.fromCheckpoint,
|
|
242
244
|
toCheckpoint: candidate.toCheckpoint,
|
|
243
245
|
publicInputs: candidate.publicInputs,
|
|
@@ -264,8 +266,7 @@ import { SerialQueue } from '@aztec/foundation/queue';
|
|
|
264
266
|
}
|
|
265
267
|
}
|
|
266
268
|
try {
|
|
267
|
-
|
|
268
|
-
return success ? 'published' : 'failed';
|
|
269
|
+
return await publisher.submitEpochProof(submitArgs);
|
|
269
270
|
} catch (err) {
|
|
270
271
|
this.log.error(`Error publishing candidate ${candidate.id}`, err, {
|
|
271
272
|
candidateId: candidate.id,
|
|
@@ -21,6 +21,11 @@ export type L1SubmitEpochProofArgs = {
|
|
|
21
21
|
headers: CheckpointHeader[];
|
|
22
22
|
proof: Proof;
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* Result of a proof submission attempt. `'already-submitted'` means this prover had already registered a proof of
|
|
26
|
+
* the same length for the epoch on L1, so nothing was sent; it is not a failure.
|
|
27
|
+
*/
|
|
28
|
+
export type SubmitEpochProofResult = 'published' | 'already-submitted' | 'failed';
|
|
24
29
|
export declare class ProverNodePublisher {
|
|
25
30
|
private metrics;
|
|
26
31
|
protected log: Logger;
|
|
@@ -44,9 +49,11 @@ export declare class ProverNodePublisher {
|
|
|
44
49
|
batchedBlobInputs: BatchedBlob;
|
|
45
50
|
attestations: ViemCommitteeAttestation[];
|
|
46
51
|
headers: CheckpointHeader[];
|
|
52
|
+
/** Whether the range covers the whole epoch. Governs whether an already-overtaken proof is still worth sending. */
|
|
53
|
+
kind: 'full' | 'partial';
|
|
47
54
|
/** Wall-clock deadline (proof-submission window end) past which the L1 tx should stop retrying. */
|
|
48
55
|
deadline?: Date;
|
|
49
|
-
}): Promise<
|
|
56
|
+
}): Promise<SubmitEpochProofResult>;
|
|
50
57
|
private validateEpochProofSubmission;
|
|
51
58
|
/**
|
|
52
59
|
* Estimates what submitting the epoch proof would have cost on L1 without actually sending it.
|
|
@@ -62,10 +69,12 @@ export declare class ProverNodePublisher {
|
|
|
62
69
|
batchedBlobInputs: BatchedBlob;
|
|
63
70
|
attestations: ViemCommitteeAttestation[];
|
|
64
71
|
headers: CheckpointHeader[];
|
|
72
|
+
/** Whether the range covers the whole epoch. Governs whether an already-overtaken proof is still worth sending. */
|
|
73
|
+
kind: 'full' | 'partial';
|
|
65
74
|
}): Promise<void>;
|
|
66
75
|
private encodeSubmitEpochProofCalldata;
|
|
67
76
|
private sendSubmitEpochProofTx;
|
|
68
77
|
private getEpochProofPublicInputsArgs;
|
|
69
78
|
private getSubmitEpochProofArgs;
|
|
70
79
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUtcHVibGlzaGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUtcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0saUJBQWlCLENBQUM7QUFFMUUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBR3ZGLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJGLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUduRixPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQXdFLE1BQU0sTUFBTSxDQUFDO0FBSXRHLHNFQUFzRTtBQUN0RSxNQUFNLE1BQU0sc0JBQXNCLEdBQUc7SUFDbkMsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixlQUFlLEVBQUUsRUFBRSxDQUFDO0lBQ3BCLFVBQVUsRUFBRSxFQUFFLENBQUM7SUFDZixZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQ2pCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDWixRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ2IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDNUIsS0FBSyxFQUFFLEtBQUssQ0FBQztDQUNkLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLE1BQU0sc0JBQXNCLEdBQUcsV0FBVyxHQUFHLG1CQUFtQixHQUFHLFFBQVEsQ0FBQztBQUVsRixxQkFBYSxtQkFBbUI7SUFDOUIsT0FBTyxDQUFDLE9BQU8sQ0FBNkI7SUFFNUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFFdEIsU0FBUyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUM7SUFFekMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQztJQUVyQyxTQUFnQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBRXJDLFlBQ0UsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEVBQ3hDLElBQUksRUFBRTtRQUNKLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFDL0IsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNyQixxQkFBcUIsQ0FBQyxFQUFFLFVBQVUsQ0FBQztRQUNuQyxTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7S0FDN0IsRUFDRCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBVTFCO0lBRU0saUJBQWlCLG1CQUV2QjtJQUVNLGdCQUFnQixlQUV0QjtJQUVZLGdCQUFnQixDQUFDLElBQUksRUFBRTtRQUNsQyxXQUFXLEVBQUUsV0FBVyxDQUFDO1FBQ3pCLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztRQUNqQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7UUFDL0IsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDYixpQkFBaUIsRUFBRSxXQUFXLENBQUM7UUFDL0IsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7UUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsbUhBQW1IO1FBQ25ILElBQUksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLG1HQUFtRztRQUNuRyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUM7S0FDakIsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0E0RGxDO1lBRWEsNEJBQTRCO0lBeUUxQzs7OztPQUlHO0lBQ1UsMkJBQTJCLENBQUMsSUFBSSxFQUFFO1FBQzdDLFdBQVcsRUFBRSxXQUFXLENBQUM7UUFDekIsY0FBYyxFQUFFLGdCQUFnQixDQUFDO1FBQ2pDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztRQUMvQixZQUFZLEVBQUUsc0JBQXNCLENBQUM7UUFDckMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNiLGlCQUFpQixFQUFFLFdBQVcsQ0FBQztRQUMvQixZQUFZLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QixtSEFBbUg7UUFDbkgsSUFBSSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7S0FDMUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBc0NoQjtJQUVELE9BQU8sQ0FBQyw4QkFBOEI7WUFnQnhCLHNCQUFzQjtJQWlEcEMsT0FBTyxDQUFDLDZCQUE2QjtJQXVCckMsT0FBTyxDQUFDLHVCQUF1QjtDQXdCaEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA8B,MAAM,iBAAiB,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,KAAK,GAAG,EAAwE,MAAM,MAAM,CAAC;AAItG,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,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,SAAS,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAErC,SAAgB,SAAS,EAAE,SAAS,CAAC;IAErC,YACE,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACJ,cAAc,EAAE,cAAc,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC;QACrB,qBAAqB,CAAC,EAAE,UAAU,CAAC;QACnC,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,EACD,QAAQ,CAAC,EAAE,cAAc,EAU1B;IAEM,iBAAiB,mBAEvB;IAEM,gBAAgB,eAEtB;IAEY,gBAAgB,CAAC,IAAI,EAAE;QAClC,WAAW,EAAE,WAAW,CAAC;QACzB,cAAc,EAAE,gBAAgB,CAAC;QACjC,YAAY,EAAE,gBAAgB,CAAC;QAC/B,YAAY,EAAE,sBAAsB,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC;QACb,iBAAiB,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,wBAAwB,EAAE,CAAC;QACzC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,mGAAmG;QACnG,QAAQ,CAAC,EAAE,IAAI,CAAC;KACjB,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA8B,MAAM,iBAAiB,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,KAAK,GAAG,EAAwE,MAAM,MAAM,CAAC;AAItG,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,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,mBAAmB,GAAG,QAAQ,CAAC;AAElF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,SAAS,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAErC,SAAgB,SAAS,EAAE,SAAS,CAAC;IAErC,YACE,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACJ,cAAc,EAAE,cAAc,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC;QACrB,qBAAqB,CAAC,EAAE,UAAU,CAAC;QACnC,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,EACD,QAAQ,CAAC,EAAE,cAAc,EAU1B;IAEM,iBAAiB,mBAEvB;IAEM,gBAAgB,eAEtB;IAEY,gBAAgB,CAAC,IAAI,EAAE;QAClC,WAAW,EAAE,WAAW,CAAC;QACzB,cAAc,EAAE,gBAAgB,CAAC;QACjC,YAAY,EAAE,gBAAgB,CAAC;QAC/B,YAAY,EAAE,sBAAsB,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC;QACb,iBAAiB,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,wBAAwB,EAAE,CAAC;QACzC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,mHAAmH;QACnH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QACzB,mGAAmG;QACnG,QAAQ,CAAC,EAAE,IAAI,CAAC;KACjB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA4DlC;YAEa,4BAA4B;IAyE1C;;;;OAIG;IACU,2BAA2B,CAAC,IAAI,EAAE;QAC7C,WAAW,EAAE,WAAW,CAAC;QACzB,cAAc,EAAE,gBAAgB,CAAC;QACjC,YAAY,EAAE,gBAAgB,CAAC;QAC/B,YAAY,EAAE,sBAAsB,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC;QACb,iBAAiB,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,wBAAwB,EAAE,CAAC;QACzC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,mHAAmH;QACnH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;KAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB;IAED,OAAO,CAAC,8BAA8B;YAgBxB,sBAAsB;IAiDpC,OAAO,CAAC,6BAA6B;IAuBrC,OAAO,CAAC,uBAAuB;CAwBhC"}
|
|
@@ -33,19 +33,32 @@ export class ProverNodePublisher {
|
|
|
33
33
|
return this.l1TxUtils.getSenderAddress();
|
|
34
34
|
}
|
|
35
35
|
async submitEpochProof(args) {
|
|
36
|
-
const { epochNumber, fromCheckpoint, toCheckpoint } = args;
|
|
36
|
+
const { epochNumber, fromCheckpoint, toCheckpoint, publicInputs } = args;
|
|
37
37
|
const ctx = {
|
|
38
38
|
epochNumber,
|
|
39
39
|
fromCheckpoint,
|
|
40
40
|
toCheckpoint
|
|
41
41
|
};
|
|
42
42
|
const timer = new Timer();
|
|
43
|
+
// The rollup reverts on a second submission from the same prover for the same epoch and length, so don't
|
|
44
|
+
// spend gas on one. Reachable when re-running an epoch we have already submitted a proof for, which is
|
|
45
|
+
// not a failure: our reward shares for it are already registered.
|
|
46
|
+
const proverId = EthAddress.fromField(publicInputs.constants.proverId);
|
|
47
|
+
const length = toCheckpoint - fromCheckpoint + 1;
|
|
48
|
+
if (await this.rollupContract.getHasSubmittedProof(epochNumber, length, proverId)) {
|
|
49
|
+
this.log.warn(`Skipping epoch proof submission as prover already submitted a proof for this epoch`, {
|
|
50
|
+
...ctx,
|
|
51
|
+
proverId,
|
|
52
|
+
length
|
|
53
|
+
});
|
|
54
|
+
return 'already-submitted';
|
|
55
|
+
}
|
|
43
56
|
// Validate epoch proof range and hashes are correct before submitting
|
|
44
57
|
await this.validateEpochProofSubmission(args);
|
|
45
58
|
const txReceipt = await this.sendSubmitEpochProofTx(args);
|
|
46
59
|
if (!txReceipt) {
|
|
47
60
|
this.log.error(`Failed to mine submitEpochProof tx`, undefined, ctx);
|
|
48
|
-
return
|
|
61
|
+
return 'failed';
|
|
49
62
|
}
|
|
50
63
|
try {
|
|
51
64
|
this.metrics.recordSenderBalance(await this.l1TxUtils.getSenderBalance(), this.l1TxUtils.getSenderAddress().toString());
|
|
@@ -71,18 +84,22 @@ export class ProverNodePublisher {
|
|
|
71
84
|
...ctx
|
|
72
85
|
});
|
|
73
86
|
this.metrics.recordSubmitProof(timer.ms(), stats);
|
|
74
|
-
return
|
|
87
|
+
return 'published';
|
|
75
88
|
}
|
|
76
89
|
this.metrics.recordFailedTx();
|
|
77
90
|
this.log.error(`Rollup submitEpochProof tx reverted ${txReceipt.transactionHash}`, undefined, ctx);
|
|
78
|
-
return
|
|
91
|
+
return 'failed';
|
|
79
92
|
}
|
|
80
93
|
async validateEpochProofSubmission(args) {
|
|
81
|
-
const { fromCheckpoint, toCheckpoint, publicInputs, batchedBlobInputs } = args;
|
|
94
|
+
const { fromCheckpoint, toCheckpoint, publicInputs, batchedBlobInputs, kind } = args;
|
|
82
95
|
// Check that the checkpoint numbers match the expected epoch to be proven
|
|
83
96
|
const { pending, proven } = await this.rollupContract.getTips();
|
|
84
|
-
//
|
|
85
|
-
|
|
97
|
+
// A partial proof shorter than what is already proven earns nothing: rewards go only to provers holding
|
|
98
|
+
// shares in the epoch's longest proven length, which a shorter range can never reach. A full-epoch proof
|
|
99
|
+
// always matches that length, and the rollup accepts any proof whose predecessor is proven, so it still
|
|
100
|
+
// registers our shares once the proven tip has run past this epoch entirely (another prover proving into a
|
|
101
|
+
// later one) and stays worth sending until the epoch's submission window closes.
|
|
102
|
+
if (kind === 'partial' && proven > toCheckpoint) {
|
|
86
103
|
throw new Error(`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as proven checkpoint is ${proven}`);
|
|
87
104
|
}
|
|
88
105
|
// toCheckpoint can't be greater than pending
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "5.3.0-nightly.
|
|
3
|
+
"version": "5.3.0-nightly.20260903",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -56,28 +56,28 @@
|
|
|
56
56
|
]
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@aztec/archiver": "5.3.0-nightly.
|
|
60
|
-
"@aztec/bb-prover": "5.3.0-nightly.
|
|
61
|
-
"@aztec/blob-client": "5.3.0-nightly.
|
|
62
|
-
"@aztec/blob-lib": "5.3.0-nightly.
|
|
63
|
-
"@aztec/constants": "5.3.0-nightly.
|
|
64
|
-
"@aztec/epoch-cache": "5.3.0-nightly.
|
|
65
|
-
"@aztec/ethereum": "5.3.0-nightly.
|
|
66
|
-
"@aztec/foundation": "5.3.0-nightly.
|
|
67
|
-
"@aztec/kv-store": "5.3.0-nightly.
|
|
68
|
-
"@aztec/l1-artifacts": "5.3.0-nightly.
|
|
69
|
-
"@aztec/native": "5.3.0-nightly.
|
|
70
|
-
"@aztec/node-keystore": "5.3.0-nightly.
|
|
71
|
-
"@aztec/node-lib": "5.3.0-nightly.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "5.3.0-nightly.
|
|
73
|
-
"@aztec/p2p": "5.3.0-nightly.
|
|
74
|
-
"@aztec/protocol-contracts": "5.3.0-nightly.
|
|
75
|
-
"@aztec/prover-client": "5.3.0-nightly.
|
|
76
|
-
"@aztec/sequencer-client": "5.3.0-nightly.
|
|
77
|
-
"@aztec/simulator": "5.3.0-nightly.
|
|
78
|
-
"@aztec/stdlib": "5.3.0-nightly.
|
|
79
|
-
"@aztec/telemetry-client": "5.3.0-nightly.
|
|
80
|
-
"@aztec/world-state": "5.3.0-nightly.
|
|
59
|
+
"@aztec/archiver": "5.3.0-nightly.20260903",
|
|
60
|
+
"@aztec/bb-prover": "5.3.0-nightly.20260903",
|
|
61
|
+
"@aztec/blob-client": "5.3.0-nightly.20260903",
|
|
62
|
+
"@aztec/blob-lib": "5.3.0-nightly.20260903",
|
|
63
|
+
"@aztec/constants": "5.3.0-nightly.20260903",
|
|
64
|
+
"@aztec/epoch-cache": "5.3.0-nightly.20260903",
|
|
65
|
+
"@aztec/ethereum": "5.3.0-nightly.20260903",
|
|
66
|
+
"@aztec/foundation": "5.3.0-nightly.20260903",
|
|
67
|
+
"@aztec/kv-store": "5.3.0-nightly.20260903",
|
|
68
|
+
"@aztec/l1-artifacts": "5.3.0-nightly.20260903",
|
|
69
|
+
"@aztec/native": "5.3.0-nightly.20260903",
|
|
70
|
+
"@aztec/node-keystore": "5.3.0-nightly.20260903",
|
|
71
|
+
"@aztec/node-lib": "5.3.0-nightly.20260903",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "5.3.0-nightly.20260903",
|
|
73
|
+
"@aztec/p2p": "5.3.0-nightly.20260903",
|
|
74
|
+
"@aztec/protocol-contracts": "5.3.0-nightly.20260903",
|
|
75
|
+
"@aztec/prover-client": "5.3.0-nightly.20260903",
|
|
76
|
+
"@aztec/sequencer-client": "5.3.0-nightly.20260903",
|
|
77
|
+
"@aztec/simulator": "5.3.0-nightly.20260903",
|
|
78
|
+
"@aztec/stdlib": "5.3.0-nightly.20260903",
|
|
79
|
+
"@aztec/telemetry-client": "5.3.0-nightly.20260903",
|
|
80
|
+
"@aztec/world-state": "5.3.0-nightly.20260903",
|
|
81
81
|
"source-map-support": "^0.5.21",
|
|
82
82
|
"tslib": "^2.4.0",
|
|
83
83
|
"viem": "npm:@aztec/viem@2.38.2"
|
package/src/job/epoch-session.ts
CHANGED
|
@@ -382,6 +382,15 @@ export class EpochSession implements Traceable {
|
|
|
382
382
|
this.state = 'completed';
|
|
383
383
|
this.deps.metrics.recordProvingJob(timer.ms(), checkpointCount, epochSizeBlocks, epochSizeTxs);
|
|
384
384
|
return;
|
|
385
|
+
case 'already-submitted':
|
|
386
|
+
// L1 already holds our proof for this epoch (e.g. a re-prove after restart), so there is nothing to
|
|
387
|
+
// retry or report as failed. Not recorded as a proving job since no new proof landed.
|
|
388
|
+
this.log.info(
|
|
389
|
+
`Proof for epoch ${this.spec.epochNumber} (checkpoints ${fromCheckpoint}..${toCheckpoint}) was already submitted`,
|
|
390
|
+
{ uuid: this.uuid, ...this.spec },
|
|
391
|
+
);
|
|
392
|
+
this.state = 'completed';
|
|
393
|
+
return;
|
|
385
394
|
case 'superseded':
|
|
386
395
|
this.log.info(`EpochSession ${this.uuid} superseded by a longer candidate`, {
|
|
387
396
|
uuid: this.uuid,
|
|
@@ -49,8 +49,11 @@ export type PublishCandidate = {
|
|
|
49
49
|
headers: CheckpointHeader[];
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
/**
|
|
53
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Terminal outcome for a candidate. The promise from `submit()` resolves with one of these. `'already-submitted'`
|
|
54
|
+
* means L1 already holds a proof of this length from this prover for the epoch, so nothing was sent.
|
|
55
|
+
*/
|
|
56
|
+
export type PublishOutcome = 'published' | 'already-submitted' | 'superseded' | 'failed' | 'withdrawn' | 'expired';
|
|
54
57
|
|
|
55
58
|
/** Subset of `ProverPublisherFactory` the service uses — single async `create()` call. */
|
|
56
59
|
export type PublisherFactoryLike = Pick<ProverPublisherFactory, 'create'>;
|
|
@@ -131,7 +134,8 @@ export class ProofPublishingService {
|
|
|
131
134
|
/**
|
|
132
135
|
* Offers a proof candidate to the service. The returned promise resolves once the
|
|
133
136
|
* service settles the candidate's fate: `'published'` if it wins and L1 accepts it,
|
|
134
|
-
* `'
|
|
137
|
+
* `'already-submitted'` if this prover had already registered a proof of the same length
|
|
138
|
+
* for the epoch, `'superseded'` if a longer candidate for the same epoch wins, `'failed'` if the
|
|
135
139
|
* L1 submission errored, `'withdrawn'` if the originating session cancelled,
|
|
136
140
|
* `'expired'` if the candidate's `deadline` elapsed before publishing started.
|
|
137
141
|
*/
|
|
@@ -329,6 +333,7 @@ export class ProofPublishingService {
|
|
|
329
333
|
private async runPublish(candidate: PublishCandidate, publisher: PublisherLike): Promise<PublishOutcome> {
|
|
330
334
|
const submitArgs = {
|
|
331
335
|
epochNumber: candidate.epoch,
|
|
336
|
+
kind: candidate.kind,
|
|
332
337
|
fromCheckpoint: candidate.fromCheckpoint,
|
|
333
338
|
toCheckpoint: candidate.toCheckpoint,
|
|
334
339
|
publicInputs: candidate.publicInputs,
|
|
@@ -357,8 +362,7 @@ export class ProofPublishingService {
|
|
|
357
362
|
}
|
|
358
363
|
|
|
359
364
|
try {
|
|
360
|
-
|
|
361
|
-
return success ? 'published' : 'failed';
|
|
365
|
+
return await publisher.submitEpochProof(submitArgs);
|
|
362
366
|
} catch (err) {
|
|
363
367
|
this.log.error(`Error publishing candidate ${candidate.id}`, err, {
|
|
364
368
|
candidateId: candidate.id,
|
|
@@ -33,6 +33,12 @@ export type L1SubmitEpochProofArgs = {
|
|
|
33
33
|
proof: Proof;
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Result of a proof submission attempt. `'already-submitted'` means this prover had already registered a proof of
|
|
38
|
+
* the same length for the epoch on L1, so nothing was sent; it is not a failure.
|
|
39
|
+
*/
|
|
40
|
+
export type SubmitEpochProofResult = 'published' | 'already-submitted' | 'failed';
|
|
41
|
+
|
|
36
42
|
export class ProverNodePublisher {
|
|
37
43
|
private metrics: ProverNodePublisherMetrics;
|
|
38
44
|
|
|
@@ -81,20 +87,37 @@ export class ProverNodePublisher {
|
|
|
81
87
|
batchedBlobInputs: BatchedBlob;
|
|
82
88
|
attestations: ViemCommitteeAttestation[];
|
|
83
89
|
headers: CheckpointHeader[];
|
|
90
|
+
/** Whether the range covers the whole epoch. Governs whether an already-overtaken proof is still worth sending. */
|
|
91
|
+
kind: 'full' | 'partial';
|
|
84
92
|
/** Wall-clock deadline (proof-submission window end) past which the L1 tx should stop retrying. */
|
|
85
93
|
deadline?: Date;
|
|
86
|
-
}): Promise<
|
|
87
|
-
const { epochNumber, fromCheckpoint, toCheckpoint } = args;
|
|
94
|
+
}): Promise<SubmitEpochProofResult> {
|
|
95
|
+
const { epochNumber, fromCheckpoint, toCheckpoint, publicInputs } = args;
|
|
88
96
|
const ctx = { epochNumber, fromCheckpoint, toCheckpoint };
|
|
89
97
|
|
|
90
98
|
const timer = new Timer();
|
|
99
|
+
|
|
100
|
+
// The rollup reverts on a second submission from the same prover for the same epoch and length, so don't
|
|
101
|
+
// spend gas on one. Reachable when re-running an epoch we have already submitted a proof for, which is
|
|
102
|
+
// not a failure: our reward shares for it are already registered.
|
|
103
|
+
const proverId = EthAddress.fromField(publicInputs.constants.proverId);
|
|
104
|
+
const length = toCheckpoint - fromCheckpoint + 1;
|
|
105
|
+
if (await this.rollupContract.getHasSubmittedProof(epochNumber, length, proverId)) {
|
|
106
|
+
this.log.warn(`Skipping epoch proof submission as prover already submitted a proof for this epoch`, {
|
|
107
|
+
...ctx,
|
|
108
|
+
proverId,
|
|
109
|
+
length,
|
|
110
|
+
});
|
|
111
|
+
return 'already-submitted';
|
|
112
|
+
}
|
|
113
|
+
|
|
91
114
|
// Validate epoch proof range and hashes are correct before submitting
|
|
92
115
|
await this.validateEpochProofSubmission(args);
|
|
93
116
|
|
|
94
117
|
const txReceipt = await this.sendSubmitEpochProofTx(args);
|
|
95
118
|
if (!txReceipt) {
|
|
96
119
|
this.log.error(`Failed to mine submitEpochProof tx`, undefined, ctx);
|
|
97
|
-
return
|
|
120
|
+
return 'failed';
|
|
98
121
|
}
|
|
99
122
|
|
|
100
123
|
try {
|
|
@@ -122,12 +145,12 @@ export class ProverNodePublisher {
|
|
|
122
145
|
};
|
|
123
146
|
this.log.info(`Published epoch proof to L1 rollup contract`, { ...stats, ...ctx });
|
|
124
147
|
this.metrics.recordSubmitProof(timer.ms(), stats);
|
|
125
|
-
return
|
|
148
|
+
return 'published';
|
|
126
149
|
}
|
|
127
150
|
|
|
128
151
|
this.metrics.recordFailedTx();
|
|
129
152
|
this.log.error(`Rollup submitEpochProof tx reverted ${txReceipt.transactionHash}`, undefined, ctx);
|
|
130
|
-
return
|
|
153
|
+
return 'failed';
|
|
131
154
|
}
|
|
132
155
|
|
|
133
156
|
private async validateEpochProofSubmission(args: {
|
|
@@ -138,13 +161,18 @@ export class ProverNodePublisher {
|
|
|
138
161
|
batchedBlobInputs: BatchedBlob;
|
|
139
162
|
attestations: ViemCommitteeAttestation[];
|
|
140
163
|
headers: CheckpointHeader[];
|
|
164
|
+
kind: 'full' | 'partial';
|
|
141
165
|
}) {
|
|
142
|
-
const { fromCheckpoint, toCheckpoint, publicInputs, batchedBlobInputs } = args;
|
|
166
|
+
const { fromCheckpoint, toCheckpoint, publicInputs, batchedBlobInputs, kind } = args;
|
|
143
167
|
|
|
144
168
|
// Check that the checkpoint numbers match the expected epoch to be proven
|
|
145
169
|
const { pending, proven } = await this.rollupContract.getTips();
|
|
146
|
-
//
|
|
147
|
-
|
|
170
|
+
// A partial proof shorter than what is already proven earns nothing: rewards go only to provers holding
|
|
171
|
+
// shares in the epoch's longest proven length, which a shorter range can never reach. A full-epoch proof
|
|
172
|
+
// always matches that length, and the rollup accepts any proof whose predecessor is proven, so it still
|
|
173
|
+
// registers our shares once the proven tip has run past this epoch entirely (another prover proving into a
|
|
174
|
+
// later one) and stays worth sending until the epoch's submission window closes.
|
|
175
|
+
if (kind === 'partial' && proven > toCheckpoint) {
|
|
148
176
|
throw new Error(
|
|
149
177
|
`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as proven checkpoint is ${proven}`,
|
|
150
178
|
);
|
|
@@ -212,6 +240,8 @@ export class ProverNodePublisher {
|
|
|
212
240
|
batchedBlobInputs: BatchedBlob;
|
|
213
241
|
attestations: ViemCommitteeAttestation[];
|
|
214
242
|
headers: CheckpointHeader[];
|
|
243
|
+
/** Whether the range covers the whole epoch. Governs whether an already-overtaken proof is still worth sending. */
|
|
244
|
+
kind: 'full' | 'partial';
|
|
215
245
|
}): Promise<void> {
|
|
216
246
|
const { epochNumber, fromCheckpoint, toCheckpoint } = args;
|
|
217
247
|
|