@aztec-labs/prover-node 6.0.0-nightly.20260923 → 6.0.0-nightly.20260929
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/factory.d.ts +1 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +1 -1
- package/dest/job/checkpoint-prover.d.ts +12 -1
- package/dest/job/checkpoint-prover.d.ts.map +1 -1
- package/dest/job/checkpoint-prover.js +32 -17
- package/package.json +20 -20
- package/src/factory.ts +1 -0
- package/src/job/checkpoint-prover.ts +44 -27
package/dest/factory.d.ts
CHANGED
|
@@ -33,4 +33,4 @@ export type ProverNodeDeps = {
|
|
|
33
33
|
};
|
|
34
34
|
/** Creates a new prover node subsystem given a config and dependencies */
|
|
35
35
|
export declare function createProverNode(userConfig: SpecificProverNodeConfig & ProverConfig & ProverClientUserConfig & ProverPublisherConfig & ProverTxSenderConfig, deps: ProverNodeDeps): Promise<ProverNode>;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSW5FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUc3RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQTJCLEtBQUssc0JBQXNCLEVBQXNCLE1BQU0sMkJBQTJCLENBQUM7QUFFckgsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssb0JBQW9CLEVBRTFCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLHNCQUFzQixFQUN2QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBYSxLQUFLLGVBQWUsRUFBc0IsTUFBTSw4QkFBOEIsQ0FBQztBQUduRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7SUFDNUIsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2IsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUNuQixnQkFBZ0IsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO0lBQzFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzFCLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztJQUN0QixZQUFZLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDNUIsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7SUFDL0MsU0FBUyxFQUFFO1FBQUUsYUFBYSxJQUFJLFdBQVcsQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztJQUNoQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDaEMsZUFBZSxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQ2xDLGlGQUFpRjtJQUNqRixZQUFZLEVBQUUsWUFBWSxDQUFDO0NBQzVCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0JBQXNCLGdCQUFnQixDQUNwQyxVQUFVLEVBQUUsd0JBQXdCLEdBQ2xDLFlBQVksR0FDWixzQkFBc0IsR0FDdEIscUJBQXFCLEdBQ3JCLG9CQUFvQixFQUN0QixJQUFJLEVBQUUsY0FBYyx1QkFtSXJCIn0=
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAInE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAG7D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAA2B,KAAK,sBAAsB,EAAsB,MAAM,2BAA2B,CAAC;AAErH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,8BAA8B,CAAC;AAGnG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE;QAAE,aAAa,IAAI,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iFAAiF;IACjF,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,0EAA0E;AAC1E,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,wBAAwB,GAClC,YAAY,GACZ,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,EACtB,IAAI,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAInE,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAG7D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAA2B,KAAK,sBAAsB,EAAsB,MAAM,2BAA2B,CAAC;AAErH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,8BAA8B,CAAC;AAGnG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE;QAAE,aAAa,IAAI,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iFAAiF;IACjF,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,0EAA0E;AAC1E,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,wBAAwB,GAClC,YAAY,GACZ,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,EACtB,IAAI,EAAE,cAAc,uBAmIrB"}
|
package/dest/factory.js
CHANGED
|
@@ -98,7 +98,7 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
98
98
|
const proverNodeConfig = {
|
|
99
99
|
...pick(config, 'proverNodeMaxPendingJobs', 'proverNodeMaxParallelBlocksPerEpoch', 'proverNodePollingIntervalMs', 'proverNodeEpochProvingDelayMs', 'txGatheringMaxParallelRequests', 'txGatheringIntervalMs', 'txGatheringTimeoutMs', 'proverNodeFailedEpochStore', 'proverNodeDisableProofPublish', 'dataDirectory', 'l1ChainId', 'rollupVersion')
|
|
100
100
|
};
|
|
101
|
-
const l1Metrics = new L1Metrics(telemetry.getMeter('ProverNodeL1Metrics'), publicClient, l1TxUtils.map((utils)=>utils.getSenderAddress()));
|
|
101
|
+
const l1Metrics = new L1Metrics(telemetry.getMeter('ProverNodeL1Metrics'), publicClient, l1TxUtils.map((utils)=>utils.getSenderAddress()), 'prover');
|
|
102
102
|
// Extract the shared delayer from the first L1TxUtils instance (all instances share the same delayer)
|
|
103
103
|
const delayer = l1TxUtils[0]?.delayer;
|
|
104
104
|
return new ProverNode(prover, publisherFactory, archiver, archiver, archiver, worldStateSynchronizer, p2pClient, rollupContract, l1Metrics, deps.avmSimulator, proverNodeConfig, telemetry, delayer, dateProvider);
|
|
@@ -149,6 +149,17 @@ export declare class CheckpointProver {
|
|
|
149
149
|
*/
|
|
150
150
|
getTxsForUpload(): Promise<Map<string, Tx>>;
|
|
151
151
|
private executeCheckpoint;
|
|
152
|
+
/**
|
|
153
|
+
* Splits the supplied L1-to-L2 messages into the slice each block of the checkpoint consumes, rejecting a span
|
|
154
|
+
* that does not describe this checkpoint.
|
|
155
|
+
*
|
|
156
|
+
* The messages are consumed contiguously across the checkpoint's blocks, so each block's slice runs from its
|
|
157
|
+
* parent block's L1-to-L2 leaf count to its own (compact indices make leaf count equal cumulative message count).
|
|
158
|
+
* The supplied list must cover exactly the range from the previous block to the last one and the per-block counts
|
|
159
|
+
* must not rewind, or the slices would be silently misassigned and only caught by the header mismatch after the
|
|
160
|
+
* block was fully re-executed.
|
|
161
|
+
*/
|
|
162
|
+
private sliceMessagesPerBlock;
|
|
152
163
|
/**
|
|
153
164
|
* Mark cancelled. Idempotent. Aborts in-flight work, rejects the block-proof promise,
|
|
154
165
|
* and kicks off a background teardown of the sub-tree. The teardown promise is exposed
|
|
@@ -167,4 +178,4 @@ export declare class CheckpointProver {
|
|
|
167
178
|
private processTxs;
|
|
168
179
|
private createFork;
|
|
169
180
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvY2hlY2twb2ludC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRixPQUFPLEVBQWUsS0FBSyxXQUFXLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUFTLE1BQU0sOEJBQThCLENBQUM7QUFHeEUsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFFVix1QkFBdUIsRUFDdkIsVUFBVSxFQUNYLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHNUYsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHbEcsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFlLEVBQUUsRUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBRWxGLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-prover.d.ts","sourceRoot":"","sources":["../../src/job/checkpoint-prover.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"checkpoint-prover.d.ts","sourceRoot":"","sources":["../../src/job/checkpoint-prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -228,6 +228,10 @@ import { MerkleTreeId } from '@aztec-labs/stdlib/trees';
|
|
|
228
228
|
checkpointHash: this.checkpoint.hash().toString(),
|
|
229
229
|
blockCount: this.checkpoint.blocks.length
|
|
230
230
|
});
|
|
231
|
+
// Structural validation of the checkpoint's message span runs before any proof work starts. Verifier jobs go
|
|
232
|
+
// into a shared cache that outlives this checkpoint's sub-tree, so a job started before the span is checked
|
|
233
|
+
// survives the cancellation that follows and keeps proving for a checkpoint nothing will accept.
|
|
234
|
+
const messagesPerBlock = this.sliceMessagesPerBlock();
|
|
231
235
|
this.subTree = await this.deps.proverFactory.createCheckpointSubTreeOrchestrator(this.deps.chonkCache, this.epochNumber, checkpointConstants, this.l1ToL2Messages, this.previousInboxRollingHash, this.checkpoint.blocks.length, this.previousBlockHeader);
|
|
232
236
|
subTreeStarted = true;
|
|
233
237
|
// Bridge the sub-tree's result onto subTreeProofs.
|
|
@@ -262,28 +266,12 @@ import { MerkleTreeId } from '@aztec-labs/stdlib/trees';
|
|
|
262
266
|
return;
|
|
263
267
|
}
|
|
264
268
|
}
|
|
265
|
-
// Streaming Inbox: the checkpoint's messages are consumed contiguously across its blocks, so each block's slice
|
|
266
|
-
// runs from its parent block's L1-to-L2 leaf count to its own (compact indices make leaf count equal cumulative
|
|
267
|
-
// message count). The list must cover exactly the range from the previous block to the last one, or the slices
|
|
268
|
-
// would be silently misassigned and only caught by the header mismatch after the block was fully re-executed.
|
|
269
|
-
const l1ToL2LeafCount = (header)=>Number(header.state.l1ToL2MessageTree.nextAvailableLeafIndex);
|
|
270
|
-
const checkpointStartLeafCount = l1ToL2LeafCount(this.previousBlockHeader);
|
|
271
|
-
const checkpointEndLeafCount = l1ToL2LeafCount(this.checkpoint.blocks.at(-1).header);
|
|
272
|
-
if (this.l1ToL2Messages.length !== checkpointEndLeafCount - checkpointStartLeafCount) {
|
|
273
|
-
throw new Error(`Checkpoint ${this.checkpoint.number} consumed ${checkpointEndLeafCount - checkpointStartLeafCount} L1 to L2 messages ` + `(leaf counts ${checkpointStartLeafCount} to ${checkpointEndLeafCount}) but ${this.l1ToL2Messages.length} were supplied`);
|
|
274
|
-
}
|
|
275
|
-
let previousBlockLeafCount = checkpointStartLeafCount;
|
|
276
269
|
for(let blockIndex = 0; blockIndex < this.checkpoint.blocks.length; blockIndex++){
|
|
277
270
|
const blockTimer = new Timer();
|
|
278
271
|
const block = this.checkpoint.blocks[blockIndex];
|
|
279
272
|
const globalVariables = block.header.globalVariables;
|
|
280
273
|
const blockTxs = this.getTxsForBlock(block, txs);
|
|
281
|
-
const
|
|
282
|
-
if (blockEndLeafCount < previousBlockLeafCount) {
|
|
283
|
-
throw new Error(`Block ${block.number} L1 to L2 leaf count ${blockEndLeafCount} is below its parent's ${previousBlockLeafCount}`);
|
|
284
|
-
}
|
|
285
|
-
const blockMessages = this.l1ToL2Messages.slice(previousBlockLeafCount - checkpointStartLeafCount, blockEndLeafCount - checkpointStartLeafCount);
|
|
286
|
-
previousBlockLeafCount = blockEndLeafCount;
|
|
274
|
+
const blockMessages = messagesPerBlock[blockIndex];
|
|
287
275
|
await this.subTree.startNewBlock(block.number, globalVariables.timestamp, blockTxs.length, blockMessages);
|
|
288
276
|
if (signal.aborted) {
|
|
289
277
|
return;
|
|
@@ -337,6 +325,33 @@ import { MerkleTreeId } from '@aztec-labs/stdlib/trees';
|
|
|
337
325
|
}
|
|
338
326
|
}
|
|
339
327
|
/**
|
|
328
|
+
* Splits the supplied L1-to-L2 messages into the slice each block of the checkpoint consumes, rejecting a span
|
|
329
|
+
* that does not describe this checkpoint.
|
|
330
|
+
*
|
|
331
|
+
* The messages are consumed contiguously across the checkpoint's blocks, so each block's slice runs from its
|
|
332
|
+
* parent block's L1-to-L2 leaf count to its own (compact indices make leaf count equal cumulative message count).
|
|
333
|
+
* The supplied list must cover exactly the range from the previous block to the last one and the per-block counts
|
|
334
|
+
* must not rewind, or the slices would be silently misassigned and only caught by the header mismatch after the
|
|
335
|
+
* block was fully re-executed.
|
|
336
|
+
*/ sliceMessagesPerBlock() {
|
|
337
|
+
const l1ToL2LeafCount = (header)=>Number(header.state.l1ToL2MessageTree.nextAvailableLeafIndex);
|
|
338
|
+
const checkpointStartLeafCount = l1ToL2LeafCount(this.previousBlockHeader);
|
|
339
|
+
const checkpointEndLeafCount = l1ToL2LeafCount(this.checkpoint.blocks.at(-1).header);
|
|
340
|
+
if (this.l1ToL2Messages.length !== checkpointEndLeafCount - checkpointStartLeafCount) {
|
|
341
|
+
throw new Error(`Checkpoint ${this.checkpoint.number} consumed ${checkpointEndLeafCount - checkpointStartLeafCount} L1 to L2 messages ` + `(leaf counts ${checkpointStartLeafCount} to ${checkpointEndLeafCount}) but ${this.l1ToL2Messages.length} were supplied`);
|
|
342
|
+
}
|
|
343
|
+
let previousBlockLeafCount = checkpointStartLeafCount;
|
|
344
|
+
return this.checkpoint.blocks.map((block)=>{
|
|
345
|
+
const blockEndLeafCount = l1ToL2LeafCount(block.header);
|
|
346
|
+
if (blockEndLeafCount < previousBlockLeafCount) {
|
|
347
|
+
throw new Error(`Block ${block.number} L1 to L2 leaf count ${blockEndLeafCount} is below its parent's ${previousBlockLeafCount}`);
|
|
348
|
+
}
|
|
349
|
+
const blockMessages = this.l1ToL2Messages.slice(previousBlockLeafCount - checkpointStartLeafCount, blockEndLeafCount - checkpointStartLeafCount);
|
|
350
|
+
previousBlockLeafCount = blockEndLeafCount;
|
|
351
|
+
return blockMessages;
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
340
355
|
* Mark cancelled. Idempotent. Aborts in-flight work, rejects the block-proof promise,
|
|
341
356
|
* and kicks off a background teardown of the sub-tree. The teardown promise is exposed
|
|
342
357
|
* via `whenDone()`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec-labs/prover-node",
|
|
3
|
-
"version": "6.0.0-nightly.
|
|
3
|
+
"version": "6.0.0-nightly.20260929",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -56,25 +56,25 @@
|
|
|
56
56
|
]
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@aztec-foundation/l1-artifacts": "6.0.0-
|
|
60
|
-
"@aztec-labs/archiver": "6.0.0-nightly.
|
|
61
|
-
"@aztec-labs/bb-prover": "6.0.0-nightly.
|
|
62
|
-
"@aztec-labs/blob-client": "6.0.0-nightly.
|
|
63
|
-
"@aztec-labs/blob-lib": "6.0.0-nightly.
|
|
64
|
-
"@aztec-labs/constants": "6.0.0-nightly.
|
|
65
|
-
"@aztec-labs/epoch-cache": "6.0.0-nightly.
|
|
66
|
-
"@aztec-labs/ethereum": "6.0.0-nightly.
|
|
67
|
-
"@aztec-labs/foundation": "6.0.0-nightly.
|
|
68
|
-
"@aztec-labs/node-keystore": "6.0.0-nightly.
|
|
69
|
-
"@aztec-labs/node-lib": "6.0.0-nightly.
|
|
70
|
-
"@aztec-labs/noir-protocol-circuits-types": "6.0.0-nightly.
|
|
71
|
-
"@aztec-labs/protocol-contracts": "6.0.0-nightly.
|
|
72
|
-
"@aztec-labs/prover-client": "6.0.0-nightly.
|
|
73
|
-
"@aztec-labs/sequencer-client": "6.0.0-nightly.
|
|
74
|
-
"@aztec-labs/simulator": "6.0.0-nightly.
|
|
75
|
-
"@aztec-labs/stdlib": "6.0.0-nightly.
|
|
76
|
-
"@aztec-labs/telemetry-client": "6.0.0-nightly.
|
|
77
|
-
"@aztec-labs/world-state": "6.0.0-nightly.
|
|
59
|
+
"@aztec-foundation/l1-artifacts": "6.0.0-rc.1",
|
|
60
|
+
"@aztec-labs/archiver": "6.0.0-nightly.20260929",
|
|
61
|
+
"@aztec-labs/bb-prover": "6.0.0-nightly.20260929",
|
|
62
|
+
"@aztec-labs/blob-client": "6.0.0-nightly.20260929",
|
|
63
|
+
"@aztec-labs/blob-lib": "6.0.0-nightly.20260929",
|
|
64
|
+
"@aztec-labs/constants": "6.0.0-nightly.20260929",
|
|
65
|
+
"@aztec-labs/epoch-cache": "6.0.0-nightly.20260929",
|
|
66
|
+
"@aztec-labs/ethereum": "6.0.0-nightly.20260929",
|
|
67
|
+
"@aztec-labs/foundation": "6.0.0-nightly.20260929",
|
|
68
|
+
"@aztec-labs/node-keystore": "6.0.0-nightly.20260929",
|
|
69
|
+
"@aztec-labs/node-lib": "6.0.0-nightly.20260929",
|
|
70
|
+
"@aztec-labs/noir-protocol-circuits-types": "6.0.0-nightly.20260929",
|
|
71
|
+
"@aztec-labs/protocol-contracts": "6.0.0-nightly.20260929",
|
|
72
|
+
"@aztec-labs/prover-client": "6.0.0-nightly.20260929",
|
|
73
|
+
"@aztec-labs/sequencer-client": "6.0.0-nightly.20260929",
|
|
74
|
+
"@aztec-labs/simulator": "6.0.0-nightly.20260929",
|
|
75
|
+
"@aztec-labs/stdlib": "6.0.0-nightly.20260929",
|
|
76
|
+
"@aztec-labs/telemetry-client": "6.0.0-nightly.20260929",
|
|
77
|
+
"@aztec-labs/world-state": "6.0.0-nightly.20260929",
|
|
78
78
|
"source-map-support": "^0.5.21",
|
|
79
79
|
"tslib": "^2.4.0",
|
|
80
80
|
"viem": "npm:@aztec/viem@2.38.3"
|
package/src/factory.ts
CHANGED
|
@@ -167,6 +167,7 @@ export async function createProverNode(
|
|
|
167
167
|
telemetry.getMeter('ProverNodeL1Metrics'),
|
|
168
168
|
publicClient,
|
|
169
169
|
l1TxUtils.map(utils => utils.getSenderAddress()),
|
|
170
|
+
'prover',
|
|
170
171
|
);
|
|
171
172
|
|
|
172
173
|
// Extract the shared delayer from the first L1TxUtils instance (all instances share the same delayer)
|
|
@@ -326,6 +326,11 @@ export class CheckpointProver {
|
|
|
326
326
|
blockCount: this.checkpoint.blocks.length,
|
|
327
327
|
});
|
|
328
328
|
|
|
329
|
+
// Structural validation of the checkpoint's message span runs before any proof work starts. Verifier jobs go
|
|
330
|
+
// into a shared cache that outlives this checkpoint's sub-tree, so a job started before the span is checked
|
|
331
|
+
// survives the cancellation that follows and keeps proving for a checkpoint nothing will accept.
|
|
332
|
+
const messagesPerBlock = this.sliceMessagesPerBlock();
|
|
333
|
+
|
|
329
334
|
this.subTree = await this.deps.proverFactory.createCheckpointSubTreeOrchestrator(
|
|
330
335
|
this.deps.chonkCache,
|
|
331
336
|
this.epochNumber,
|
|
@@ -375,38 +380,12 @@ export class CheckpointProver {
|
|
|
375
380
|
}
|
|
376
381
|
}
|
|
377
382
|
|
|
378
|
-
// Streaming Inbox: the checkpoint's messages are consumed contiguously across its blocks, so each block's slice
|
|
379
|
-
// runs from its parent block's L1-to-L2 leaf count to its own (compact indices make leaf count equal cumulative
|
|
380
|
-
// message count). The list must cover exactly the range from the previous block to the last one, or the slices
|
|
381
|
-
// would be silently misassigned and only caught by the header mismatch after the block was fully re-executed.
|
|
382
|
-
const l1ToL2LeafCount = (header: BlockHeader) => Number(header.state.l1ToL2MessageTree.nextAvailableLeafIndex);
|
|
383
|
-
const checkpointStartLeafCount = l1ToL2LeafCount(this.previousBlockHeader);
|
|
384
|
-
const checkpointEndLeafCount = l1ToL2LeafCount(this.checkpoint.blocks.at(-1)!.header);
|
|
385
|
-
if (this.l1ToL2Messages.length !== checkpointEndLeafCount - checkpointStartLeafCount) {
|
|
386
|
-
throw new Error(
|
|
387
|
-
`Checkpoint ${this.checkpoint.number} consumed ${checkpointEndLeafCount - checkpointStartLeafCount} L1 to L2 messages ` +
|
|
388
|
-
`(leaf counts ${checkpointStartLeafCount} to ${checkpointEndLeafCount}) but ${this.l1ToL2Messages.length} were supplied`,
|
|
389
|
-
);
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
let previousBlockLeafCount = checkpointStartLeafCount;
|
|
393
383
|
for (let blockIndex = 0; blockIndex < this.checkpoint.blocks.length; blockIndex++) {
|
|
394
384
|
const blockTimer = new Timer();
|
|
395
385
|
const block = this.checkpoint.blocks[blockIndex];
|
|
396
386
|
const globalVariables = block.header.globalVariables;
|
|
397
387
|
const blockTxs = this.getTxsForBlock(block, txs);
|
|
398
|
-
|
|
399
|
-
const blockEndLeafCount = l1ToL2LeafCount(block.header);
|
|
400
|
-
if (blockEndLeafCount < previousBlockLeafCount) {
|
|
401
|
-
throw new Error(
|
|
402
|
-
`Block ${block.number} L1 to L2 leaf count ${blockEndLeafCount} is below its parent's ${previousBlockLeafCount}`,
|
|
403
|
-
);
|
|
404
|
-
}
|
|
405
|
-
const blockMessages = this.l1ToL2Messages.slice(
|
|
406
|
-
previousBlockLeafCount - checkpointStartLeafCount,
|
|
407
|
-
blockEndLeafCount - checkpointStartLeafCount,
|
|
408
|
-
);
|
|
409
|
-
previousBlockLeafCount = blockEndLeafCount;
|
|
388
|
+
const blockMessages = messagesPerBlock[blockIndex];
|
|
410
389
|
|
|
411
390
|
await this.subTree.startNewBlock(block.number, globalVariables.timestamp, blockTxs.length, blockMessages);
|
|
412
391
|
if (signal.aborted) {
|
|
@@ -467,6 +446,44 @@ export class CheckpointProver {
|
|
|
467
446
|
}
|
|
468
447
|
}
|
|
469
448
|
|
|
449
|
+
/**
|
|
450
|
+
* Splits the supplied L1-to-L2 messages into the slice each block of the checkpoint consumes, rejecting a span
|
|
451
|
+
* that does not describe this checkpoint.
|
|
452
|
+
*
|
|
453
|
+
* The messages are consumed contiguously across the checkpoint's blocks, so each block's slice runs from its
|
|
454
|
+
* parent block's L1-to-L2 leaf count to its own (compact indices make leaf count equal cumulative message count).
|
|
455
|
+
* The supplied list must cover exactly the range from the previous block to the last one and the per-block counts
|
|
456
|
+
* must not rewind, or the slices would be silently misassigned and only caught by the header mismatch after the
|
|
457
|
+
* block was fully re-executed.
|
|
458
|
+
*/
|
|
459
|
+
private sliceMessagesPerBlock(): Fr[][] {
|
|
460
|
+
const l1ToL2LeafCount = (header: BlockHeader) => Number(header.state.l1ToL2MessageTree.nextAvailableLeafIndex);
|
|
461
|
+
const checkpointStartLeafCount = l1ToL2LeafCount(this.previousBlockHeader);
|
|
462
|
+
const checkpointEndLeafCount = l1ToL2LeafCount(this.checkpoint.blocks.at(-1)!.header);
|
|
463
|
+
if (this.l1ToL2Messages.length !== checkpointEndLeafCount - checkpointStartLeafCount) {
|
|
464
|
+
throw new Error(
|
|
465
|
+
`Checkpoint ${this.checkpoint.number} consumed ${checkpointEndLeafCount - checkpointStartLeafCount} L1 to L2 messages ` +
|
|
466
|
+
`(leaf counts ${checkpointStartLeafCount} to ${checkpointEndLeafCount}) but ${this.l1ToL2Messages.length} were supplied`,
|
|
467
|
+
);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
let previousBlockLeafCount = checkpointStartLeafCount;
|
|
471
|
+
return this.checkpoint.blocks.map(block => {
|
|
472
|
+
const blockEndLeafCount = l1ToL2LeafCount(block.header);
|
|
473
|
+
if (blockEndLeafCount < previousBlockLeafCount) {
|
|
474
|
+
throw new Error(
|
|
475
|
+
`Block ${block.number} L1 to L2 leaf count ${blockEndLeafCount} is below its parent's ${previousBlockLeafCount}`,
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
const blockMessages = this.l1ToL2Messages.slice(
|
|
479
|
+
previousBlockLeafCount - checkpointStartLeafCount,
|
|
480
|
+
blockEndLeafCount - checkpointStartLeafCount,
|
|
481
|
+
);
|
|
482
|
+
previousBlockLeafCount = blockEndLeafCount;
|
|
483
|
+
return blockMessages;
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
|
|
470
487
|
/**
|
|
471
488
|
* Mark cancelled. Idempotent. Aborts in-flight work, rejects the block-proof promise,
|
|
472
489
|
* and kicks off a background teardown of the sub-tree. The teardown promise is exposed
|