@aztec/prover-node 5.0.0-nightly.20260512 → 5.0.0-nightly.20260514
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/bin/run-failed-epoch.js +1 -3
- package/dest/factory.js +1 -1
- package/dest/job/epoch-proving-job.d.ts +1 -1
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +6 -9
- package/dest/monitors/epoch-monitor.js +3 -1
- package/dest/prover-node-publisher.d.ts +1 -1
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +106 -2
- package/dest/prover-node.d.ts +1 -2
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +8 -10
- package/package.json +23 -23
- package/src/bin/run-failed-epoch.ts +1 -2
- package/src/factory.ts +1 -1
- package/src/job/epoch-proving-job.ts +6 -13
- package/src/monitors/epoch-monitor.ts +1 -1
- package/src/prover-node-publisher.ts +105 -4
- package/src/prover-node.ts +6 -11
|
@@ -41,9 +41,7 @@ async function rerunFailedEpoch(provingJobUrl, baseLocalDir) {
|
|
|
41
41
|
logger.info(`Rerunning proving job from ${jobPath} with state from ${dataDir}`, metadata);
|
|
42
42
|
const result = await rerunEpochProvingJob(jobPath, logger, {
|
|
43
43
|
...config,
|
|
44
|
-
|
|
45
|
-
rollupAddress: metadata.rollupAddress
|
|
46
|
-
},
|
|
44
|
+
rollupAddress: metadata.rollupAddress,
|
|
47
45
|
rollupVersion: metadata.rollupVersion
|
|
48
46
|
});
|
|
49
47
|
console.error(`Epoch proving job complete with result ${result}`);
|
package/dest/factory.js
CHANGED
|
@@ -52,7 +52,7 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
52
52
|
}),
|
|
53
53
|
pollingInterval: config.viemPollingIntervalMS
|
|
54
54
|
});
|
|
55
|
-
const rollupContract = new RollupContract(publicClient, config.
|
|
55
|
+
const rollupContract = new RollupContract(publicClient, config.rollupAddress.toString());
|
|
56
56
|
const l1TxUtils = deps.l1TxUtils ? [
|
|
57
57
|
deps.l1TxUtils
|
|
58
58
|
] : config.proverPublisherForwarderAddress ? await createForwarderL1TxUtilsFromSigners(publicClient, proverSigners.signers, config.proverPublisherForwarderAddress, {
|
|
@@ -60,4 +60,4 @@ export declare class EpochProvingJob implements Traceable {
|
|
|
60
60
|
private processTxs;
|
|
61
61
|
}
|
|
62
62
|
export { type EpochProvingJobState };
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvZXBvY2gtcHJvdmluZy1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTNFLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQU92RixPQUFPLEtBQUssRUFBbUIsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBVyxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRSxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssb0JBQW9CLEVBQ3pCLDRCQUE0QixFQUM1QixLQUFLLHdCQUF3QixFQUM5QixNQUFNLGlDQUFpQyxDQUFDO0FBSXpDLE9BQU8sRUFBYyxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBSTdGLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQStCLE1BQU0sNkJBQTZCLENBQUM7QUFFcEcsTUFBTSxNQUFNLHNCQUFzQixHQUFHO0lBQ25DLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN6QixlQUFlLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDM0IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxxQkFBYSxlQUFnQixZQUFXLFNBQVM7SUFZN0MsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxzQkFBc0I7SUFDOUIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLE9BQU87SUFDZixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsTUFBTTtJQW5CaEIsT0FBTyxDQUFDLEtBQUssQ0FBdUM7SUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUNwQixPQUFPLENBQUMsSUFBSSxDQUFTO0lBRXJCLE9BQU8sQ0FBQyxVQUFVLENBQTRCO0lBQzlDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBNkI7SUFDdEQsT0FBTyxDQUFDLHNCQUFzQixDQUE2QjtJQUUzRCxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ1UsSUFBSSxFQUFFLG1CQUFtQixFQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxFQUNsRCxNQUFNLEVBQUUsV0FBVyxFQUNuQixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxrQkFBa0IsR0FBRyw2QkFBNkIsQ0FBQyxFQUN4RixhQUFhLEVBQUUsYUFBYSxHQUFHLFNBQVMsRUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUM3QixRQUFRLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFDMUIsTUFBTSxFQUFFLHNCQUFzQixFQUN0QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBUzFCO0lBRU0sS0FBSyxJQUFJLE1BQU0sQ0FFckI7SUFFTSxRQUFRLElBQUksb0JBQW9CLENBRXRDO0lBRU0sY0FBYyxJQUFJLFdBQVcsQ0FFbkM7SUFFTSxXQUFXLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FFckM7SUFFTSxjQUFjLElBQUksbUJBQW1CLENBRTNDO0lBRUQsT0FBTyxLQUFLLFdBQVcsR0FFdEI7SUFFRCxPQUFPLEtBQUssV0FBVyxHQUV0QjtJQUVELE9BQU8sS0FBSyxHQUFHLEdBRWQ7SUFFRCxPQUFPLEtBQUssWUFBWSxHQUV2QjtJQUVEOztPQUVHO0lBSVUsR0FBRyxrQkFxTmY7WUFRYSxVQUFVO0lBZXhCLE9BQU8sQ0FBQyxhQUFhO0lBS3JCLE9BQU8sQ0FBQyxVQUFVO0lBTUwsSUFBSSxDQUFDLEtBQUssR0FBRSw0QkFBd0MsaUJBTWhFO0lBRUQsT0FBTyxDQUFDLG9CQUFvQjtZQXdCZCxrQkFBa0I7SUFvQ2hDLE9BQU8sQ0FBQywwQkFBMEI7SUFLbEMsT0FBTyxDQUFDLE1BQU07SUFJZCxPQUFPLENBQUMsaUJBQWlCO1lBSVgsVUFBVTtDQW1CekI7QUFTRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBRSxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAOvF,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAElE,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,CAAS;IACpB,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;IAE/B,YACU,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,GAAG,6BAA6B,CAAC,EACxF,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,sBAAsB,EACtC,QAAQ,CAAC,EAAE,cAAc,EAS1B;IAEM,KAAK,IAAI,MAAM,CAErB;IAEM,QAAQ,IAAI,oBAAoB,CAEtC;IAEM,cAAc,IAAI,WAAW,CAEnC;IAEM,WAAW,IAAI,IAAI,GAAG,SAAS,CAErC;IAEM,cAAc,IAAI,mBAAmB,CAE3C;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IAIU,GAAG,kBAqNf;YAQa,UAAU;IAexB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC,iBAMhE;IAED,OAAO,CAAC,oBAAoB;YAwBd,kBAAkB;IAoChC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAmBzB;AASD,OAAO,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
|
|
@@ -371,11 +371,8 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
|
|
|
371
371
|
return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
|
|
372
372
|
}
|
|
373
373
|
var _dec, _initProto;
|
|
374
|
-
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
375
374
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
376
375
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
377
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
378
|
-
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
379
376
|
import { createLogger } from '@aztec/foundation/log';
|
|
380
377
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
381
378
|
import { Timer } from '@aztec/foundation/timer';
|
|
@@ -385,8 +382,8 @@ import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
|
385
382
|
import { buildFinalBlobChallenges } from '@aztec/prover-client/helpers';
|
|
386
383
|
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
387
384
|
import { EpochProvingJobTerminalState } from '@aztec/stdlib/interfaces/server';
|
|
385
|
+
import { appendL1ToL2MessagesToTree } from '@aztec/stdlib/messaging';
|
|
388
386
|
import { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
389
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
390
387
|
import { Attributes, trackSpan } from '@aztec/telemetry-client';
|
|
391
388
|
import * as crypto from 'node:crypto';
|
|
392
389
|
import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
@@ -529,11 +526,12 @@ _dec = trackSpan('EpochProvingJob.run', function() {
|
|
|
529
526
|
});
|
|
530
527
|
const previousHeader = previousBlockHeaders[checkpointIndex];
|
|
531
528
|
const l1ToL2Messages = this.getL1ToL2Messages(checkpoint);
|
|
532
|
-
this.log.
|
|
529
|
+
this.log.debug(`Starting processing checkpoint ${checkpoint.number}`, {
|
|
533
530
|
number: checkpoint.number,
|
|
534
531
|
checkpointHash: checkpoint.hash().toString(),
|
|
535
|
-
|
|
536
|
-
|
|
532
|
+
headerHash: checkpoint.header.hash().toString(),
|
|
533
|
+
numL1ToL2Messages: l1ToL2Messages.length,
|
|
534
|
+
previousBlockNumber: previousHeader.globalVariables.blockNumber,
|
|
537
535
|
uuid: this.uuid
|
|
538
536
|
});
|
|
539
537
|
await this.prover.startNewCheckpoint(checkpointIndex, checkpointConstants, l1ToL2Messages, checkpoint.blocks.length, previousHeader);
|
|
@@ -666,8 +664,7 @@ _dec = trackSpan('EpochProvingJob.run', function() {
|
|
|
666
664
|
blockNumber,
|
|
667
665
|
l1ToL2Messages: l1ToL2Messages.map((m)=>m.toString())
|
|
668
666
|
});
|
|
669
|
-
|
|
670
|
-
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
667
|
+
await appendL1ToL2MessagesToTree(db, l1ToL2Messages);
|
|
671
668
|
}
|
|
672
669
|
return db;
|
|
673
670
|
}
|
|
@@ -87,7 +87,9 @@ import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
async getEpochNumberToProve() {
|
|
90
|
-
const lastBlockProven = await this.l2BlockSource.
|
|
90
|
+
const lastBlockProven = await this.l2BlockSource.getBlockNumber({
|
|
91
|
+
tag: 'proven'
|
|
92
|
+
}) ?? BlockNumber.ZERO;
|
|
91
93
|
const firstBlockToProve = BlockNumber(lastBlockProven + 1);
|
|
92
94
|
const firstBlockHeaderToProve = (await this.l2BlockSource.getBlockData({
|
|
93
95
|
number: firstBlockToProve
|
|
@@ -73,4 +73,4 @@ export declare class ProverNodePublisher {
|
|
|
73
73
|
private getEpochProofPublicInputsArgs;
|
|
74
74
|
private getSubmitEpochProofArgs;
|
|
75
75
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUtcHVibGlzaGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUtcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0saUJBQWlCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3pELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFPbkYsc0VBQXNFO0FBQ3RFLE1BQU0sTUFBTSxzQkFBc0IsR0FBRztJQUNuQyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGVBQWUsRUFBRSxFQUFFLENBQUM7SUFDcEIsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUNmLFlBQVksRUFBRSxFQUFFLENBQUM7SUFDakIsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDYixJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsS0FBSyxFQUFFLEtBQUssQ0FBQztDQUNkLENBQUM7QUFFRixxQkFBYSxtQkFBbUI7SUFDOUIsT0FBTyxDQUFDLFdBQVcsQ0FBUztJQUM1QixPQUFPLENBQUMsT0FBTyxDQUE2QjtJQUU1QyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUV0QixTQUFTLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztJQUV6QyxTQUFnQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBRXJDLFlBQ0UsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEVBQ3hDLElBQUksRUFBRTtRQUNKLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFDL0IsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNyQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7S0FDN0IsRUFDRCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBUzFCO0lBRU0saUJBQWlCLG1CQUV2QjtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxTQUdmO0lBRUQsd0RBQXdEO0lBQ2pELE9BQU8sU0FHYjtJQUVNLGdCQUFnQixlQUV0QjtJQUVZLGdCQUFnQixDQUFDLElBQUksRUFBRTtRQUNsQyxXQUFXLEVBQUUsV0FBVyxDQUFDO1FBQ3pCLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztRQUNqQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7UUFDL0IsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDYixpQkFBaUIsRUFBRSxXQUFXLENBQUM7UUFDL0IsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7S0FDMUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBaURuQjtZQUVhLDRCQUE0QjtJQW1FMUM7Ozs7T0FJRztJQUNVLDJCQUEyQixDQUFDLElBQUksRUFBRTtRQUM3QyxXQUFXLEVBQUUsV0FBVyxDQUFDO1FBQ3pCLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztRQUNqQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7UUFDL0IsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDYixpQkFBaUIsRUFBRSxXQUFXLENBQUM7UUFDL0IsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7S0FDMUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBc0NoQjtJQUVELE9BQU8sQ0FBQyw4QkFBOEI7WUFleEIsc0JBQXNCO0lBNENwQyxPQUFPLENBQUMsNkJBQTZCO0lBMEJyQyxPQUFPLENBQUMsdUJBQXVCO0NBdUJoQyJ9
|
|
@@ -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;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,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;AACvF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAGzD,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,yBAAyB,CAAC,CAAC;IAC5D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,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,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,EACD,QAAQ,CAAC,EAAE,cAAc,EAS1B;IAEM,iBAAiB,mBAEvB;IAED;;;;;OAKG;IACI,SAAS,SAGf;IAED,wDAAwD;IACjD,OAAO,SAGb;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;KAC1C,GAAG,OAAO,CAAC,OAAO,CAAC,CAiDnB;YAEa,4BAA4B;
|
|
1
|
+
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
|
|
|
3
3
|
import { makeTuple } from '@aztec/foundation/array';
|
|
4
4
|
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
5
5
|
import { areArraysEqual } from '@aztec/foundation/collection';
|
|
6
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
7
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
8
9
|
import { Timer } from '@aztec/foundation/timer';
|
|
@@ -125,8 +126,14 @@ export class ProverNodePublisher {
|
|
|
125
126
|
...publicInputs.toFields()
|
|
126
127
|
];
|
|
127
128
|
if (!areArraysEqual(rollupPublicInputs, argsPublicInputs, (a, b)=>a.equals(b))) {
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
throw await reportPublicInputsMismatch({
|
|
130
|
+
rollupPublicInputs,
|
|
131
|
+
argsPublicInputs,
|
|
132
|
+
fromCheckpoint,
|
|
133
|
+
toCheckpoint,
|
|
134
|
+
rollupContract: this.rollupContract,
|
|
135
|
+
log: this.log
|
|
136
|
+
});
|
|
130
137
|
}
|
|
131
138
|
}
|
|
132
139
|
/**
|
|
@@ -245,3 +252,100 @@ export class ProverNodePublisher {
|
|
|
245
252
|
};
|
|
246
253
|
}
|
|
247
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Decodes a `Root rollup public inputs mismatch`, fetches the on-chain CheckpointLog for any
|
|
257
|
+
* mismatching `checkpointHeaderHashes[i]`, emits a structured error log, and returns a thrown-ready
|
|
258
|
+
* Error with a human-readable summary.
|
|
259
|
+
*
|
|
260
|
+
* Layout of `RootRollupPublicInputs.toFields()`:
|
|
261
|
+
* [0] previousArchiveRoot
|
|
262
|
+
* [1] endArchiveRoot
|
|
263
|
+
* [2] outHash
|
|
264
|
+
* [3 .. 3+N-1] checkpointHeaderHashes[i] for i in 0..N-1 (N = MAX_CHECKPOINTS_PER_EPOCH)
|
|
265
|
+
* [3+N .. 3+3N-1] fees[i] = (recipient, value) for i in 0..N-1
|
|
266
|
+
* [3+3N .. 3+3N+4] EpochConstantData (chainId, version, vkTreeRoot, protocolContractsHash, proverId)
|
|
267
|
+
* [3+3N+5 ..] blobPublicInputs (FinalBlobAccumulator)
|
|
268
|
+
*/ async function reportPublicInputsMismatch(input) {
|
|
269
|
+
const { rollupPublicInputs, argsPublicInputs, fromCheckpoint, toCheckpoint, rollupContract, log } = input;
|
|
270
|
+
const N = MAX_CHECKPOINTS_PER_EPOCH;
|
|
271
|
+
const constantsStart = 3 + 3 * N;
|
|
272
|
+
const blobStart = constantsStart + 5;
|
|
273
|
+
const constantLabels = [
|
|
274
|
+
'chainId',
|
|
275
|
+
'version',
|
|
276
|
+
'vkTreeRoot',
|
|
277
|
+
'protocolContractsHash',
|
|
278
|
+
'proverId'
|
|
279
|
+
];
|
|
280
|
+
const diffs = [];
|
|
281
|
+
const len = Math.max(rollupPublicInputs.length, argsPublicInputs.length);
|
|
282
|
+
for(let i = 0; i < len; i++){
|
|
283
|
+
const a = rollupPublicInputs[i] ?? Fr.ZERO;
|
|
284
|
+
const b = argsPublicInputs[i] ?? Fr.ZERO;
|
|
285
|
+
if (a.equals(b)) {
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
let label;
|
|
289
|
+
let checkpointIndex;
|
|
290
|
+
if (i === 0) {
|
|
291
|
+
label = 'previousArchiveRoot';
|
|
292
|
+
} else if (i === 1) {
|
|
293
|
+
label = 'endArchiveRoot';
|
|
294
|
+
} else if (i === 2) {
|
|
295
|
+
label = 'outHash';
|
|
296
|
+
} else if (i < 3 + N) {
|
|
297
|
+
checkpointIndex = i - 3;
|
|
298
|
+
label = `checkpointHeaderHashes[${checkpointIndex}]`;
|
|
299
|
+
} else if (i < 3 + 3 * N) {
|
|
300
|
+
const feePairIndex = i - (3 + N);
|
|
301
|
+
const feeIndex = Math.floor(feePairIndex / 2);
|
|
302
|
+
const sub = feePairIndex % 2 === 0 ? 'recipient' : 'value';
|
|
303
|
+
label = `fees[${feeIndex}].${sub}`;
|
|
304
|
+
} else if (i < blobStart) {
|
|
305
|
+
label = `constants.${constantLabels[i - constantsStart]}`;
|
|
306
|
+
} else {
|
|
307
|
+
label = `blobPublicInputs[${i - blobStart}]`;
|
|
308
|
+
}
|
|
309
|
+
diffs.push({
|
|
310
|
+
index: i,
|
|
311
|
+
label,
|
|
312
|
+
rollup: a,
|
|
313
|
+
computed: b,
|
|
314
|
+
checkpointIndex
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
// For each mismatching checkpointHeaderHash, fetch the L1 CheckpointLog so the operator can
|
|
318
|
+
// see what was published on-chain alongside the prover's recomputed hash.
|
|
319
|
+
const onChainCheckpoints = await Promise.all(diffs.filter((d)=>d.checkpointIndex !== undefined).map(async (d)=>{
|
|
320
|
+
const checkpointNumber = CheckpointNumber(fromCheckpoint + d.checkpointIndex);
|
|
321
|
+
try {
|
|
322
|
+
const cp = await rollupContract.getCheckpoint(checkpointNumber);
|
|
323
|
+
return {
|
|
324
|
+
checkpointIndex: d.checkpointIndex,
|
|
325
|
+
checkpointNumber,
|
|
326
|
+
headerHash: cp.headerHash.toString()
|
|
327
|
+
};
|
|
328
|
+
} catch (err) {
|
|
329
|
+
return {
|
|
330
|
+
checkpointIndex: d.checkpointIndex,
|
|
331
|
+
checkpointNumber,
|
|
332
|
+
error: err.message
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
}));
|
|
336
|
+
log.error(`Root rollup public inputs mismatch`, undefined, {
|
|
337
|
+
fromCheckpoint,
|
|
338
|
+
toCheckpoint,
|
|
339
|
+
numDiffs: diffs.length,
|
|
340
|
+
diffs: diffs.map((d)=>({
|
|
341
|
+
index: d.index,
|
|
342
|
+
label: d.label,
|
|
343
|
+
rollup: d.rollup.toString(),
|
|
344
|
+
computed: d.computed.toString()
|
|
345
|
+
})),
|
|
346
|
+
onChainCheckpoints
|
|
347
|
+
});
|
|
348
|
+
const fmt = (inputs)=>inputs.map((x)=>x.toString()).join(', ');
|
|
349
|
+
const summary = diffs.map((d)=>`[${d.index} ${d.label}] L1=${d.rollup} prover=${d.computed}`).join('\n');
|
|
350
|
+
return new Error(`Root rollup public inputs mismatch (${diffs.length} fields differ):\n${summary}\n` + `Rollup: ${fmt(rollupPublicInputs)}\nComputed:${fmt(argsPublicInputs)}`);
|
|
351
|
+
}
|
package/dest/prover-node.d.ts
CHANGED
|
@@ -101,7 +101,6 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
101
101
|
private createProvingJob;
|
|
102
102
|
private getL1Constants;
|
|
103
103
|
private gatherEpochData;
|
|
104
|
-
private gatherCheckpoints;
|
|
105
104
|
private gatherTxs;
|
|
106
105
|
private gatherMessages;
|
|
107
106
|
private gatherPreviousBlockHeader;
|
|
@@ -114,4 +113,4 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
114
113
|
private validateConfig;
|
|
115
114
|
}
|
|
116
115
|
export {};
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92ZXItbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUV2QixLQUFLLFdBQVcsRUFDaEIsS0FBSyxhQUFhLEVBQ2xCLEtBQUssT0FBTyxFQUNaLEtBQUssb0JBQW9CLEVBQ3pCLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssZUFBZSxFQUNwQixLQUFLLFNBQVMsRUFDZCxLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBR2pDLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
|
package/dest/prover-node.js
CHANGED
|
@@ -625,7 +625,14 @@ _dec = trackSpan('ProverNode.createProvingJob', (epochNumber)=>({
|
|
|
625
625
|
return this.l2BlockSource.getL1Constants();
|
|
626
626
|
}
|
|
627
627
|
async gatherEpochData(epochNumber) {
|
|
628
|
-
const
|
|
628
|
+
const publishedCheckpoints = await this.l2BlockSource.getCheckpoints({
|
|
629
|
+
epoch: epochNumber
|
|
630
|
+
});
|
|
631
|
+
if (publishedCheckpoints.length === 0) {
|
|
632
|
+
throw new EmptyEpochError(epochNumber);
|
|
633
|
+
}
|
|
634
|
+
const checkpoints = publishedCheckpoints.map((p)=>p.checkpoint);
|
|
635
|
+
const attestations = publishedCheckpoints.at(-1)?.attestations ?? [];
|
|
629
636
|
const txArray = await this.gatherTxs(epochNumber, checkpoints);
|
|
630
637
|
const txs = new Map(txArray.map((tx)=>[
|
|
631
638
|
tx.getTxHash().toString(),
|
|
@@ -634,8 +641,6 @@ _dec = trackSpan('ProverNode.createProvingJob', (epochNumber)=>({
|
|
|
634
641
|
const l1ToL2Messages = await this.gatherMessages(epochNumber, checkpoints);
|
|
635
642
|
const [firstBlock] = checkpoints[0].blocks;
|
|
636
643
|
const previousBlockHeader = await this.gatherPreviousBlockHeader(epochNumber, firstBlock.number - 1);
|
|
637
|
-
const [lastPublishedCheckpoint] = await this.l2BlockSource.getCheckpoints(checkpoints.at(-1).number, 1);
|
|
638
|
-
const attestations = lastPublishedCheckpoint?.attestations ?? [];
|
|
639
644
|
return {
|
|
640
645
|
checkpoints,
|
|
641
646
|
txs,
|
|
@@ -645,13 +650,6 @@ _dec = trackSpan('ProverNode.createProvingJob', (epochNumber)=>({
|
|
|
645
650
|
attestations
|
|
646
651
|
};
|
|
647
652
|
}
|
|
648
|
-
async gatherCheckpoints(epochNumber) {
|
|
649
|
-
const checkpoints = await this.l2BlockSource.getCheckpointsForEpoch(epochNumber);
|
|
650
|
-
if (checkpoints.length === 0) {
|
|
651
|
-
throw new EmptyEpochError(epochNumber);
|
|
652
|
-
}
|
|
653
|
-
return checkpoints;
|
|
654
|
-
}
|
|
655
653
|
async gatherTxs(epochNumber, checkpoints) {
|
|
656
654
|
const deadline = new Date(this.dateProvider.now() + this.config.txGatheringTimeoutMs);
|
|
657
655
|
const txProvider = this.p2pClient.getTxProvider();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "5.0.0-nightly.
|
|
3
|
+
"version": "5.0.0-nightly.20260514",
|
|
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.0.0-nightly.
|
|
60
|
-
"@aztec/bb-prover": "5.0.0-nightly.
|
|
61
|
-
"@aztec/blob-client": "5.0.0-nightly.
|
|
62
|
-
"@aztec/blob-lib": "5.0.0-nightly.
|
|
63
|
-
"@aztec/constants": "5.0.0-nightly.
|
|
64
|
-
"@aztec/epoch-cache": "5.0.0-nightly.
|
|
65
|
-
"@aztec/ethereum": "5.0.0-nightly.
|
|
66
|
-
"@aztec/foundation": "5.0.0-nightly.
|
|
67
|
-
"@aztec/kv-store": "5.0.0-nightly.
|
|
68
|
-
"@aztec/l1-artifacts": "5.0.0-nightly.
|
|
69
|
-
"@aztec/native": "5.0.0-nightly.
|
|
70
|
-
"@aztec/node-keystore": "5.0.0-nightly.
|
|
71
|
-
"@aztec/node-lib": "5.0.0-nightly.
|
|
72
|
-
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.
|
|
73
|
-
"@aztec/p2p": "5.0.0-nightly.
|
|
74
|
-
"@aztec/protocol-contracts": "5.0.0-nightly.
|
|
75
|
-
"@aztec/prover-client": "5.0.0-nightly.
|
|
76
|
-
"@aztec/sequencer-client": "5.0.0-nightly.
|
|
77
|
-
"@aztec/simulator": "5.0.0-nightly.
|
|
78
|
-
"@aztec/stdlib": "5.0.0-nightly.
|
|
79
|
-
"@aztec/telemetry-client": "5.0.0-nightly.
|
|
80
|
-
"@aztec/world-state": "5.0.0-nightly.
|
|
59
|
+
"@aztec/archiver": "5.0.0-nightly.20260514",
|
|
60
|
+
"@aztec/bb-prover": "5.0.0-nightly.20260514",
|
|
61
|
+
"@aztec/blob-client": "5.0.0-nightly.20260514",
|
|
62
|
+
"@aztec/blob-lib": "5.0.0-nightly.20260514",
|
|
63
|
+
"@aztec/constants": "5.0.0-nightly.20260514",
|
|
64
|
+
"@aztec/epoch-cache": "5.0.0-nightly.20260514",
|
|
65
|
+
"@aztec/ethereum": "5.0.0-nightly.20260514",
|
|
66
|
+
"@aztec/foundation": "5.0.0-nightly.20260514",
|
|
67
|
+
"@aztec/kv-store": "5.0.0-nightly.20260514",
|
|
68
|
+
"@aztec/l1-artifacts": "5.0.0-nightly.20260514",
|
|
69
|
+
"@aztec/native": "5.0.0-nightly.20260514",
|
|
70
|
+
"@aztec/node-keystore": "5.0.0-nightly.20260514",
|
|
71
|
+
"@aztec/node-lib": "5.0.0-nightly.20260514",
|
|
72
|
+
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.20260514",
|
|
73
|
+
"@aztec/p2p": "5.0.0-nightly.20260514",
|
|
74
|
+
"@aztec/protocol-contracts": "5.0.0-nightly.20260514",
|
|
75
|
+
"@aztec/prover-client": "5.0.0-nightly.20260514",
|
|
76
|
+
"@aztec/sequencer-client": "5.0.0-nightly.20260514",
|
|
77
|
+
"@aztec/simulator": "5.0.0-nightly.20260514",
|
|
78
|
+
"@aztec/stdlib": "5.0.0-nightly.20260514",
|
|
79
|
+
"@aztec/telemetry-client": "5.0.0-nightly.20260514",
|
|
80
|
+
"@aztec/world-state": "5.0.0-nightly.20260514",
|
|
81
81
|
"source-map-support": "^0.5.21",
|
|
82
82
|
"tslib": "^2.4.0",
|
|
83
83
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
2
|
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
3
|
-
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
4
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
4
|
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
6
5
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -50,7 +49,7 @@ async function rerunFailedEpoch(provingJobUrl: string, baseLocalDir: string) {
|
|
|
50
49
|
logger.info(`Rerunning proving job from ${jobPath} with state from ${dataDir}`, metadata);
|
|
51
50
|
const result = await rerunEpochProvingJob(jobPath, logger, {
|
|
52
51
|
...config,
|
|
53
|
-
|
|
52
|
+
rollupAddress: metadata.rollupAddress,
|
|
54
53
|
rollupVersion: metadata.rollupVersion,
|
|
55
54
|
});
|
|
56
55
|
|
package/src/factory.ts
CHANGED
|
@@ -100,7 +100,7 @@ export async function createProverNode(
|
|
|
100
100
|
pollingInterval: config.viemPollingIntervalMS,
|
|
101
101
|
});
|
|
102
102
|
|
|
103
|
-
const rollupContract = new RollupContract(publicClient, config.
|
|
103
|
+
const rollupContract = new RollupContract(publicClient, config.rollupAddress.toString());
|
|
104
104
|
|
|
105
105
|
const l1TxUtils = deps.l1TxUtils
|
|
106
106
|
? [deps.l1TxUtils]
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
1
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
3
2
|
import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
4
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
4
|
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
7
5
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
@@ -20,8 +18,8 @@ import {
|
|
|
20
18
|
EpochProvingJobTerminalState,
|
|
21
19
|
type ForkMerkleTreeOperations,
|
|
22
20
|
} from '@aztec/stdlib/interfaces/server';
|
|
21
|
+
import { appendL1ToL2MessagesToTree } from '@aztec/stdlib/messaging';
|
|
23
22
|
import { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
24
|
-
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
25
23
|
import type { ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
26
24
|
import { Attributes, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
27
25
|
|
|
@@ -191,11 +189,12 @@ export class EpochProvingJob implements Traceable {
|
|
|
191
189
|
const previousHeader = previousBlockHeaders[checkpointIndex];
|
|
192
190
|
const l1ToL2Messages = this.getL1ToL2Messages(checkpoint);
|
|
193
191
|
|
|
194
|
-
this.log.
|
|
192
|
+
this.log.debug(`Starting processing checkpoint ${checkpoint.number}`, {
|
|
195
193
|
number: checkpoint.number,
|
|
196
194
|
checkpointHash: checkpoint.hash().toString(),
|
|
197
|
-
|
|
198
|
-
|
|
195
|
+
headerHash: checkpoint.header.hash().toString(),
|
|
196
|
+
numL1ToL2Messages: l1ToL2Messages.length,
|
|
197
|
+
previousBlockNumber: previousHeader.globalVariables.blockNumber,
|
|
199
198
|
uuid: this.uuid,
|
|
200
199
|
});
|
|
201
200
|
|
|
@@ -345,13 +344,7 @@ export class EpochProvingJob implements Traceable {
|
|
|
345
344
|
blockNumber,
|
|
346
345
|
l1ToL2Messages: l1ToL2Messages.map(m => m.toString()),
|
|
347
346
|
});
|
|
348
|
-
|
|
349
|
-
l1ToL2Messages,
|
|
350
|
-
Fr.ZERO,
|
|
351
|
-
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
352
|
-
'Too many L1 to L2 messages',
|
|
353
|
-
);
|
|
354
|
-
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
347
|
+
await appendL1ToL2MessagesToTree(db, l1ToL2Messages);
|
|
355
348
|
}
|
|
356
349
|
|
|
357
350
|
return db;
|
|
@@ -96,7 +96,7 @@ export class EpochMonitor implements Traceable {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
private async getEpochNumberToProve() {
|
|
99
|
-
const lastBlockProven = await this.l2BlockSource.
|
|
99
|
+
const lastBlockProven = (await this.l2BlockSource.getBlockNumber({ tag: 'proven' })) ?? BlockNumber.ZERO;
|
|
100
100
|
const firstBlockToProve = BlockNumber(lastBlockProven + 1);
|
|
101
101
|
const firstBlockHeaderToProve = (await this.l2BlockSource.getBlockData({ number: firstBlockToProve }))?.header;
|
|
102
102
|
if (!firstBlockHeaderToProve) {
|
|
@@ -203,10 +203,14 @@ export class ProverNodePublisher {
|
|
|
203
203
|
const argsPublicInputs = [...publicInputs.toFields()];
|
|
204
204
|
|
|
205
205
|
if (!areArraysEqual(rollupPublicInputs, argsPublicInputs, (a, b) => a.equals(b))) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
206
|
+
throw await reportPublicInputsMismatch({
|
|
207
|
+
rollupPublicInputs,
|
|
208
|
+
argsPublicInputs,
|
|
209
|
+
fromCheckpoint,
|
|
210
|
+
toCheckpoint,
|
|
211
|
+
rollupContract: this.rollupContract,
|
|
212
|
+
log: this.log,
|
|
213
|
+
});
|
|
210
214
|
}
|
|
211
215
|
}
|
|
212
216
|
|
|
@@ -372,3 +376,100 @@ export class ProverNodePublisher {
|
|
|
372
376
|
};
|
|
373
377
|
}
|
|
374
378
|
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Decodes a `Root rollup public inputs mismatch`, fetches the on-chain CheckpointLog for any
|
|
382
|
+
* mismatching `checkpointHeaderHashes[i]`, emits a structured error log, and returns a thrown-ready
|
|
383
|
+
* Error with a human-readable summary.
|
|
384
|
+
*
|
|
385
|
+
* Layout of `RootRollupPublicInputs.toFields()`:
|
|
386
|
+
* [0] previousArchiveRoot
|
|
387
|
+
* [1] endArchiveRoot
|
|
388
|
+
* [2] outHash
|
|
389
|
+
* [3 .. 3+N-1] checkpointHeaderHashes[i] for i in 0..N-1 (N = MAX_CHECKPOINTS_PER_EPOCH)
|
|
390
|
+
* [3+N .. 3+3N-1] fees[i] = (recipient, value) for i in 0..N-1
|
|
391
|
+
* [3+3N .. 3+3N+4] EpochConstantData (chainId, version, vkTreeRoot, protocolContractsHash, proverId)
|
|
392
|
+
* [3+3N+5 ..] blobPublicInputs (FinalBlobAccumulator)
|
|
393
|
+
*/
|
|
394
|
+
async function reportPublicInputsMismatch(input: {
|
|
395
|
+
rollupPublicInputs: readonly Fr[];
|
|
396
|
+
argsPublicInputs: readonly Fr[];
|
|
397
|
+
fromCheckpoint: CheckpointNumber;
|
|
398
|
+
toCheckpoint: CheckpointNumber;
|
|
399
|
+
rollupContract: RollupContract;
|
|
400
|
+
log: Logger;
|
|
401
|
+
}): Promise<Error> {
|
|
402
|
+
const { rollupPublicInputs, argsPublicInputs, fromCheckpoint, toCheckpoint, rollupContract, log } = input;
|
|
403
|
+
const N = MAX_CHECKPOINTS_PER_EPOCH;
|
|
404
|
+
const constantsStart = 3 + 3 * N;
|
|
405
|
+
const blobStart = constantsStart + 5;
|
|
406
|
+
const constantLabels = ['chainId', 'version', 'vkTreeRoot', 'protocolContractsHash', 'proverId'];
|
|
407
|
+
|
|
408
|
+
const diffs: { index: number; label: string; rollup: Fr; computed: Fr; checkpointIndex?: number }[] = [];
|
|
409
|
+
const len = Math.max(rollupPublicInputs.length, argsPublicInputs.length);
|
|
410
|
+
for (let i = 0; i < len; i++) {
|
|
411
|
+
const a = rollupPublicInputs[i] ?? Fr.ZERO;
|
|
412
|
+
const b = argsPublicInputs[i] ?? Fr.ZERO;
|
|
413
|
+
if (a.equals(b)) {
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
let label: string;
|
|
417
|
+
let checkpointIndex: number | undefined;
|
|
418
|
+
if (i === 0) {
|
|
419
|
+
label = 'previousArchiveRoot';
|
|
420
|
+
} else if (i === 1) {
|
|
421
|
+
label = 'endArchiveRoot';
|
|
422
|
+
} else if (i === 2) {
|
|
423
|
+
label = 'outHash';
|
|
424
|
+
} else if (i < 3 + N) {
|
|
425
|
+
checkpointIndex = i - 3;
|
|
426
|
+
label = `checkpointHeaderHashes[${checkpointIndex}]`;
|
|
427
|
+
} else if (i < 3 + 3 * N) {
|
|
428
|
+
const feePairIndex = i - (3 + N);
|
|
429
|
+
const feeIndex = Math.floor(feePairIndex / 2);
|
|
430
|
+
const sub = feePairIndex % 2 === 0 ? 'recipient' : 'value';
|
|
431
|
+
label = `fees[${feeIndex}].${sub}`;
|
|
432
|
+
} else if (i < blobStart) {
|
|
433
|
+
label = `constants.${constantLabels[i - constantsStart]}`;
|
|
434
|
+
} else {
|
|
435
|
+
label = `blobPublicInputs[${i - blobStart}]`;
|
|
436
|
+
}
|
|
437
|
+
diffs.push({ index: i, label, rollup: a, computed: b, checkpointIndex });
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
// For each mismatching checkpointHeaderHash, fetch the L1 CheckpointLog so the operator can
|
|
441
|
+
// see what was published on-chain alongside the prover's recomputed hash.
|
|
442
|
+
const onChainCheckpoints = await Promise.all(
|
|
443
|
+
diffs
|
|
444
|
+
.filter(d => d.checkpointIndex !== undefined)
|
|
445
|
+
.map(async d => {
|
|
446
|
+
const checkpointNumber = CheckpointNumber(fromCheckpoint + d.checkpointIndex!);
|
|
447
|
+
try {
|
|
448
|
+
const cp = await rollupContract.getCheckpoint(checkpointNumber);
|
|
449
|
+
return { checkpointIndex: d.checkpointIndex!, checkpointNumber, headerHash: cp.headerHash.toString() };
|
|
450
|
+
} catch (err) {
|
|
451
|
+
return { checkpointIndex: d.checkpointIndex!, checkpointNumber, error: (err as Error).message };
|
|
452
|
+
}
|
|
453
|
+
}),
|
|
454
|
+
);
|
|
455
|
+
|
|
456
|
+
log.error(`Root rollup public inputs mismatch`, undefined, {
|
|
457
|
+
fromCheckpoint,
|
|
458
|
+
toCheckpoint,
|
|
459
|
+
numDiffs: diffs.length,
|
|
460
|
+
diffs: diffs.map(d => ({
|
|
461
|
+
index: d.index,
|
|
462
|
+
label: d.label,
|
|
463
|
+
rollup: d.rollup.toString(),
|
|
464
|
+
computed: d.computed.toString(),
|
|
465
|
+
})),
|
|
466
|
+
onChainCheckpoints,
|
|
467
|
+
});
|
|
468
|
+
|
|
469
|
+
const fmt = (inputs: readonly Fr[]) => inputs.map(x => x.toString()).join(', ');
|
|
470
|
+
const summary = diffs.map(d => `[${d.index} ${d.label}] L1=${d.rollup} prover=${d.computed}`).join('\n');
|
|
471
|
+
return new Error(
|
|
472
|
+
`Root rollup public inputs mismatch (${diffs.length} fields differ):\n${summary}\n` +
|
|
473
|
+
`Rollup: ${fmt(rollupPublicInputs)}\nComputed:${fmt(argsPublicInputs)}`,
|
|
474
|
+
);
|
|
475
|
+
}
|
package/src/prover-node.ts
CHANGED
|
@@ -312,26 +312,21 @@ export class ProverNode implements EpochMonitorHandler, ProverNodeApi, Traceable
|
|
|
312
312
|
|
|
313
313
|
@trackSpan('ProverNode.gatherEpochData', epochNumber => ({ [Attributes.EPOCH_NUMBER]: epochNumber }))
|
|
314
314
|
private async gatherEpochData(epochNumber: EpochNumber): Promise<EpochProvingJobData> {
|
|
315
|
-
const
|
|
315
|
+
const publishedCheckpoints = await this.l2BlockSource.getCheckpoints({ epoch: epochNumber });
|
|
316
|
+
if (publishedCheckpoints.length === 0) {
|
|
317
|
+
throw new EmptyEpochError(epochNumber);
|
|
318
|
+
}
|
|
319
|
+
const checkpoints = publishedCheckpoints.map(p => p.checkpoint);
|
|
320
|
+
const attestations = publishedCheckpoints.at(-1)?.attestations ?? [];
|
|
316
321
|
const txArray = await this.gatherTxs(epochNumber, checkpoints);
|
|
317
322
|
const txs = new Map<string, Tx>(txArray.map(tx => [tx.getTxHash().toString(), tx]));
|
|
318
323
|
const l1ToL2Messages = await this.gatherMessages(epochNumber, checkpoints);
|
|
319
324
|
const [firstBlock] = checkpoints[0].blocks;
|
|
320
325
|
const previousBlockHeader = await this.gatherPreviousBlockHeader(epochNumber, firstBlock.number - 1);
|
|
321
|
-
const [lastPublishedCheckpoint] = await this.l2BlockSource.getCheckpoints(checkpoints.at(-1)!.number, 1);
|
|
322
|
-
const attestations = lastPublishedCheckpoint?.attestations ?? [];
|
|
323
326
|
|
|
324
327
|
return { checkpoints, txs, l1ToL2Messages, epochNumber, previousBlockHeader, attestations };
|
|
325
328
|
}
|
|
326
329
|
|
|
327
|
-
private async gatherCheckpoints(epochNumber: EpochNumber) {
|
|
328
|
-
const checkpoints = await this.l2BlockSource.getCheckpointsForEpoch(epochNumber);
|
|
329
|
-
if (checkpoints.length === 0) {
|
|
330
|
-
throw new EmptyEpochError(epochNumber);
|
|
331
|
-
}
|
|
332
|
-
return checkpoints;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
330
|
private async gatherTxs(epochNumber: EpochNumber, checkpoints: Checkpoint[]) {
|
|
336
331
|
const deadline = new Date(this.dateProvider.now() + this.config.txGatheringTimeoutMs);
|
|
337
332
|
const txProvider = this.p2pClient.getTxProvider();
|