@aztec/prover-node 0.0.1-commit.934299a21 → 0.0.1-commit.949a33fd8
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/actions/download-epoch-proving-job.js +1 -1
- package/dest/actions/rerun-epoch-proving-job.d.ts +4 -3
- package/dest/actions/rerun-epoch-proving-job.d.ts.map +1 -1
- package/dest/actions/rerun-epoch-proving-job.js +5 -6
- package/dest/actions/upload-epoch-proof-failure.d.ts +2 -2
- package/dest/actions/upload-epoch-proof-failure.d.ts.map +1 -1
- package/dest/config.d.ts +2 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +2 -2
- package/dest/factory.d.ts +2 -3
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +25 -7
- package/dest/job/epoch-proving-job.d.ts +2 -2
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +27 -4
- package/dest/metrics.d.ts +21 -1
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +47 -0
- package/dest/monitors/epoch-monitor.d.ts +1 -1
- package/dest/monitors/epoch-monitor.d.ts.map +1 -1
- package/dest/monitors/epoch-monitor.js +5 -7
- package/dest/prover-node-publisher.d.ts +16 -1
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +52 -3
- package/dest/prover-node.d.ts +2 -2
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +5 -3
- package/dest/prover-publisher-factory.d.ts +2 -2
- package/dest/prover-publisher-factory.d.ts.map +1 -1
- package/dest/prover-publisher-factory.js +3 -3
- package/package.json +23 -22
- package/src/actions/download-epoch-proving-job.ts +1 -1
- package/src/actions/rerun-epoch-proving-job.ts +9 -4
- package/src/actions/upload-epoch-proof-failure.ts +1 -1
- package/src/config.ts +2 -2
- package/src/factory.ts +20 -8
- package/src/job/epoch-proving-job.ts +34 -5
- package/src/metrics.ts +71 -0
- package/src/monitors/epoch-monitor.ts +3 -4
- package/src/prover-node-publisher.ts +73 -5
- package/src/prover-node.ts +6 -4
- package/src/prover-publisher-factory.ts +3 -3
|
@@ -25,7 +25,7 @@ import { deserializeEpochProvingJobData } from '../job/epoch-proving-job-data.js
|
|
|
25
25
|
}, log, {
|
|
26
26
|
...config,
|
|
27
27
|
...metadata,
|
|
28
|
-
|
|
28
|
+
fileStore
|
|
29
29
|
});
|
|
30
30
|
const dataPath = urlJoin(location, 'data.bin');
|
|
31
31
|
const localPath = config.jobDataDownloadPath;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { L1ContractsConfig } from '@aztec/ethereum/config';
|
|
2
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
3
|
-
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
4
3
|
import { type ProverClientConfig } from '@aztec/prover-client';
|
|
5
4
|
import { ProverBrokerConfig } from '@aztec/prover-client/broker';
|
|
5
|
+
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
6
|
+
import type { GenesisData } from '@aztec/stdlib/world-state';
|
|
6
7
|
/**
|
|
7
8
|
* Given a local folder where `downloadEpochProvingJob` was called, creates a new archiver and world state
|
|
8
9
|
* using the state snapshots, and creates a new epoch proving job to prove the downloaded proving job.
|
|
9
10
|
* Proving is done with a local proving broker and agents as specified by the config.
|
|
10
11
|
*/
|
|
11
|
-
export declare function rerunEpochProvingJob(localPath: string, log: Logger, config: DataStoreConfig & ProverBrokerConfig & ProverClientConfig & Pick<L1ContractsConfig, 'aztecEpochDuration'
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
export declare function rerunEpochProvingJob(localPath: string, log: Logger, config: DataStoreConfig & ProverBrokerConfig & ProverClientConfig & Pick<L1ContractsConfig, 'aztecEpochDuration'>, genesis?: GenesisData): Promise<"awaiting-prover" | "completed" | "failed" | "initialized" | "processing" | "publishing-proof" | "reorg" | "stopped" | "timed-out">;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVydW4tZXBvY2gtcHJvdmluZy1qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3JlcnVuLWVwb2NoLXByb3Zpbmctam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQXNCLE1BQU0sc0JBQXNCLENBQUM7QUFDbkYsT0FBTyxFQUFFLGtCQUFrQixFQUErQixNQUFNLDZCQUE2QixDQUFDO0FBRTlGLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBVTdEOzs7O0dBSUc7QUFDSCx3QkFBc0Isb0JBQW9CLENBQ3hDLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLEdBQUcsRUFBRSxNQUFNLEVBQ1gsTUFBTSxFQUFFLGVBQWUsR0FBRyxrQkFBa0IsR0FBRyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsRUFDakgsT0FBTyxDQUFDLEVBQUUsV0FBVywrSUF5Q3RCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rerun-epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/actions/rerun-epoch-proving-job.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"rerun-epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/actions/rerun-epoch-proving-job.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,kBAAkB,EAAsB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAA+B,MAAM,6BAA6B,CAAC;AAE9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAU7D;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,EACjH,OAAO,CAAC,EAAE,WAAW,+IAyCtB"}
|
|
@@ -12,18 +12,17 @@ import { ProverNodeJobMetrics } from '../metrics.js';
|
|
|
12
12
|
* Given a local folder where `downloadEpochProvingJob` was called, creates a new archiver and world state
|
|
13
13
|
* using the state snapshots, and creates a new epoch proving job to prove the downloaded proving job.
|
|
14
14
|
* Proving is done with a local proving broker and agents as specified by the config.
|
|
15
|
-
*/ export async function rerunEpochProvingJob(localPath, log, config) {
|
|
15
|
+
*/ export async function rerunEpochProvingJob(localPath, log, config, genesis) {
|
|
16
16
|
const jobData = deserializeEpochProvingJobData(readFileSync(localPath));
|
|
17
17
|
log.info(`Loaded proving job data for epoch ${jobData.epochNumber}`);
|
|
18
18
|
const telemetry = getTelemetryClient();
|
|
19
19
|
const metrics = new ProverNodeJobMetrics(telemetry.getMeter('prover-job'), telemetry.getTracer('prover-job'));
|
|
20
|
-
const worldState = await createWorldState(config);
|
|
21
|
-
const archiver = await createArchiverStore(config
|
|
22
|
-
epochDuration: config.aztecEpochDuration
|
|
23
|
-
});
|
|
20
|
+
const worldState = await createWorldState(config, genesis);
|
|
21
|
+
const archiver = await createArchiverStore(config);
|
|
24
22
|
const publicProcessorFactory = new PublicProcessorFactory(archiver, undefined, undefined, log.getBindings());
|
|
25
23
|
const publisher = {
|
|
26
|
-
submitEpochProof: ()=>Promise.resolve(true)
|
|
24
|
+
submitEpochProof: ()=>Promise.resolve(true),
|
|
25
|
+
analyzeEpochProofSubmission: ()=>Promise.resolve()
|
|
27
26
|
};
|
|
28
27
|
const l2BlockSourceForReorgDetection = undefined;
|
|
29
28
|
const deadline = undefined;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type Archiver } from '@aztec/archiver';
|
|
2
2
|
import type { Logger } from '@aztec/foundation/log';
|
|
3
|
-
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
4
3
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
5
4
|
import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
6
6
|
import { type EpochProvingJobData } from '../job/epoch-proving-job-data.js';
|
|
7
7
|
type UploadEpochProofConfig = Pick<ChainConfig, 'l1ChainId' | 'rollupVersion'> & Pick<DataStoreConfig, 'dataDirectory'>;
|
|
8
8
|
/**
|
|
@@ -12,4 +12,4 @@ type UploadEpochProofConfig = Pick<ChainConfig, 'l1ChainId' | 'rollupVersion'> &
|
|
|
12
12
|
*/
|
|
13
13
|
export declare function uploadEpochProofFailure(location: string, jobId: string, jobData: EpochProvingJobData, archiver: Archiver, worldState: WorldStateSynchronizer, config: UploadEpochProofConfig, log: Logger): Promise<string>;
|
|
14
14
|
export {};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWVwb2NoLXByb29mLWZhaWx1cmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3VwbG9hZC1lcG9jaC1wcm9vZi1mYWlsdXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsS0FBSyxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUTlELE9BQU8sRUFBRSxLQUFLLG1CQUFtQixFQUFnQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFHLEtBQUssc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUt4SDs7OztHQUlHO0FBQ0gsd0JBQXNCLHVCQUF1QixDQUMzQyxRQUFRLEVBQUUsTUFBTSxFQUNoQixLQUFLLEVBQUUsTUFBTSxFQUNiLE9BQU8sRUFBRSxtQkFBbUIsRUFDNUIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsVUFBVSxFQUFFLHNCQUFzQixFQUNsQyxNQUFNLEVBQUUsc0JBQXNCLEVBQzlCLEdBQUcsRUFBRSxNQUFNLG1CQXVDWiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-epoch-proof-failure.d.ts","sourceRoot":"","sources":["../../src/actions/upload-epoch-proof-failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-epoch-proof-failure.d.ts","sourceRoot":"","sources":["../../src/actions/upload-epoch-proof-failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,OAAO,EAAE,KAAK,mBAAmB,EAAgC,MAAM,kCAAkC,CAAC;AAE1G,KAAK,sBAAsB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;AAKxH;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,sBAAsB,EAClC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,mBAuCZ"}
|
package/dest/config.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { ACVMConfig, BBConfig } from '@aztec/bb-prover/config';
|
|
2
2
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
3
|
-
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
4
3
|
import { type KeyStoreConfig } from '@aztec/node-keystore/config';
|
|
5
4
|
import type { KeyStore } from '@aztec/node-keystore/types';
|
|
6
5
|
import { type SharedNodeConfig } from '@aztec/node-lib/config';
|
|
7
6
|
import { type ProverAgentConfig, type ProverBrokerConfig } from '@aztec/prover-client/broker/config';
|
|
8
7
|
import { type ProverClientUserConfig } from '@aztec/prover-client/config';
|
|
9
8
|
import { type ProverPublisherConfig, type ProverTxSenderConfig } from '@aztec/sequencer-client/config';
|
|
9
|
+
import { type DataStoreConfig } from '@aztec/stdlib/kv-store';
|
|
10
10
|
export type ProverNodeConfig = ProverClientUserConfig & ProverPublisherConfig & ProverTxSenderConfig & DataStoreConfig & KeyStoreConfig & SpecificProverNodeConfig & Pick<SharedNodeConfig, 'web3SignerUrl'>;
|
|
11
11
|
export type SpecificProverNodeConfig = {
|
|
12
12
|
proverNodeMaxPendingJobs: number;
|
|
@@ -26,4 +26,4 @@ export declare function getProverNodeConfigFromEnv(): ProverNodeConfig;
|
|
|
26
26
|
export declare function getProverNodeBrokerConfigFromEnv(): ProverBrokerConfig;
|
|
27
27
|
export declare function getProverNodeAgentConfigFromEnv(): ProverAgentConfig & BBConfig & ACVMConfig;
|
|
28
28
|
export declare function createKeyStoreForProver(config: ProverNodeConfig): KeyStore | undefined;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sNkJBQTZCLENBQUM7QUFFMUYsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTRCLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUNMLEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssa0JBQWtCLEVBR3hCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLEtBQUssc0JBQXNCLEVBQWdELE1BQU0sNkJBQTZCLENBQUM7QUFDeEgsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssb0JBQW9CLEVBRzFCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsR0FDbkQscUJBQXFCLEdBQ3JCLG9CQUFvQixHQUNwQixlQUFlLEdBQ2YsY0FBYyxHQUNkLHdCQUF3QixHQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFMUMsTUFBTSxNQUFNLHdCQUF3QixHQUFHO0lBQ3JDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQztJQUNqQywyQkFBMkIsRUFBRSxNQUFNLENBQUM7SUFDcEMsbUNBQW1DLEVBQUUsTUFBTSxDQUFDO0lBQzVDLDBCQUEwQixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0MsNkJBQTZCLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNsRCw2QkFBNkIsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN4QyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IscUJBQXFCLEVBQUUsTUFBTSxDQUFDO0lBQzlCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixxQ0FBcUMsRUFBRSxNQUFNLENBQUM7Q0FDL0MsQ0FBQztBQUVGLGVBQU8sTUFBTSxnQ0FBZ0MsRUFBRSxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FrRHpGLENBQUM7QUFFRixlQUFPLE1BQU0sd0JBQXdCLEVBQUUsa0JBQWtCLENBQUMsZ0JBQWdCLENBUXpFLENBQUM7QUFFRix3QkFBZ0IsMEJBQTBCLElBQUksZ0JBQWdCLENBRTdEO0FBRUQsd0JBQWdCLGdDQUFnQyxJQUFJLGtCQUFrQixDQUlyRTtBQUVELHdCQUFnQiwrQkFBK0IsSUFBSSxpQkFBaUIsR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUszRjtBQTBERCx3QkFBZ0IsdUJBQXVCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixHQUFHLFFBQVEsR0FBRyxTQUFTLENBU3RGIn0=
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,6BAA6B,CAAC;AAE1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,sBAAsB,EAAgD,MAAM,6BAA6B,CAAC;AACxH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAG1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAElF,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GACnD,qBAAqB,GACrB,oBAAoB,GACpB,eAAe,GACf,cAAc,GACd,wBAAwB,GACxB,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAAG;IACrC,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qCAAqC,EAAE,MAAM,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,kBAAkB,CAAC,wBAAwB,CAkDzF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,gBAAgB,CAQzE,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,gBAAgB,CAE7D;AAED,wBAAgB,gCAAgC,IAAI,kBAAkB,CAIrE;AAED,wBAAgB,+BAA+B,IAAI,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAK3F;AA0DD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAStF"}
|
package/dest/config.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings } from '@aztec/foundation/config';
|
|
2
|
-
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
3
2
|
import { keyStoreConfigMappings } from '@aztec/node-keystore/config';
|
|
4
3
|
import { ethPrivateKeySchema } from '@aztec/node-keystore/schemas';
|
|
5
4
|
import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
6
5
|
import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/prover-client/broker/config';
|
|
7
6
|
import { bbConfigMappings, proverClientConfigMappings } from '@aztec/prover-client/config';
|
|
8
7
|
import { proverPublisherConfigMappings, proverTxSenderConfigMappings } from '@aztec/sequencer-client/config';
|
|
8
|
+
import { dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
9
9
|
export const specificProverNodeConfigMappings = {
|
|
10
10
|
proverNodeMaxPendingJobs: {
|
|
11
11
|
env: 'PROVER_NODE_MAX_PENDING_JOBS',
|
|
@@ -20,7 +20,7 @@ export const specificProverNodeConfigMappings = {
|
|
|
20
20
|
proverNodeMaxParallelBlocksPerEpoch: {
|
|
21
21
|
env: 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH',
|
|
22
22
|
description: 'The Maximum number of blocks to process in parallel while proving an epoch',
|
|
23
|
-
...numberConfigHelper(
|
|
23
|
+
...numberConfigHelper(0)
|
|
24
24
|
},
|
|
25
25
|
proverNodeFailedEpochStore: {
|
|
26
26
|
env: 'PROVER_NODE_FAILED_EPOCH_STORE',
|
package/dest/factory.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { DateProvider } from '@aztec/foundation/timer';
|
|
|
7
7
|
import { KeystoreManager } from '@aztec/node-keystore';
|
|
8
8
|
import { type ProverClientUserConfig } from '@aztec/prover-client';
|
|
9
9
|
import { type ProverPublisherConfig, type ProverTxSenderConfig } from '@aztec/sequencer-client';
|
|
10
|
-
import type {
|
|
10
|
+
import type { ITxProvider, ProverConfig, ProvingJobBroker, Service, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
11
11
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
12
12
|
import type { SpecificProverNodeConfig } from './config.js';
|
|
13
13
|
import { ProverNode } from './prover-node.js';
|
|
@@ -15,7 +15,6 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
15
15
|
export type ProverNodeDeps = {
|
|
16
16
|
telemetry?: TelemetryClient;
|
|
17
17
|
log?: Logger;
|
|
18
|
-
aztecNodeTxProvider?: Pick<AztecNode, 'getTxsByHash'>;
|
|
19
18
|
archiver: Archiver;
|
|
20
19
|
publisherFactory?: ProverPublisherFactory;
|
|
21
20
|
broker?: ProvingJobBroker;
|
|
@@ -31,4 +30,4 @@ export type ProverNodeDeps = {
|
|
|
31
30
|
};
|
|
32
31
|
/** Creates a new prover node subsystem given a config and dependencies */
|
|
33
32
|
export declare function createProverNode(userConfig: SpecificProverNodeConfig & ProverConfig & ProverClientUserConfig & ProverPublisherConfig & ProverTxSenderConfig, deps: ProverNodeDeps): Promise<ProverNode>;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQTJCLEtBQUssc0JBQXNCLEVBQXNCLE1BQU0sc0JBQXNCLENBQUM7QUFFaEgsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssb0JBQW9CLEVBRTFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxLQUFLLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7SUFDNUIsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2IsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUNuQixnQkFBZ0IsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO0lBQzFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzFCLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztJQUN0QixZQUFZLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDNUIsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7SUFDL0MsU0FBUyxFQUFFO1FBQUUsYUFBYSxJQUFJLFdBQVcsQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztJQUNoQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDaEMsZUFBZSxDQUFDLEVBQUUsZUFBZSxDQUFDO0NBQ25DLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0JBQXNCLGdCQUFnQixDQUNwQyxVQUFVLEVBQUUsd0JBQXdCLEdBQ2xDLFlBQVksR0FDWixzQkFBc0IsR0FDdEIscUJBQXFCLEdBQ3JCLG9CQUFvQixFQUN0QixJQUFJLEVBQUUsY0FBYyx1QkF1SXJCIn0=
|
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,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAA2B,KAAK,sBAAsB,EAAsB,MAAM,sBAAsB,CAAC;AAEhH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAI9F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,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;CACnC,CAAC;AAEF,0EAA0E;AAC1E,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,wBAAwB,GAClC,YAAY,GACZ,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,EACtB,IAAI,EAAE,cAAc,uBAuIrB"}
|
package/dest/factory.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Blob } from '@aztec/blob-lib';
|
|
2
2
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
3
|
+
import { makeL1HttpTransport } from '@aztec/ethereum/client';
|
|
3
4
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
4
5
|
import { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
5
6
|
import { pick } from '@aztec/foundation/collection';
|
|
@@ -10,7 +11,7 @@ import { createProverClient } from '@aztec/prover-client';
|
|
|
10
11
|
import { createAndStartProvingBroker } from '@aztec/prover-client/broker';
|
|
11
12
|
import { getPublisherConfigFromProverConfig } from '@aztec/sequencer-client';
|
|
12
13
|
import { L1Metrics, getTelemetryClient } from '@aztec/telemetry-client';
|
|
13
|
-
import { createPublicClient
|
|
14
|
+
import { createPublicClient } from 'viem';
|
|
14
15
|
import { EpochMonitor } from './monitors/epoch-monitor.js';
|
|
15
16
|
import { ProverNode } from './prover-node.js';
|
|
16
17
|
import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
@@ -46,9 +47,9 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
46
47
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
47
48
|
const publicClient = createPublicClient({
|
|
48
49
|
chain: chain.chainInfo,
|
|
49
|
-
transport:
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
transport: makeL1HttpTransport(config.l1RpcUrls, {
|
|
51
|
+
timeout: config.l1HttpTimeoutMS
|
|
52
|
+
}),
|
|
52
53
|
pollingInterval: config.viemPollingIntervalMS
|
|
53
54
|
});
|
|
54
55
|
const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
|
|
@@ -70,13 +71,30 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
70
71
|
logger: log.createChild('l1-tx-utils'),
|
|
71
72
|
dateProvider
|
|
72
73
|
});
|
|
74
|
+
// Create a funder L1TxUtils from the keystore funding account (if configured)
|
|
75
|
+
const fundingSigner = keyStoreManager?.createFundingSigner();
|
|
76
|
+
let funderL1TxUtils;
|
|
77
|
+
if (fundingSigner) {
|
|
78
|
+
const [funder] = await createL1TxUtilsFromSigners(publicClient, [
|
|
79
|
+
fundingSigner
|
|
80
|
+
], {
|
|
81
|
+
...config,
|
|
82
|
+
scope: 'prover'
|
|
83
|
+
}, {
|
|
84
|
+
telemetry,
|
|
85
|
+
logger: log.createChild('l1-tx-utils:funder'),
|
|
86
|
+
dateProvider
|
|
87
|
+
});
|
|
88
|
+
funderL1TxUtils = funder;
|
|
89
|
+
}
|
|
73
90
|
const publisherFactory = deps.publisherFactory ?? new ProverPublisherFactory(config, {
|
|
74
91
|
rollupContract,
|
|
75
|
-
publisherManager: new PublisherManager(l1TxUtils, getPublisherConfigFromProverConfig(config),
|
|
92
|
+
publisherManager: new PublisherManager(l1TxUtils, getPublisherConfigFromProverConfig(config), {
|
|
93
|
+
bindings: log.getBindings(),
|
|
94
|
+
funder: funderL1TxUtils
|
|
95
|
+
}),
|
|
76
96
|
telemetry
|
|
77
97
|
});
|
|
78
|
-
// TODO(#20393): Check that the tx collection node sources are properly injected
|
|
79
|
-
// See aztecNodeTxProvider
|
|
80
98
|
const proverNodeConfig = {
|
|
81
99
|
...pick(config, 'proverNodeMaxPendingJobs', 'proverNodeMaxParallelBlocksPerEpoch', 'proverNodePollingIntervalMs', 'proverNodeEpochProvingDelayMs', 'txGatheringMaxParallelRequests', 'txGatheringIntervalMs', 'txGatheringTimeoutMs', 'proverNodeFailedEpochStore', 'proverNodeDisableProofPublish', 'dataDirectory', 'l1ChainId', 'rollupVersion')
|
|
82
100
|
};
|
|
@@ -34,7 +34,7 @@ export declare class EpochProvingJob implements Traceable {
|
|
|
34
34
|
private epochCheckPromise;
|
|
35
35
|
private deadlineTimeoutHandler;
|
|
36
36
|
readonly tracer: Tracer;
|
|
37
|
-
constructor(data: EpochProvingJobData, dbProvider: Pick<ForkMerkleTreeOperations, 'fork'>, prover: EpochProver, publicProcessorFactory: PublicProcessorFactory, publisher: Pick<ProverNodePublisher, 'submitEpochProof'>, l2BlockSource: L2BlockSource | undefined, metrics: ProverNodeJobMetrics, deadline: Date | undefined, config: EpochProvingJobOptions, bindings?: LoggerBindings);
|
|
37
|
+
constructor(data: EpochProvingJobData, dbProvider: Pick<ForkMerkleTreeOperations, 'fork'>, prover: EpochProver, publicProcessorFactory: PublicProcessorFactory, publisher: Pick<ProverNodePublisher, 'submitEpochProof' | 'analyzeEpochProofSubmission'>, l2BlockSource: L2BlockSource | undefined, metrics: ProverNodeJobMetrics, deadline: Date | undefined, config: EpochProvingJobOptions, bindings?: LoggerBindings);
|
|
38
38
|
getId(): string;
|
|
39
39
|
getState(): EpochProvingJobState;
|
|
40
40
|
getEpochNumber(): EpochNumber;
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvZXBvY2gtcHJvdmluZy1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzNFLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQU92RixPQUFPLEtBQUssRUFBbUIsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBVyxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRSxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssb0JBQW9CLEVBQ3pCLDRCQUE0QixFQUM1QixLQUFLLHdCQUF3QixFQUM5QixNQUFNLGlDQUFpQyxDQUFDO0FBSXpDLE9BQU8sRUFBYyxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBSTdGLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQStCLE1BQU0sNkJBQTZCLENBQUM7QUFFcEcsTUFBTSxNQUFNLHNCQUFzQixHQUFHO0lBQ25DLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN6QixlQUFlLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDM0IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxxQkFBYSxlQUFnQixZQUFXLFNBQVM7SUFZN0MsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxzQkFBc0I7SUFDOUIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLE9BQU87SUFDZixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsTUFBTTtJQW5CaEIsT0FBTyxDQUFDLEtBQUssQ0FBdUM7SUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUNwQixPQUFPLENBQUMsSUFBSSxDQUFTO0lBRXJCLE9BQU8sQ0FBQyxVQUFVLENBQTRCO0lBQzlDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBNkI7SUFDdEQsT0FBTyxDQUFDLHNCQUFzQixDQUE2QjtJQUUzRCxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ1UsSUFBSSxFQUFFLG1CQUFtQixFQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxFQUNsRCxNQUFNLEVBQUUsV0FBVyxFQUNuQixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxrQkFBa0IsR0FBRyw2QkFBNkIsQ0FBQyxFQUN4RixhQUFhLEVBQUUsYUFBYSxHQUFHLFNBQVMsRUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUM3QixRQUFRLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFDMUIsTUFBTSxFQUFFLHNCQUFzQixFQUN0QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBUzFCO0lBRU0sS0FBSyxJQUFJLE1BQU0sQ0FFckI7SUFFTSxRQUFRLElBQUksb0JBQW9CLENBRXRDO0lBRU0sY0FBYyxJQUFJLFdBQVcsQ0FFbkM7SUFFTSxXQUFXLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FFckM7SUFFTSxjQUFjLElBQUksbUJBQW1CLENBRTNDO0lBRUQsT0FBTyxLQUFLLFdBQVcsR0FFdEI7SUFFRCxPQUFPLEtBQUssV0FBVyxHQUV0QjtJQUVELE9BQU8sS0FBSyxHQUFHLEdBRWQ7SUFFRCxPQUFPLEtBQUssWUFBWSxHQUV2QjtJQUVEOztPQUVHO0lBSVUsR0FBRyxrQkFvTmY7WUFRYSxVQUFVO0lBcUJ4QixPQUFPLENBQUMsYUFBYTtJQUtyQixPQUFPLENBQUMsVUFBVTtJQU1MLElBQUksQ0FBQyxLQUFLLEdBQUUsNEJBQXdDLGlCQU1oRTtJQUVELE9BQU8sQ0FBQyxvQkFBb0I7WUF3QmQsa0JBQWtCO0lBa0NoQyxPQUFPLENBQUMsMEJBQTBCO0lBS2xDLE9BQU8sQ0FBQyxNQUFNO0lBSWQsT0FBTyxDQUFDLGlCQUFpQjtZQUlYLFVBQVU7Q0FtQnpCO0FBU0QsT0FBTyxFQUFFLEtBQUssb0JBQW9CLEVBQUUsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG3E,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,kBAoNf;YAQa,UAAU;IAqBxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC,iBAMhE;IAED,OAAO,CAAC,oBAAoB;YAwBd,kBAAkB;IAkChC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAmBzB;AASD,OAAO,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
|
|
@@ -379,6 +379,7 @@ import { Fr } from '@aztec/foundation/curves/bn254';
|
|
|
379
379
|
import { createLogger } from '@aztec/foundation/log';
|
|
380
380
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
381
381
|
import { Timer } from '@aztec/foundation/timer';
|
|
382
|
+
import { AVM_MAX_CONCURRENT_SIMULATIONS } from '@aztec/native';
|
|
382
383
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
383
384
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
384
385
|
import { buildFinalBlobChallenges } from '@aztec/prover-client/helpers';
|
|
@@ -498,17 +499,22 @@ _dec = trackSpan('EpochProvingJob.run', function() {
|
|
|
498
499
|
const { promise, resolve } = promiseWithResolvers();
|
|
499
500
|
this.runPromise = promise;
|
|
500
501
|
try {
|
|
502
|
+
const blobTimer = new Timer();
|
|
501
503
|
const blobFieldsPerCheckpoint = this.checkpoints.map((checkpoint)=>checkpoint.toBlobFields());
|
|
502
|
-
this.log.info(`Blob fields per checkpoint: ${timer.ms()}ms`);
|
|
503
504
|
const finalBlobBatchingChallenges = await buildFinalBlobChallenges(blobFieldsPerCheckpoint);
|
|
504
|
-
this.
|
|
505
|
+
this.metrics.recordBlobProcessing(blobTimer.ms());
|
|
505
506
|
this.prover.startNewEpoch(epochNumber, epochSizeCheckpoints, finalBlobBatchingChallenges);
|
|
507
|
+
const chonkTimer = new Timer();
|
|
506
508
|
await this.prover.startChonkVerifierCircuits(Array.from(this.txs.values()));
|
|
509
|
+
this.metrics.recordChonkVerifier(chonkTimer.ms());
|
|
507
510
|
// Everything in the epoch should have the same chainId and version.
|
|
508
511
|
const { chainId, version } = this.checkpoints[0].blocks[0].header.globalVariables;
|
|
509
512
|
const previousBlockHeaders = this.gatherPreviousBlockHeaders();
|
|
510
|
-
|
|
513
|
+
const allCheckpointsTimer = new Timer();
|
|
514
|
+
const parallelism = this.config.parallelBlockLimit ? this.config.parallelBlockLimit : AVM_MAX_CONCURRENT_SIMULATIONS > 0 ? AVM_MAX_CONCURRENT_SIMULATIONS : this.checkpoints.length;
|
|
515
|
+
await asyncPool(parallelism, this.checkpoints, async (checkpoint)=>{
|
|
511
516
|
this.checkState();
|
|
517
|
+
const checkpointTimer = new Timer();
|
|
512
518
|
const checkpointIndex = checkpoint.number - fromCheckpoint;
|
|
513
519
|
const checkpointConstants = CheckpointConstantData.from({
|
|
514
520
|
chainId,
|
|
@@ -532,6 +538,7 @@ _dec = trackSpan('EpochProvingJob.run', function() {
|
|
|
532
538
|
});
|
|
533
539
|
await this.prover.startNewCheckpoint(checkpointIndex, checkpointConstants, l1ToL2Messages, checkpoint.blocks.length, previousHeader);
|
|
534
540
|
for(let blockIndex = 0; blockIndex < checkpoint.blocks.length; blockIndex++){
|
|
541
|
+
const blockTimer = new Timer();
|
|
535
542
|
const block = checkpoint.blocks[blockIndex];
|
|
536
543
|
const globalVariables = block.header.globalVariables;
|
|
537
544
|
const txs = this.getTxs(block);
|
|
@@ -570,8 +577,11 @@ _dec = trackSpan('EpochProvingJob.run', function() {
|
|
|
570
577
|
// Mark block as completed to pad it
|
|
571
578
|
const expectedBlockHeader = block.header;
|
|
572
579
|
await this.prover.setBlockCompleted(block.number, expectedBlockHeader);
|
|
580
|
+
this.metrics.recordBlockProcessing(blockTimer.ms());
|
|
573
581
|
}
|
|
582
|
+
this.metrics.recordCheckpointProcessing(checkpointTimer.ms());
|
|
574
583
|
});
|
|
584
|
+
this.metrics.recordAllCheckpointsProcessing(allCheckpointsTimer.ms());
|
|
575
585
|
const executionTime = timer.ms();
|
|
576
586
|
this.progressState('awaiting-prover');
|
|
577
587
|
const { publicInputs, proof, batchedBlobInputs } = await this.prover.finalizeEpoch();
|
|
@@ -582,7 +592,20 @@ _dec = trackSpan('EpochProvingJob.run', function() {
|
|
|
582
592
|
});
|
|
583
593
|
this.progressState('publishing-proof');
|
|
584
594
|
if (this.config.skipSubmitProof) {
|
|
585
|
-
this.log.info(`Proof publishing is disabled.
|
|
595
|
+
this.log.info(`Proof publishing is disabled. Analyzing estimated L1 fees for epoch ${epochNumber} (checkpoints ${fromCheckpoint} to ${toCheckpoint})`);
|
|
596
|
+
try {
|
|
597
|
+
await this.publisher.analyzeEpochProofSubmission({
|
|
598
|
+
fromCheckpoint,
|
|
599
|
+
toCheckpoint,
|
|
600
|
+
epochNumber,
|
|
601
|
+
publicInputs,
|
|
602
|
+
proof,
|
|
603
|
+
batchedBlobInputs,
|
|
604
|
+
attestations
|
|
605
|
+
});
|
|
606
|
+
} catch (err) {
|
|
607
|
+
this.log.warn(`Failed to analyze estimated L1 fees for epoch ${epochNumber}`, err);
|
|
608
|
+
}
|
|
586
609
|
this.state = 'completed';
|
|
587
610
|
this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeCheckpoints, epochSizeBlocks, epochSizeTxs);
|
|
588
611
|
return;
|
package/dest/metrics.d.ts
CHANGED
|
@@ -11,8 +11,18 @@ export declare class ProverNodeJobMetrics {
|
|
|
11
11
|
provingJobCheckpoints: Gauge;
|
|
12
12
|
provingJobBlocks: Gauge;
|
|
13
13
|
provingJobTransactions: Gauge;
|
|
14
|
+
private blobProcessingDuration;
|
|
15
|
+
private chonkVerifierDuration;
|
|
16
|
+
private blockProcessingDuration;
|
|
17
|
+
private checkpointProcessingDuration;
|
|
18
|
+
private allCheckpointsProcessingDuration;
|
|
14
19
|
constructor(meter: Meter, tracer: Tracer, logger?: import("@aztec/foundation/log").Logger);
|
|
15
20
|
recordProvingJob(executionTimeMs: number, totalTimeMs: number, numCheckpoints: number, numBlocks: number, numTxs: number): void;
|
|
21
|
+
recordBlobProcessing(durationMs: number): void;
|
|
22
|
+
recordChonkVerifier(durationMs: number): void;
|
|
23
|
+
recordBlockProcessing(durationMs: number): void;
|
|
24
|
+
recordCheckpointProcessing(durationMs: number): void;
|
|
25
|
+
recordAllCheckpointsProcessing(durationMs: number): void;
|
|
16
26
|
}
|
|
17
27
|
export declare class ProverNodeRewardsMetrics {
|
|
18
28
|
private meter;
|
|
@@ -28,6 +38,12 @@ export declare class ProverNodeRewardsMetrics {
|
|
|
28
38
|
stop(): void;
|
|
29
39
|
private observe;
|
|
30
40
|
}
|
|
41
|
+
export type EstimatedSubmitProofStats = {
|
|
42
|
+
gasLimit: bigint;
|
|
43
|
+
baseFeePerGas: bigint;
|
|
44
|
+
maxPriorityFeePerGas: bigint;
|
|
45
|
+
estimatedTotalFee: bigint;
|
|
46
|
+
};
|
|
31
47
|
export declare class ProverNodePublisherMetrics {
|
|
32
48
|
readonly client: TelemetryClient;
|
|
33
49
|
private logger;
|
|
@@ -40,12 +56,16 @@ export declare class ProverNodePublisherMetrics {
|
|
|
40
56
|
txBlobDataGasUsed: Histogram;
|
|
41
57
|
txBlobDataGasCost: Histogram;
|
|
42
58
|
txTotalFee: Histogram;
|
|
59
|
+
private txGasEstimated;
|
|
60
|
+
private gasPriceEstimated;
|
|
61
|
+
private txTotalFeeEstimated;
|
|
43
62
|
private senderBalance;
|
|
44
63
|
private meter;
|
|
45
64
|
constructor(client: TelemetryClient, name?: string, logger?: import("@aztec/foundation/log").Logger);
|
|
46
65
|
recordFailedTx(): void;
|
|
47
66
|
recordSubmitProof(durationMs: number, stats: L1PublishProofStats): void;
|
|
67
|
+
recordEstimatedSubmitProof(stats: EstimatedSubmitProofStats): void;
|
|
48
68
|
recordSenderBalance(wei: bigint, senderAddress: string): void;
|
|
49
69
|
private recordTx;
|
|
50
70
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUdMLEtBQUssS0FBSyxFQUNWLEtBQUssU0FBUyxFQUNkLEtBQUssS0FBSyxFQUdWLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFDWCxLQUFLLGFBQWEsRUFFbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUlqQyxxQkFBYSxvQkFBb0I7SUFjN0IsT0FBTyxDQUFDLEtBQUs7YUFDRyxNQUFNLEVBQUUsTUFBTTtJQUM5QixPQUFPLENBQUMsTUFBTTtJQWZoQiw0QkFBNEIsRUFBRSxTQUFTLENBQUM7SUFDeEMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDO0lBQzlCLHFCQUFxQixFQUFFLEtBQUssQ0FBQztJQUM3QixnQkFBZ0IsRUFBRSxLQUFLLENBQUM7SUFDeEIsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO0lBRTlCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBUTtJQUN0QyxPQUFPLENBQUMscUJBQXFCLENBQVE7SUFDckMsT0FBTyxDQUFDLHVCQUF1QixDQUFZO0lBQzNDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBWTtJQUNoRCxPQUFPLENBQUMsZ0NBQWdDLENBQVE7SUFFaEQsWUFDVSxLQUFLLEVBQUUsS0FBSyxFQUNKLE1BQU0sRUFBRSxNQUFNLEVBQ3RCLE1BQU0seUNBQWdELEVBZS9EO0lBRU0sZ0JBQWdCLENBQ3JCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLE1BQU0sRUFBRSxNQUFNLFFBT2Y7SUFFTSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUU3QztJQUVNLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxNQUFNLFFBRTVDO0lBRU0scUJBQXFCLENBQUMsVUFBVSxFQUFFLE1BQU0sUUFFOUM7SUFFTSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUVuRDtJQUVNLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxNQUFNLFFBRXZEO0NBQ0Y7QUFFRCxxQkFBYSx3QkFBd0I7SUFPakMsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxNQUFNO0lBVGhCLE9BQU8sQ0FBQyxPQUFPLENBQWtCO0lBQ2pDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBZ0I7SUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBTztJQUN4QixPQUFPLENBQUMscUJBQXFCLENBQUs7SUFFbEMsWUFDVSxLQUFLLEVBQUUsS0FBSyxFQUNaLFFBQVEsRUFBRSxVQUFVLEVBQ3BCLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLE1BQU0seUNBQWdELEVBSy9EO0lBRVksS0FBSyxrQkFJakI7SUFFTSxJQUFJLFNBRVY7SUFFRCxPQUFPLENBQUMsT0FBTyxDQXdCYjtDQUNIO0FBRUQsTUFBTSxNQUFNLHlCQUF5QixHQUFHO0lBQ3RDLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QixvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0NBQzNCLENBQUM7QUFFRixxQkFBYSwwQkFBMEI7YUFtQm5CLE1BQU0sRUFBRSxlQUFlO0lBRXZDLE9BQU8sQ0FBQyxNQUFNO0lBcEJoQixRQUFRLEVBQUUsU0FBUyxDQUFDO0lBQ3BCLE9BQU8sRUFBRSxhQUFhLENBQUM7SUFDdkIsVUFBVSxFQUFFLFNBQVMsQ0FBQztJQUN0QixLQUFLLEVBQUUsU0FBUyxDQUFDO0lBQ2pCLGNBQWMsRUFBRSxTQUFTLENBQUM7SUFDMUIsYUFBYSxFQUFFLFNBQVMsQ0FBQztJQUN6QixpQkFBaUIsRUFBRSxTQUFTLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO0lBQzdCLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFFdEIsT0FBTyxDQUFDLGNBQWMsQ0FBWTtJQUNsQyxPQUFPLENBQUMsaUJBQWlCLENBQVk7SUFDckMsT0FBTyxDQUFDLG1CQUFtQixDQUFZO0lBRXZDLE9BQU8sQ0FBQyxhQUFhLENBQVE7SUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBUTtJQUVyQixZQUNrQixNQUFNLEVBQUUsZUFBZSxFQUN2QyxJQUFJLFNBQWUsRUFDWCxNQUFNLHlDQUFnRCxFQWdDL0Q7SUFFRCxjQUFjLFNBS2I7SUFFRCxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsUUFFL0Q7SUFFTSwwQkFBMEIsQ0FBQyxLQUFLLEVBQUUseUJBQXlCLFFBa0JqRTtJQUVNLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFLNUQ7SUFFRCxPQUFPLENBQUMsUUFBUTtDQXVDakIifQ==
|
package/dest/metrics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,KAAK,EAGV,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,aAAa,EAEnB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,oBAAoB;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,KAAK,EAGV,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,aAAa,EAEnB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,KAAK;aACG,MAAM,EAAE,MAAM;IAC9B,OAAO,CAAC,MAAM;IAfhB,4BAA4B,EAAE,SAAS,CAAC;IACxC,kBAAkB,EAAE,SAAS,CAAC;IAC9B,qBAAqB,EAAE,KAAK,CAAC;IAC7B,gBAAgB,EAAE,KAAK,CAAC;IACxB,sBAAsB,EAAE,KAAK,CAAC;IAE9B,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,uBAAuB,CAAY;IAC3C,OAAO,CAAC,4BAA4B,CAAY;IAChD,OAAO,CAAC,gCAAgC,CAAQ;IAEhD,YACU,KAAK,EAAE,KAAK,EACJ,MAAM,EAAE,MAAM,EACtB,MAAM,yCAAgD,EAe/D;IAEM,gBAAgB,CACrB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,QAOf;IAEM,oBAAoB,CAAC,UAAU,EAAE,MAAM,QAE7C;IAEM,mBAAmB,CAAC,UAAU,EAAE,MAAM,QAE5C;IAEM,qBAAqB,CAAC,UAAU,EAAE,MAAM,QAE9C;IAEM,0BAA0B,CAAC,UAAU,EAAE,MAAM,QAEnD;IAEM,8BAA8B,CAAC,UAAU,EAAE,MAAM,QAEvD;CACF;AAED,qBAAa,wBAAwB;IAOjC,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAThB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,kBAAkB,CAAgB;IAC1C,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,qBAAqB,CAAK;IAElC,YACU,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,cAAc,EACtB,MAAM,yCAAgD,EAK/D;IAEY,KAAK,kBAIjB;IAEM,IAAI,SAEV;IAED,OAAO,CAAC,OAAO,CAwBb;CACH;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,0BAA0B;aAmBnB,MAAM,EAAE,eAAe;IAEvC,OAAO,CAAC,MAAM;IApBhB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,SAAS,CAAC;IAC1B,aAAa,EAAE,SAAS,CAAC;IACzB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,iBAAiB,EAAE,SAAS,CAAC;IAC7B,UAAU,EAAE,SAAS,CAAC;IAEtB,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,mBAAmB,CAAY;IAEvC,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,KAAK,CAAQ;IAErB,YACkB,MAAM,EAAE,eAAe,EACvC,IAAI,SAAe,EACX,MAAM,yCAAgD,EAgC/D;IAED,cAAc,SAKb;IAED,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,QAE/D;IAEM,0BAA0B,CAAC,KAAK,EAAE,yBAAyB,QAkBjE;IAEM,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAK5D;IAED,OAAO,CAAC,QAAQ;CAuCjB"}
|
package/dest/metrics.js
CHANGED
|
@@ -10,6 +10,11 @@ export class ProverNodeJobMetrics {
|
|
|
10
10
|
provingJobCheckpoints;
|
|
11
11
|
provingJobBlocks;
|
|
12
12
|
provingJobTransactions;
|
|
13
|
+
blobProcessingDuration;
|
|
14
|
+
chonkVerifierDuration;
|
|
15
|
+
blockProcessingDuration;
|
|
16
|
+
checkpointProcessingDuration;
|
|
17
|
+
allCheckpointsProcessingDuration;
|
|
13
18
|
constructor(meter, tracer, logger = createLogger('prover-node:publisher:metrics')){
|
|
14
19
|
this.meter = meter;
|
|
15
20
|
this.tracer = tracer;
|
|
@@ -19,6 +24,11 @@ export class ProverNodeJobMetrics {
|
|
|
19
24
|
this.provingJobCheckpoints = this.meter.createGauge(Metrics.PROVER_NODE_JOB_CHECKPOINTS);
|
|
20
25
|
this.provingJobBlocks = this.meter.createGauge(Metrics.PROVER_NODE_JOB_BLOCKS);
|
|
21
26
|
this.provingJobTransactions = this.meter.createGauge(Metrics.PROVER_NODE_JOB_TRANSACTIONS);
|
|
27
|
+
this.blobProcessingDuration = this.meter.createGauge(Metrics.PROVER_NODE_BLOB_PROCESSING_LAST_DURATION);
|
|
28
|
+
this.chonkVerifierDuration = this.meter.createGauge(Metrics.PROVER_NODE_CHONK_VERIFIER_LAST_DURATION);
|
|
29
|
+
this.blockProcessingDuration = this.meter.createHistogram(Metrics.PROVER_NODE_BLOCK_PROCESSING_DURATION);
|
|
30
|
+
this.checkpointProcessingDuration = this.meter.createHistogram(Metrics.PROVER_NODE_CHECKPOINT_PROCESSING_DURATION);
|
|
31
|
+
this.allCheckpointsProcessingDuration = this.meter.createGauge(Metrics.PROVER_NODE_ALL_CHECKPOINTS_PROCESSING_LAST_DURATION);
|
|
22
32
|
}
|
|
23
33
|
recordProvingJob(executionTimeMs, totalTimeMs, numCheckpoints, numBlocks, numTxs) {
|
|
24
34
|
this.proverEpochExecutionDuration.record(Math.ceil(executionTimeMs));
|
|
@@ -27,6 +37,21 @@ export class ProverNodeJobMetrics {
|
|
|
27
37
|
this.provingJobBlocks.record(Math.floor(numBlocks));
|
|
28
38
|
this.provingJobTransactions.record(Math.floor(numTxs));
|
|
29
39
|
}
|
|
40
|
+
recordBlobProcessing(durationMs) {
|
|
41
|
+
this.blobProcessingDuration.record(Math.ceil(durationMs));
|
|
42
|
+
}
|
|
43
|
+
recordChonkVerifier(durationMs) {
|
|
44
|
+
this.chonkVerifierDuration.record(Math.ceil(durationMs));
|
|
45
|
+
}
|
|
46
|
+
recordBlockProcessing(durationMs) {
|
|
47
|
+
this.blockProcessingDuration.record(Math.ceil(durationMs));
|
|
48
|
+
}
|
|
49
|
+
recordCheckpointProcessing(durationMs) {
|
|
50
|
+
this.checkpointProcessingDuration.record(Math.ceil(durationMs));
|
|
51
|
+
}
|
|
52
|
+
recordAllCheckpointsProcessing(durationMs) {
|
|
53
|
+
this.allCheckpointsProcessingDuration.record(Math.ceil(durationMs));
|
|
54
|
+
}
|
|
30
55
|
}
|
|
31
56
|
export class ProverNodeRewardsMetrics {
|
|
32
57
|
meter;
|
|
@@ -94,6 +119,9 @@ export class ProverNodePublisherMetrics {
|
|
|
94
119
|
txBlobDataGasUsed;
|
|
95
120
|
txBlobDataGasCost;
|
|
96
121
|
txTotalFee;
|
|
122
|
+
txGasEstimated;
|
|
123
|
+
gasPriceEstimated;
|
|
124
|
+
txTotalFeeEstimated;
|
|
97
125
|
senderBalance;
|
|
98
126
|
meter;
|
|
99
127
|
constructor(client, name = 'ProverNode', logger = createLogger('prover-node:publisher:metrics')){
|
|
@@ -117,6 +145,9 @@ export class ProverNodePublisherMetrics {
|
|
|
117
145
|
this.txBlobDataGasUsed = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED);
|
|
118
146
|
this.txBlobDataGasCost = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST);
|
|
119
147
|
this.txTotalFee = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE);
|
|
148
|
+
this.txGasEstimated = this.meter.createHistogram(Metrics.PROVER_NODE_ESTIMATED_SUBMISSION_GAS);
|
|
149
|
+
this.gasPriceEstimated = this.meter.createHistogram(Metrics.PROVER_NODE_ESTIMATED_SUBMISSION_GAS_PRICE);
|
|
150
|
+
this.txTotalFeeEstimated = this.meter.createHistogram(Metrics.PROVER_NODE_ESTIMATED_SUBMISSION_TOTAL_FEE);
|
|
120
151
|
this.senderBalance = this.meter.createGauge(Metrics.L1_PUBLISHER_BALANCE);
|
|
121
152
|
}
|
|
122
153
|
recordFailedTx() {
|
|
@@ -128,6 +159,22 @@ export class ProverNodePublisherMetrics {
|
|
|
128
159
|
recordSubmitProof(durationMs, stats) {
|
|
129
160
|
this.recordTx(durationMs, stats);
|
|
130
161
|
}
|
|
162
|
+
recordEstimatedSubmitProof(stats) {
|
|
163
|
+
const attributes = {
|
|
164
|
+
[Attributes.L1_TX_TYPE]: 'submitProof'
|
|
165
|
+
};
|
|
166
|
+
this.txGasEstimated.record(Number(stats.gasLimit), attributes);
|
|
167
|
+
try {
|
|
168
|
+
this.gasPriceEstimated.record(parseInt(formatEther(stats.baseFeePerGas + stats.maxPriorityFeePerGas, 'gwei'), 10));
|
|
169
|
+
} catch {
|
|
170
|
+
// ignore
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
this.txTotalFeeEstimated.record(parseFloat(formatEther(stats.estimatedTotalFee)));
|
|
174
|
+
} catch {
|
|
175
|
+
// ignore
|
|
176
|
+
}
|
|
177
|
+
}
|
|
131
178
|
recordSenderBalance(wei, senderAddress) {
|
|
132
179
|
const eth = parseFloat(formatEther(wei, 'wei'));
|
|
133
180
|
this.senderBalance.record(eth, {
|
|
@@ -40,4 +40,4 @@ export declare class EpochMonitor implements Traceable {
|
|
|
40
40
|
work(): Promise<void>;
|
|
41
41
|
private getEpochNumberToProve;
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtbW9uaXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbml0b3JzL2Vwb2NoLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTNFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVoSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQ3JFO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILHFCQUFhLFlBQWEsWUFBVyxTQUFTO0lBUzFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYTtJQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDNUIsT0FBTyxDQUFDLE9BQU87SUFWakIsT0FBTyxDQUFDLGNBQWMsQ0FBaUI7SUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBNkM7SUFDeEQsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixPQUFPLENBQUMsT0FBTyxDQUFrQztJQUNqRCxPQUFPLENBQUMsaUJBQWlCLENBQTBCO0lBRW5ELFlBQ21CLGFBQWEsRUFBRSxhQUFhLEVBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLEVBQzlELE9BQU8sRUFBRTtRQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQ3ZFLFNBQVMsR0FBRSxlQUFzQyxFQU9sRDtJQUVELE9BQW9CLE1BQU0sQ0FDeEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsT0FBTyxFQUFFO1FBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFDL0QsU0FBUyxHQUFFLGVBQXNDLEdBQ2hELE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FHdkI7SUFFTSxLQUFLLENBQUMsT0FBTyxFQUFFLG1CQUFtQixRQUl4QztJQUVELDBCQUEwQjtJQUNuQixVQUFVLENBQUMsT0FBTyxFQUFFLG1CQUFtQixRQUU3QztJQUVZLElBQUksa0JBR2hCO0lBRVksSUFBSSxrQkEwQmhCO1lBRWEscUJBQXFCO0NBWXBDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-monitor.d.ts","sourceRoot":"","sources":["../../src/monitors/epoch-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAEhH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,YAAW,SAAS;IAS1C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,GAAG,CAA6C;IACxD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,iBAAiB,CAA0B;IAEnD,YACmB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAC9D,OAAO,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EACvE,SAAS,GAAE,eAAsC,EAOlD;IAED,OAAoB,MAAM,CACxB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAC/D,SAAS,GAAE,eAAsC,GAChD,OAAO,CAAC,YAAY,CAAC,CAGvB;IAEM,KAAK,CAAC,OAAO,EAAE,mBAAmB,QAIxC;IAED,0BAA0B;IACnB,UAAU,CAAC,OAAO,EAAE,mBAAmB,QAE7C;IAEY,IAAI,kBAGhB;IAEY,IAAI,
|
|
1
|
+
{"version":3,"file":"epoch-monitor.d.ts","sourceRoot":"","sources":["../../src/monitors/epoch-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAI3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAEhH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAa,YAAW,SAAS;IAS1C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,GAAG,CAA6C;IACxD,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,iBAAiB,CAA0B;IAEnD,YACmB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAC9D,OAAO,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EACvE,SAAS,GAAE,eAAsC,EAOlD;IAED,OAAoB,MAAM,CACxB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAC/D,SAAS,GAAE,eAAsC,GAChD,OAAO,CAAC,YAAY,CAAC,CAGvB;IAEM,KAAK,CAAC,OAAO,EAAE,mBAAmB,QAIxC;IAED,0BAA0B;IACnB,UAAU,CAAC,OAAO,EAAE,mBAAmB,QAE7C;IAEY,IAAI,kBAGhB;IAEY,IAAI,kBA0BhB;YAEa,qBAAqB;CAYpC"}
|
|
@@ -52,13 +52,11 @@ import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
|
52
52
|
}
|
|
53
53
|
async work() {
|
|
54
54
|
const { epochToProve, blockNumber, slotNumber } = await this.getEpochNumberToProve();
|
|
55
|
-
this.log.debug(`Epoch to prove: ${epochToProve}`, {
|
|
56
|
-
blockNumber,
|
|
57
|
-
slotNumber
|
|
58
|
-
});
|
|
59
55
|
if (epochToProve === undefined) {
|
|
60
56
|
this.log.trace(`Next block to prove ${blockNumber} not yet mined`, {
|
|
61
|
-
|
|
57
|
+
epochToProve,
|
|
58
|
+
blockNumber,
|
|
59
|
+
slotNumber
|
|
62
60
|
});
|
|
63
61
|
return;
|
|
64
62
|
}
|
|
@@ -80,10 +78,10 @@ import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
|
80
78
|
return;
|
|
81
79
|
}
|
|
82
80
|
if (this.options.provingDelayMs) {
|
|
83
|
-
this.log.
|
|
81
|
+
this.log.warn(`Waiting ${this.options.provingDelayMs}ms before proving epoch ${epochToProve}`);
|
|
84
82
|
await sleep(this.options.provingDelayMs);
|
|
85
83
|
}
|
|
86
|
-
this.log.
|
|
84
|
+
this.log.verbose(`Epoch ${epochToProve} is ready to be proven`);
|
|
87
85
|
if (await this.handler?.handleEpochReadyToProve(epochToProve)) {
|
|
88
86
|
this.latestEpochNumber = epochToProve;
|
|
89
87
|
}
|