@aztec/prover-node 6.0.0-nightly.20260727 → 6.0.0-nightly.20260729
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/checkpoint-prover.d.ts +12 -3
- package/dest/job/checkpoint-prover.d.ts.map +1 -1
- package/dest/job/checkpoint-prover.js +35 -12
- package/dest/prover-node.js +2 -2
- package/dest/session-manager.d.ts +2 -2
- package/dest/session-manager.d.ts.map +1 -1
- package/dest/session-manager.js +9 -3
- package/package.json +24 -24
- package/src/job/checkpoint-prover.ts +33 -11
- package/src/prover-node.ts +2 -2
- package/src/session-manager.ts +6 -3
|
@@ -87,8 +87,6 @@ export declare class CheckpointProver {
|
|
|
87
87
|
readonly previousBlockHeader: BlockHeader;
|
|
88
88
|
readonly l1ToL2Messages: Fr[];
|
|
89
89
|
readonly previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>;
|
|
90
|
-
/** Per-prover tx map — populated by the internal gather. Empty until then. */
|
|
91
|
-
readonly txs: Map<string, Tx>;
|
|
92
90
|
/** Resolved by the sub-tree on success, rejected on cancel/failure. */
|
|
93
91
|
private readonly blockProofs;
|
|
94
92
|
/** Block-level proving was fully *enqueued* (a progress marker; the sub-tree may still be proving). */
|
|
@@ -131,7 +129,18 @@ export declare class CheckpointProver {
|
|
|
131
129
|
* (e.g. the executeCheckpoint `finally`) is a harmless no-op.
|
|
132
130
|
*/
|
|
133
131
|
private failBlockProofs;
|
|
132
|
+
private fetchTxs;
|
|
134
133
|
private gatherTxs;
|
|
134
|
+
/**
|
|
135
|
+
* Re-fetches this checkpoint's txs from the tx pool for a post-mortem failure upload.
|
|
136
|
+
*
|
|
137
|
+
* The prover does not cache txs on the heap — they are consumed during proving and dropped — so the
|
|
138
|
+
* durable pool (which keeps a mined tx until L1 finality, with A-1274's retention margin covering a
|
|
139
|
+
* lagging prover) is the source of truth, read back by hash here. Best-effort: any tx the pool can
|
|
140
|
+
* no longer supply is logged and omitted rather than failing the upload, since a partial post-mortem
|
|
141
|
+
* snapshot is still useful for diagnosis.
|
|
142
|
+
*/
|
|
143
|
+
getTxsForUpload(): Promise<Map<string, Tx>>;
|
|
135
144
|
private executeCheckpoint;
|
|
136
145
|
/**
|
|
137
146
|
* Mark cancelled. Idempotent. Aborts in-flight work, rejects the block-proof promise,
|
|
@@ -151,4 +160,4 @@ export declare class CheckpointProver {
|
|
|
151
160
|
private processTxs;
|
|
152
161
|
private createFork;
|
|
153
162
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvY2hlY2twb2ludC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLE9BQU8sRUFBZSxLQUFLLFdBQVcsRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFpQyxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEgsT0FBTyxLQUFLLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkYsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc3RixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQWUsRUFBRSxFQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFFN0UsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-prover.d.ts","sourceRoot":"","sources":["../../src/job/checkpoint-prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEjG,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,yBAAyB,CAAC;AAGnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAiC,UAAU,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClH,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,KAAK,EAAE,oBAAoB,EAAW,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"checkpoint-prover.d.ts","sourceRoot":"","sources":["../../src/job/checkpoint-prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,6 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
39
39
|
previousBlockHeader;
|
|
40
40
|
l1ToL2Messages;
|
|
41
41
|
previousArchiveSiblingPath;
|
|
42
|
-
/** Per-prover tx map — populated by the internal gather. Empty until then. */ txs;
|
|
43
42
|
/** Resolved by the sub-tree on success, rejected on cancel/failure. */ blockProofs;
|
|
44
43
|
// Three independent lifecycle facts — deliberately not collapsed into one status enum, because several
|
|
45
44
|
// combinations are legal and relied on: a prover can be `completed` and then `cancelled` (routine
|
|
@@ -55,7 +54,6 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
55
54
|
/** Tracks the cancel-driven teardown so `whenDone()` can await it. */ cancelPromise;
|
|
56
55
|
constructor(args, deps){
|
|
57
56
|
this.deps = deps;
|
|
58
|
-
this.txs = new Map();
|
|
59
57
|
this.blockProofs = promiseWithResolvers();
|
|
60
58
|
this.completed = false;
|
|
61
59
|
this.failed = false;
|
|
@@ -150,20 +148,45 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
150
148
|
}
|
|
151
149
|
this.blockProofs.reject(err);
|
|
152
150
|
}
|
|
153
|
-
async
|
|
151
|
+
/** Fetches every tx in this checkpoint from the tx pool (by hash, via the block tx effects). */ async fetchTxs() {
|
|
154
152
|
const deadline = new Date(this.deps.dateProvider.now() + this.deps.txGatheringTimeoutMs);
|
|
155
153
|
const txsByBlock = await Promise.all(this.checkpoint.blocks.map((block)=>this.deps.txProvider.getTxsForBlock(block, {
|
|
156
154
|
deadline
|
|
157
155
|
})));
|
|
158
|
-
const txs = txsByBlock.
|
|
159
|
-
const missingTxs = txsByBlock.
|
|
156
|
+
const txs = txsByBlock.flatMap(({ txs })=>txs);
|
|
157
|
+
const missingTxs = txsByBlock.flatMap(({ missingTxs })=>missingTxs);
|
|
158
|
+
return {
|
|
159
|
+
txs: new Map(txs.map((tx)=>[
|
|
160
|
+
tx.getTxHash().toString(),
|
|
161
|
+
tx
|
|
162
|
+
])),
|
|
163
|
+
missingTxs
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
async gatherTxs() {
|
|
167
|
+
const { txs, missingTxs } = await this.fetchTxs();
|
|
160
168
|
if (missingTxs.length > 0) {
|
|
161
169
|
throw new Error(`Txs not found for checkpoint ${this.checkpoint.number}: ${missingTxs.map((hash)=>hash.toString()).join(', ')}`);
|
|
162
170
|
}
|
|
163
|
-
return
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
171
|
+
return txs;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Re-fetches this checkpoint's txs from the tx pool for a post-mortem failure upload.
|
|
175
|
+
*
|
|
176
|
+
* The prover does not cache txs on the heap — they are consumed during proving and dropped — so the
|
|
177
|
+
* durable pool (which keeps a mined tx until L1 finality, with A-1274's retention margin covering a
|
|
178
|
+
* lagging prover) is the source of truth, read back by hash here. Best-effort: any tx the pool can
|
|
179
|
+
* no longer supply is logged and omitted rather than failing the upload, since a partial post-mortem
|
|
180
|
+
* snapshot is still useful for diagnosis.
|
|
181
|
+
*/ async getTxsForUpload() {
|
|
182
|
+
const { txs, missingTxs } = await this.fetchTxs();
|
|
183
|
+
if (missingTxs.length > 0) {
|
|
184
|
+
this.deps.log.warn(`Missing ${missingTxs.length} tx(s) re-fetching checkpoint ${this.checkpoint.number} for failure upload`, {
|
|
185
|
+
checkpointNumber: this.checkpoint.number,
|
|
186
|
+
missingTxCount: missingTxs.length
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return txs;
|
|
167
190
|
}
|
|
168
191
|
async executeCheckpoint(txs) {
|
|
169
192
|
const signal = this.abortController.signal;
|
|
@@ -174,9 +197,9 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
174
197
|
if (this.deps.checkpointProveOverride) {
|
|
175
198
|
await this.deps.checkpointProveOverride();
|
|
176
199
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
200
|
+
// The gathered txs are consumed locally below (public processing + sub-tree) and then dropped.
|
|
201
|
+
// They are deliberately not retained on the instance: the tx pool is the durable source and
|
|
202
|
+
// `getTxsForUpload` re-fetches them by hash if a post-mortem upload needs them.
|
|
180
203
|
const { chainId, version } = this.checkpoint.blocks[0].header.globalVariables;
|
|
181
204
|
const checkpointConstants = CheckpointConstantData.from({
|
|
182
205
|
chainId,
|
package/dest/prover-node.js
CHANGED
|
@@ -879,7 +879,7 @@ import { SessionManager } from './session-manager.js';
|
|
|
879
879
|
if (!this.config.proverNodeFailedEpochStore || checkpoints.length === 0) {
|
|
880
880
|
return undefined;
|
|
881
881
|
}
|
|
882
|
-
const data = SessionManager.buildProvingData(checkpoints);
|
|
882
|
+
const data = await SessionManager.buildProvingData(checkpoints);
|
|
883
883
|
return await uploadEpochProofFailure(this.config.proverNodeFailedEpochStore, // The session's own id; `uploadEpochProofFailure` already prefixes the path with the epoch number.
|
|
884
884
|
id, data, this.l2BlockSource, this.worldState, assertRequired(pick(this.config, 'l1ChainId', 'rollupVersion', 'dataDirectory')), this.log);
|
|
885
885
|
}
|
|
@@ -905,7 +905,7 @@ import { SessionManager } from './session-manager.js';
|
|
|
905
905
|
});
|
|
906
906
|
return undefined;
|
|
907
907
|
}
|
|
908
|
-
const data = SessionManager.buildProvingData([
|
|
908
|
+
const data = await SessionManager.buildProvingData([
|
|
909
909
|
prover
|
|
910
910
|
]);
|
|
911
911
|
return await uploadEpochProofFailure(this.config.proverNodeFailedEpochStore, // The prover's content-addressed id; the epoch number is already in the upload path.
|
|
@@ -138,7 +138,7 @@ export declare class SessionManager {
|
|
|
138
138
|
* checkpoint provers. Includes every checkpoint regardless of whether sub-tree proving
|
|
139
139
|
* completed — partial state is still useful for post-mortem analysis.
|
|
140
140
|
*/
|
|
141
|
-
static buildProvingData(checkpoints: readonly CheckpointProver[]): EpochProvingJobData
|
|
141
|
+
static buildProvingData(checkpoints: readonly CheckpointProver[]): Promise<EpochProvingJobData>;
|
|
142
142
|
private atMaxSessionLimit;
|
|
143
143
|
private epochsForTrigger;
|
|
144
144
|
private nextUnprovenEpoch;
|
|
@@ -155,4 +155,4 @@ export declare class SessionManager {
|
|
|
155
155
|
private isProvenChainEncompassing;
|
|
156
156
|
private getL1Constants;
|
|
157
157
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2Vzc2lvbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUXpELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssaUJBQWlCLEVBRXRCLEtBQUssV0FBVyxFQUVqQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsdUNBQXVDO0FBQ3ZDLE1BQU0sTUFBTSxnQkFBZ0IsR0FDeEI7SUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO0lBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQTtDQUFFLEdBQzFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|
package/dest/session-manager.js
CHANGED
|
@@ -341,14 +341,20 @@ import { EpochSession, specKey } from './job/epoch-session.js';
|
|
|
341
341
|
* Builds the EpochProvingJobData snapshot for a post-mortem failure upload from a set of
|
|
342
342
|
* checkpoint provers. Includes every checkpoint regardless of whether sub-tree proving
|
|
343
343
|
* completed — partial state is still useful for post-mortem analysis.
|
|
344
|
-
*/ static buildProvingData(checkpoints) {
|
|
344
|
+
*/ static async buildProvingData(checkpoints) {
|
|
345
345
|
if (checkpoints.length === 0) {
|
|
346
346
|
throw new Error('Cannot build proving data from an empty checkpoint set');
|
|
347
347
|
}
|
|
348
|
+
// Provers no longer cache their txs; re-fetch each checkpoint's txs from the tx pool (concurrently)
|
|
349
|
+
// for the snapshot. The pool retains them past the proving window (A-1274), so this is durable.
|
|
350
|
+
const perCheckpoint = await Promise.all(checkpoints.map(async (c)=>({
|
|
351
|
+
c,
|
|
352
|
+
txs: await c.getTxsForUpload()
|
|
353
|
+
})));
|
|
348
354
|
const txs = new Map();
|
|
349
355
|
const l1ToL2Messages = {};
|
|
350
|
-
for (const c of
|
|
351
|
-
for (const [hash, tx] of
|
|
356
|
+
for (const { c, txs: checkpointTxs } of perCheckpoint){
|
|
357
|
+
for (const [hash, tx] of checkpointTxs){
|
|
352
358
|
txs.set(hash, tx);
|
|
353
359
|
}
|
|
354
360
|
l1ToL2Messages[c.checkpoint.number] = c.l1ToL2Messages;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "6.0.0-nightly.
|
|
3
|
+
"version": "6.0.0-nightly.20260729",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -56,29 +56,29 @@
|
|
|
56
56
|
]
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@aztec/archiver": "6.0.0-nightly.
|
|
60
|
-
"@aztec/bb-prover": "6.0.0-nightly.
|
|
61
|
-
"@aztec/bb.js": "6.0.0-nightly.
|
|
62
|
-
"@aztec/blob-client": "6.0.0-nightly.
|
|
63
|
-
"@aztec/blob-lib": "6.0.0-nightly.
|
|
64
|
-
"@aztec/constants": "6.0.0-nightly.
|
|
65
|
-
"@aztec/epoch-cache": "6.0.0-nightly.
|
|
66
|
-
"@aztec/ethereum": "6.0.0-nightly.
|
|
67
|
-
"@aztec/foundation": "6.0.0-nightly.
|
|
68
|
-
"@aztec/kv-store": "6.0.0-nightly.
|
|
69
|
-
"@aztec/l1-artifacts": "6.0.0-nightly.
|
|
70
|
-
"@aztec/native": "6.0.0-nightly.
|
|
71
|
-
"@aztec/node-keystore": "6.0.0-nightly.
|
|
72
|
-
"@aztec/node-lib": "6.0.0-nightly.
|
|
73
|
-
"@aztec/noir-protocol-circuits-types": "6.0.0-nightly.
|
|
74
|
-
"@aztec/p2p": "6.0.0-nightly.
|
|
75
|
-
"@aztec/protocol-contracts": "6.0.0-nightly.
|
|
76
|
-
"@aztec/prover-client": "6.0.0-nightly.
|
|
77
|
-
"@aztec/sequencer-client": "6.0.0-nightly.
|
|
78
|
-
"@aztec/simulator": "6.0.0-nightly.
|
|
79
|
-
"@aztec/stdlib": "6.0.0-nightly.
|
|
80
|
-
"@aztec/telemetry-client": "6.0.0-nightly.
|
|
81
|
-
"@aztec/world-state": "6.0.0-nightly.
|
|
59
|
+
"@aztec/archiver": "6.0.0-nightly.20260729",
|
|
60
|
+
"@aztec/bb-prover": "6.0.0-nightly.20260729",
|
|
61
|
+
"@aztec/bb.js": "6.0.0-nightly.20260729",
|
|
62
|
+
"@aztec/blob-client": "6.0.0-nightly.20260729",
|
|
63
|
+
"@aztec/blob-lib": "6.0.0-nightly.20260729",
|
|
64
|
+
"@aztec/constants": "6.0.0-nightly.20260729",
|
|
65
|
+
"@aztec/epoch-cache": "6.0.0-nightly.20260729",
|
|
66
|
+
"@aztec/ethereum": "6.0.0-nightly.20260729",
|
|
67
|
+
"@aztec/foundation": "6.0.0-nightly.20260729",
|
|
68
|
+
"@aztec/kv-store": "6.0.0-nightly.20260729",
|
|
69
|
+
"@aztec/l1-artifacts": "6.0.0-nightly.20260729",
|
|
70
|
+
"@aztec/native": "6.0.0-nightly.20260729",
|
|
71
|
+
"@aztec/node-keystore": "6.0.0-nightly.20260729",
|
|
72
|
+
"@aztec/node-lib": "6.0.0-nightly.20260729",
|
|
73
|
+
"@aztec/noir-protocol-circuits-types": "6.0.0-nightly.20260729",
|
|
74
|
+
"@aztec/p2p": "6.0.0-nightly.20260729",
|
|
75
|
+
"@aztec/protocol-contracts": "6.0.0-nightly.20260729",
|
|
76
|
+
"@aztec/prover-client": "6.0.0-nightly.20260729",
|
|
77
|
+
"@aztec/sequencer-client": "6.0.0-nightly.20260729",
|
|
78
|
+
"@aztec/simulator": "6.0.0-nightly.20260729",
|
|
79
|
+
"@aztec/stdlib": "6.0.0-nightly.20260729",
|
|
80
|
+
"@aztec/telemetry-client": "6.0.0-nightly.20260729",
|
|
81
|
+
"@aztec/world-state": "6.0.0-nightly.20260729",
|
|
82
82
|
"source-map-support": "^0.5.21",
|
|
83
83
|
"tslib": "^2.4.0",
|
|
84
84
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
@@ -18,7 +18,7 @@ import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
|
18
18
|
import type { ForkMerkleTreeOperations, ITxProvider } from '@aztec/stdlib/interfaces/server';
|
|
19
19
|
import { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
20
20
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
21
|
-
import type { BlockHeader, ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
21
|
+
import type { BlockHeader, ProcessedTx, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
22
22
|
|
|
23
23
|
import type { ProverNodeJobMetrics } from '../metrics.js';
|
|
24
24
|
|
|
@@ -99,9 +99,6 @@ export class CheckpointProver {
|
|
|
99
99
|
readonly l1ToL2Messages: Fr[];
|
|
100
100
|
readonly previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>;
|
|
101
101
|
|
|
102
|
-
/** Per-prover tx map — populated by the internal gather. Empty until then. */
|
|
103
|
-
readonly txs: Map<string, Tx> = new Map();
|
|
104
|
-
|
|
105
102
|
/** Resolved by the sub-tree on success, rejected on cancel/failure. */
|
|
106
103
|
private readonly blockProofs: PromiseWithResolvers<SubTreeResult['blockProofOutputs']> = promiseWithResolvers();
|
|
107
104
|
|
|
@@ -232,20 +229,45 @@ export class CheckpointProver {
|
|
|
232
229
|
this.blockProofs.reject(err);
|
|
233
230
|
}
|
|
234
231
|
|
|
235
|
-
|
|
232
|
+
/** Fetches every tx in this checkpoint from the tx pool (by hash, via the block tx effects). */
|
|
233
|
+
private async fetchTxs(): Promise<{ txs: Map<string, Tx>; missingTxs: TxHash[] }> {
|
|
236
234
|
const deadline = new Date(this.deps.dateProvider.now() + this.deps.txGatheringTimeoutMs);
|
|
237
235
|
const txsByBlock = await Promise.all(
|
|
238
236
|
this.checkpoint.blocks.map(block => this.deps.txProvider.getTxsForBlock(block, { deadline })),
|
|
239
237
|
);
|
|
240
|
-
const txs = txsByBlock.
|
|
241
|
-
const missingTxs = txsByBlock.
|
|
238
|
+
const txs = txsByBlock.flatMap(({ txs }) => txs);
|
|
239
|
+
const missingTxs = txsByBlock.flatMap(({ missingTxs }) => missingTxs);
|
|
240
|
+
return { txs: new Map<string, Tx>(txs.map(tx => [tx.getTxHash().toString(), tx])), missingTxs };
|
|
241
|
+
}
|
|
242
242
|
|
|
243
|
+
private async gatherTxs(): Promise<Map<string, Tx>> {
|
|
244
|
+
const { txs, missingTxs } = await this.fetchTxs();
|
|
243
245
|
if (missingTxs.length > 0) {
|
|
244
246
|
throw new Error(
|
|
245
247
|
`Txs not found for checkpoint ${this.checkpoint.number}: ${missingTxs.map(hash => hash.toString()).join(', ')}`,
|
|
246
248
|
);
|
|
247
249
|
}
|
|
248
|
-
return
|
|
250
|
+
return txs;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Re-fetches this checkpoint's txs from the tx pool for a post-mortem failure upload.
|
|
255
|
+
*
|
|
256
|
+
* The prover does not cache txs on the heap — they are consumed during proving and dropped — so the
|
|
257
|
+
* durable pool (which keeps a mined tx until L1 finality, with A-1274's retention margin covering a
|
|
258
|
+
* lagging prover) is the source of truth, read back by hash here. Best-effort: any tx the pool can
|
|
259
|
+
* no longer supply is logged and omitted rather than failing the upload, since a partial post-mortem
|
|
260
|
+
* snapshot is still useful for diagnosis.
|
|
261
|
+
*/
|
|
262
|
+
public async getTxsForUpload(): Promise<Map<string, Tx>> {
|
|
263
|
+
const { txs, missingTxs } = await this.fetchTxs();
|
|
264
|
+
if (missingTxs.length > 0) {
|
|
265
|
+
this.deps.log.warn(
|
|
266
|
+
`Missing ${missingTxs.length} tx(s) re-fetching checkpoint ${this.checkpoint.number} for failure upload`,
|
|
267
|
+
{ checkpointNumber: this.checkpoint.number, missingTxCount: missingTxs.length },
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
return txs;
|
|
249
271
|
}
|
|
250
272
|
|
|
251
273
|
private async executeCheckpoint(txs: Map<string, Tx>): Promise<void> {
|
|
@@ -259,9 +281,9 @@ export class CheckpointProver {
|
|
|
259
281
|
await this.deps.checkpointProveOverride();
|
|
260
282
|
}
|
|
261
283
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
284
|
+
// The gathered txs are consumed locally below (public processing + sub-tree) and then dropped.
|
|
285
|
+
// They are deliberately not retained on the instance: the tx pool is the durable source and
|
|
286
|
+
// `getTxsForUpload` re-fetches them by hash if a post-mortem upload needs them.
|
|
265
287
|
|
|
266
288
|
const { chainId, version } = this.checkpoint.blocks[0].header.globalVariables;
|
|
267
289
|
const checkpointConstants = CheckpointConstantData.from({
|
package/src/prover-node.ts
CHANGED
|
@@ -623,7 +623,7 @@ export class ProverNode implements L2BlockStreamEventHandler, ProverNodeApi, Tra
|
|
|
623
623
|
if (!this.config.proverNodeFailedEpochStore || checkpoints.length === 0) {
|
|
624
624
|
return undefined;
|
|
625
625
|
}
|
|
626
|
-
const data = SessionManager.buildProvingData(checkpoints);
|
|
626
|
+
const data = await SessionManager.buildProvingData(checkpoints);
|
|
627
627
|
return await uploadEpochProofFailure(
|
|
628
628
|
this.config.proverNodeFailedEpochStore,
|
|
629
629
|
// The session's own id; `uploadEpochProofFailure` already prefixes the path with the epoch number.
|
|
@@ -659,7 +659,7 @@ export class ProverNode implements L2BlockStreamEventHandler, ProverNodeApi, Tra
|
|
|
659
659
|
});
|
|
660
660
|
return undefined;
|
|
661
661
|
}
|
|
662
|
-
const data = SessionManager.buildProvingData([prover]);
|
|
662
|
+
const data = await SessionManager.buildProvingData([prover]);
|
|
663
663
|
return await uploadEpochProofFailure(
|
|
664
664
|
this.config.proverNodeFailedEpochStore,
|
|
665
665
|
// The prover's content-addressed id; the epoch number is already in the upload path.
|
package/src/session-manager.ts
CHANGED
|
@@ -435,14 +435,17 @@ export class SessionManager {
|
|
|
435
435
|
* checkpoint provers. Includes every checkpoint regardless of whether sub-tree proving
|
|
436
436
|
* completed — partial state is still useful for post-mortem analysis.
|
|
437
437
|
*/
|
|
438
|
-
public static buildProvingData(checkpoints: readonly CheckpointProver[]): EpochProvingJobData {
|
|
438
|
+
public static async buildProvingData(checkpoints: readonly CheckpointProver[]): Promise<EpochProvingJobData> {
|
|
439
439
|
if (checkpoints.length === 0) {
|
|
440
440
|
throw new Error('Cannot build proving data from an empty checkpoint set');
|
|
441
441
|
}
|
|
442
|
+
// Provers no longer cache their txs; re-fetch each checkpoint's txs from the tx pool (concurrently)
|
|
443
|
+
// for the snapshot. The pool retains them past the proving window (A-1274), so this is durable.
|
|
444
|
+
const perCheckpoint = await Promise.all(checkpoints.map(async c => ({ c, txs: await c.getTxsForUpload() })));
|
|
442
445
|
const txs = new Map();
|
|
443
446
|
const l1ToL2Messages: Record<number, Fr[]> = {};
|
|
444
|
-
for (const c of
|
|
445
|
-
for (const [hash, tx] of
|
|
447
|
+
for (const { c, txs: checkpointTxs } of perCheckpoint) {
|
|
448
|
+
for (const [hash, tx] of checkpointTxs) {
|
|
446
449
|
txs.set(hash, tx);
|
|
447
450
|
}
|
|
448
451
|
l1ToL2Messages[c.checkpoint.number] = c.l1ToL2Messages;
|