@aztec/prover-node 0.0.0-test.0 → 0.0.1-commit.001888fc
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.d.ts +18 -0
- package/dest/actions/download-epoch-proving-job.d.ts.map +1 -0
- package/dest/actions/download-epoch-proving-job.js +37 -0
- package/dest/actions/index.d.ts +3 -0
- package/dest/actions/index.d.ts.map +1 -0
- package/dest/actions/index.js +2 -0
- package/dest/actions/rerun-epoch-proving-job.d.ts +12 -0
- package/dest/actions/rerun-epoch-proving-job.d.ts.map +1 -0
- package/dest/actions/rerun-epoch-proving-job.js +40 -0
- package/dest/actions/upload-epoch-proof-failure.d.ts +15 -0
- package/dest/actions/upload-epoch-proof-failure.d.ts.map +1 -0
- package/dest/actions/upload-epoch-proof-failure.js +78 -0
- package/dest/bin/run-failed-epoch.d.ts +2 -0
- package/dest/bin/run-failed-epoch.d.ts.map +1 -0
- package/dest/bin/run-failed-epoch.js +70 -0
- package/dest/config.d.ts +17 -16
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +93 -28
- package/dest/factory.d.ts +26 -18
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +72 -42
- package/dest/index.d.ts +3 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -1
- package/dest/job/epoch-proving-job-data.d.ts +18 -0
- package/dest/job/epoch-proving-job-data.d.ts.map +1 -0
- package/dest/job/epoch-proving-job-data.js +59 -0
- package/dest/job/epoch-proving-job.d.ts +27 -18
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +604 -97
- package/dest/metrics.d.ts +40 -5
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +136 -73
- package/dest/monitors/epoch-monitor.d.ts +5 -2
- package/dest/monitors/epoch-monitor.d.ts.map +1 -1
- package/dest/monitors/epoch-monitor.js +18 -15
- package/dest/monitors/index.d.ts +1 -1
- package/dest/prover-node-publisher.d.ts +19 -19
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +90 -84
- package/dest/prover-node.d.ts +61 -46
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +592 -135
- package/dest/prover-publisher-factory.d.ts +25 -0
- package/dest/prover-publisher-factory.d.ts.map +1 -0
- package/dest/prover-publisher-factory.js +28 -0
- package/dest/test/index.d.ts +5 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -3
- package/package.json +40 -33
- package/src/actions/download-epoch-proving-job.ts +44 -0
- package/src/actions/index.ts +2 -0
- package/src/actions/rerun-epoch-proving-job.ts +63 -0
- package/src/actions/upload-epoch-proof-failure.ts +88 -0
- package/src/bin/run-failed-epoch.ts +80 -0
- package/src/config.ts +123 -45
- package/src/factory.ts +146 -66
- package/src/index.ts +2 -1
- package/src/job/epoch-proving-job-data.ts +82 -0
- package/src/job/epoch-proving-job.ts +295 -85
- package/src/metrics.ts +153 -72
- package/src/monitors/epoch-monitor.ts +21 -17
- package/src/prover-node-publisher.ts +139 -119
- package/src/prover-node.ts +238 -149
- package/src/prover-publisher-factory.ts +45 -0
- package/src/test/index.ts +7 -4
- package/dest/http.d.ts +0 -8
- package/dest/http.d.ts.map +0 -1
- package/dest/http.js +0 -9
- package/dest/prover-coordination/config.d.ts +0 -7
- package/dest/prover-coordination/config.d.ts.map +0 -1
- package/dest/prover-coordination/config.js +0 -11
- package/dest/prover-coordination/factory.d.ts +0 -22
- package/dest/prover-coordination/factory.d.ts.map +0 -1
- package/dest/prover-coordination/factory.js +0 -42
- package/dest/prover-coordination/index.d.ts +0 -3
- package/dest/prover-coordination/index.d.ts.map +0 -1
- package/dest/prover-coordination/index.js +0 -2
- package/src/http.ts +0 -13
- package/src/prover-coordination/config.ts +0 -17
- package/src/prover-coordination/factory.ts +0 -72
- package/src/prover-coordination/index.ts +0 -2
package/dest/metrics.d.ts
CHANGED
|
@@ -1,12 +1,46 @@
|
|
|
1
|
+
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
2
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
1
3
|
import type { L1PublishProofStats } from '@aztec/stdlib/stats';
|
|
2
|
-
import { type Gauge, type Histogram, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
|
|
3
|
-
export declare class
|
|
4
|
-
|
|
4
|
+
import { type Gauge, type Histogram, type Meter, type TelemetryClient, type Tracer, type UpDownCounter } from '@aztec/telemetry-client';
|
|
5
|
+
export declare class ProverNodeJobMetrics {
|
|
6
|
+
private meter;
|
|
7
|
+
readonly tracer: Tracer;
|
|
5
8
|
private logger;
|
|
6
9
|
proverEpochExecutionDuration: Histogram;
|
|
7
10
|
provingJobDuration: Histogram;
|
|
11
|
+
provingJobCheckpoints: Gauge;
|
|
8
12
|
provingJobBlocks: Gauge;
|
|
9
13
|
provingJobTransactions: Gauge;
|
|
14
|
+
private blobProcessingDuration;
|
|
15
|
+
private chonkVerifierDuration;
|
|
16
|
+
private blockProcessingDuration;
|
|
17
|
+
private checkpointProcessingDuration;
|
|
18
|
+
private allCheckpointsProcessingDuration;
|
|
19
|
+
constructor(meter: Meter, tracer: Tracer, logger?: import("@aztec/foundation/log").Logger);
|
|
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;
|
|
26
|
+
}
|
|
27
|
+
export declare class ProverNodeRewardsMetrics {
|
|
28
|
+
private meter;
|
|
29
|
+
private coinbase;
|
|
30
|
+
private rollup;
|
|
31
|
+
private logger;
|
|
32
|
+
private rewards;
|
|
33
|
+
private accumulatedRewards;
|
|
34
|
+
private prevEpoch;
|
|
35
|
+
private proofSubmissionEpochs;
|
|
36
|
+
constructor(meter: Meter, coinbase: EthAddress, rollup: RollupContract, logger?: import("@aztec/foundation/log").Logger);
|
|
37
|
+
start(): Promise<void>;
|
|
38
|
+
stop(): void;
|
|
39
|
+
private observe;
|
|
40
|
+
}
|
|
41
|
+
export declare class ProverNodePublisherMetrics {
|
|
42
|
+
readonly client: TelemetryClient;
|
|
43
|
+
private logger;
|
|
10
44
|
gasPrice: Histogram;
|
|
11
45
|
txCount: UpDownCounter;
|
|
12
46
|
txDuration: Histogram;
|
|
@@ -15,12 +49,13 @@ export declare class ProverNodeMetrics {
|
|
|
15
49
|
txCalldataGas: Histogram;
|
|
16
50
|
txBlobDataGasUsed: Histogram;
|
|
17
51
|
txBlobDataGasCost: Histogram;
|
|
52
|
+
txTotalFee: Histogram;
|
|
18
53
|
private senderBalance;
|
|
54
|
+
private meter;
|
|
19
55
|
constructor(client: TelemetryClient, name?: string, logger?: import("@aztec/foundation/log").Logger);
|
|
20
56
|
recordFailedTx(): void;
|
|
21
57
|
recordSubmitProof(durationMs: number, stats: L1PublishProofStats): void;
|
|
22
|
-
recordProvingJob(executionTimeMs: number, totalTimeMs: number, numBlocks: number, numTxs: number): void;
|
|
23
58
|
recordSenderBalance(wei: bigint, senderAddress: string): void;
|
|
24
59
|
private recordTx;
|
|
25
60
|
}
|
|
26
|
-
//# sourceMappingURL=
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUdMLEtBQUssS0FBSyxFQUNWLEtBQUssU0FBUyxFQUNkLEtBQUssS0FBSyxFQUdWLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFDWCxLQUFLLGFBQWEsRUFFbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUlqQyxxQkFBYSxvQkFBb0I7SUFjN0IsT0FBTyxDQUFDLEtBQUs7YUFDRyxNQUFNLEVBQUUsTUFBTTtJQUM5QixPQUFPLENBQUMsTUFBTTtJQWZoQiw0QkFBNEIsRUFBRSxTQUFTLENBQUM7SUFDeEMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDO0lBQzlCLHFCQUFxQixFQUFFLEtBQUssQ0FBQztJQUM3QixnQkFBZ0IsRUFBRSxLQUFLLENBQUM7SUFDeEIsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO0lBRTlCLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBUTtJQUN0QyxPQUFPLENBQUMscUJBQXFCLENBQVE7SUFDckMsT0FBTyxDQUFDLHVCQUF1QixDQUFZO0lBQzNDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBWTtJQUNoRCxPQUFPLENBQUMsZ0NBQWdDLENBQVE7SUFFaEQsWUFDVSxLQUFLLEVBQUUsS0FBSyxFQUNKLE1BQU0sRUFBRSxNQUFNLEVBQ3RCLE1BQU0seUNBQWdELEVBZS9EO0lBRU0sZ0JBQWdCLENBQ3JCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLFdBQVcsRUFBRSxNQUFNLEVBQ25CLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLE1BQU0sRUFBRSxNQUFNLFFBT2Y7SUFFTSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUU3QztJQUVNLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxNQUFNLFFBRTVDO0lBRU0scUJBQXFCLENBQUMsVUFBVSxFQUFFLE1BQU0sUUFFOUM7SUFFTSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUVuRDtJQUVNLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxNQUFNLFFBRXZEO0NBQ0Y7QUFFRCxxQkFBYSx3QkFBd0I7SUFPakMsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxNQUFNO0lBVGhCLE9BQU8sQ0FBQyxPQUFPLENBQWtCO0lBQ2pDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBZ0I7SUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBTztJQUN4QixPQUFPLENBQUMscUJBQXFCLENBQUs7SUFFbEMsWUFDVSxLQUFLLEVBQUUsS0FBSyxFQUNaLFFBQVEsRUFBRSxVQUFVLEVBQ3BCLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLE1BQU0seUNBQWdELEVBSy9EO0lBRVksS0FBSyxrQkFJakI7SUFFTSxJQUFJLFNBRVY7SUFFRCxPQUFPLENBQUMsT0FBTyxDQXdCYjtDQUNIO0FBRUQscUJBQWEsMEJBQTBCO2FBZW5CLE1BQU0sRUFBRSxlQUFlO0lBRXZDLE9BQU8sQ0FBQyxNQUFNO0lBaEJoQixRQUFRLEVBQUUsU0FBUyxDQUFDO0lBQ3BCLE9BQU8sRUFBRSxhQUFhLENBQUM7SUFDdkIsVUFBVSxFQUFFLFNBQVMsQ0FBQztJQUN0QixLQUFLLEVBQUUsU0FBUyxDQUFDO0lBQ2pCLGNBQWMsRUFBRSxTQUFTLENBQUM7SUFDMUIsYUFBYSxFQUFFLFNBQVMsQ0FBQztJQUN6QixpQkFBaUIsRUFBRSxTQUFTLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO0lBQzdCLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFFdEIsT0FBTyxDQUFDLGFBQWEsQ0FBUTtJQUM3QixPQUFPLENBQUMsS0FBSyxDQUFRO0lBRXJCLFlBQ2tCLE1BQU0sRUFBRSxlQUFlLEVBQ3ZDLElBQUksU0FBZSxFQUNYLE1BQU0seUNBQWdELEVBMEIvRDtJQUVELGNBQWMsU0FLYjtJQUVELGlCQUFpQixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixRQUUvRDtJQUVNLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFLNUQ7SUFFRCxPQUFPLENBQUMsUUFBUTtDQXVDakIifQ==
|
package/dest/metrics.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"
|
|
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,qBAAa,0BAA0B;aAenB,MAAM,EAAE,eAAe;IAEvC,OAAO,CAAC,MAAM;IAhBhB,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,aAAa,CAAQ;IAC7B,OAAO,CAAC,KAAK,CAAQ;IAErB,YACkB,MAAM,EAAE,eAAe,EACvC,IAAI,SAAe,EACX,MAAM,yCAAgD,EA0B/D;IAED,cAAc,SAKb;IAED,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,QAE/D;IAEM,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAK5D;IAED,OAAO,CAAC,QAAQ;CAuCjB"}
|
package/dest/metrics.js
CHANGED
|
@@ -1,13 +1,115 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { Attributes, Metrics,
|
|
3
|
-
import { formatEther } from 'viem';
|
|
4
|
-
export class
|
|
5
|
-
|
|
2
|
+
import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
|
|
3
|
+
import { formatEther, formatUnits } from 'viem';
|
|
4
|
+
export class ProverNodeJobMetrics {
|
|
5
|
+
meter;
|
|
6
|
+
tracer;
|
|
6
7
|
logger;
|
|
7
8
|
proverEpochExecutionDuration;
|
|
8
9
|
provingJobDuration;
|
|
10
|
+
provingJobCheckpoints;
|
|
9
11
|
provingJobBlocks;
|
|
10
12
|
provingJobTransactions;
|
|
13
|
+
blobProcessingDuration;
|
|
14
|
+
chonkVerifierDuration;
|
|
15
|
+
blockProcessingDuration;
|
|
16
|
+
checkpointProcessingDuration;
|
|
17
|
+
allCheckpointsProcessingDuration;
|
|
18
|
+
constructor(meter, tracer, logger = createLogger('prover-node:publisher:metrics')){
|
|
19
|
+
this.meter = meter;
|
|
20
|
+
this.tracer = tracer;
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
this.proverEpochExecutionDuration = this.meter.createHistogram(Metrics.PROVER_NODE_EXECUTION_DURATION);
|
|
23
|
+
this.provingJobDuration = this.meter.createHistogram(Metrics.PROVER_NODE_JOB_DURATION);
|
|
24
|
+
this.provingJobCheckpoints = this.meter.createGauge(Metrics.PROVER_NODE_JOB_CHECKPOINTS);
|
|
25
|
+
this.provingJobBlocks = this.meter.createGauge(Metrics.PROVER_NODE_JOB_BLOCKS);
|
|
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);
|
|
32
|
+
}
|
|
33
|
+
recordProvingJob(executionTimeMs, totalTimeMs, numCheckpoints, numBlocks, numTxs) {
|
|
34
|
+
this.proverEpochExecutionDuration.record(Math.ceil(executionTimeMs));
|
|
35
|
+
this.provingJobDuration.record(totalTimeMs / 1000);
|
|
36
|
+
this.provingJobCheckpoints.record(Math.floor(numCheckpoints));
|
|
37
|
+
this.provingJobBlocks.record(Math.floor(numBlocks));
|
|
38
|
+
this.provingJobTransactions.record(Math.floor(numTxs));
|
|
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
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class ProverNodeRewardsMetrics {
|
|
57
|
+
meter;
|
|
58
|
+
coinbase;
|
|
59
|
+
rollup;
|
|
60
|
+
logger;
|
|
61
|
+
rewards;
|
|
62
|
+
accumulatedRewards;
|
|
63
|
+
prevEpoch;
|
|
64
|
+
proofSubmissionEpochs;
|
|
65
|
+
constructor(meter, coinbase, rollup, logger = createLogger('prover-node:publisher:metrics')){
|
|
66
|
+
this.meter = meter;
|
|
67
|
+
this.coinbase = coinbase;
|
|
68
|
+
this.rollup = rollup;
|
|
69
|
+
this.logger = logger;
|
|
70
|
+
this.prevEpoch = -1n;
|
|
71
|
+
this.proofSubmissionEpochs = 0;
|
|
72
|
+
this.observe = async (observer)=>{
|
|
73
|
+
const epoch = await this.rollup.getCurrentEpochNumber();
|
|
74
|
+
if (epoch > this.proofSubmissionEpochs) {
|
|
75
|
+
// look at the prev epoch so that we get an accurate value, after proof submission window has closed
|
|
76
|
+
// For example, if proof submission window is 1 epoch, and we are in epoch 2, we should be looking at epoch 0.
|
|
77
|
+
// Similarly, if the proof submission window is 0, and we are in epoch 1, we should be looking at epoch 0.
|
|
78
|
+
const closedEpoch = BigInt(epoch) - BigInt(this.proofSubmissionEpochs) - 1n;
|
|
79
|
+
const rewards = await this.rollup.getSpecificProverRewardsForEpoch(closedEpoch, this.coinbase);
|
|
80
|
+
const fmt = parseFloat(formatUnits(rewards, 18));
|
|
81
|
+
observer.observe(this.rewards, fmt, {
|
|
82
|
+
[Attributes.COINBASE]: this.coinbase.toString()
|
|
83
|
+
});
|
|
84
|
+
// only accumulate once per epoch
|
|
85
|
+
if (closedEpoch > this.prevEpoch) {
|
|
86
|
+
this.prevEpoch = closedEpoch;
|
|
87
|
+
this.accumulatedRewards.add(fmt, {
|
|
88
|
+
[Attributes.COINBASE]: this.coinbase.toString()
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
this.rewards = this.meter.createObservableGauge(Metrics.PROVER_NODE_REWARDS_PER_EPOCH);
|
|
94
|
+
this.accumulatedRewards = createUpDownCounterWithDefault(this.meter, Metrics.PROVER_NODE_REWARDS_TOTAL);
|
|
95
|
+
}
|
|
96
|
+
async start() {
|
|
97
|
+
const proofSubmissionEpochs = await this.rollup.getProofSubmissionEpochs();
|
|
98
|
+
this.proofSubmissionEpochs = Number(proofSubmissionEpochs);
|
|
99
|
+
this.meter.addBatchObservableCallback(this.observe, [
|
|
100
|
+
this.rewards
|
|
101
|
+
]);
|
|
102
|
+
}
|
|
103
|
+
stop() {
|
|
104
|
+
this.meter.removeBatchObservableCallback(this.observe, [
|
|
105
|
+
this.rewards
|
|
106
|
+
]);
|
|
107
|
+
}
|
|
108
|
+
observe;
|
|
109
|
+
}
|
|
110
|
+
export class ProverNodePublisherMetrics {
|
|
111
|
+
client;
|
|
112
|
+
logger;
|
|
11
113
|
gasPrice;
|
|
12
114
|
txCount;
|
|
13
115
|
txDuration;
|
|
@@ -16,72 +118,31 @@ export class ProverNodeMetrics {
|
|
|
16
118
|
txCalldataGas;
|
|
17
119
|
txBlobDataGasUsed;
|
|
18
120
|
txBlobDataGasCost;
|
|
121
|
+
txTotalFee;
|
|
19
122
|
senderBalance;
|
|
123
|
+
meter;
|
|
20
124
|
constructor(client, name = 'ProverNode', logger = createLogger('prover-node:publisher:metrics')){
|
|
21
125
|
this.client = client;
|
|
22
126
|
this.logger = logger;
|
|
23
|
-
|
|
24
|
-
this.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
});
|
|
34
|
-
this.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE, {
|
|
43
|
-
description: 'The gas price used for transactions',
|
|
44
|
-
unit: 'gwei',
|
|
45
|
-
valueType: ValueType.DOUBLE
|
|
46
|
-
});
|
|
47
|
-
this.txCount = meter.createUpDownCounter(Metrics.L1_PUBLISHER_TX_COUNT, {
|
|
48
|
-
description: 'The number of transactions processed'
|
|
49
|
-
});
|
|
50
|
-
this.txDuration = meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION, {
|
|
51
|
-
description: 'The duration of transaction processing',
|
|
52
|
-
unit: 'ms',
|
|
53
|
-
valueType: ValueType.INT
|
|
54
|
-
});
|
|
55
|
-
this.txGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS, {
|
|
56
|
-
description: 'The gas consumed by transactions',
|
|
57
|
-
unit: 'gas',
|
|
58
|
-
valueType: ValueType.INT
|
|
59
|
-
});
|
|
60
|
-
this.txCalldataSize = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE, {
|
|
61
|
-
description: 'The size of the calldata in transactions',
|
|
62
|
-
unit: 'By',
|
|
63
|
-
valueType: ValueType.INT
|
|
64
|
-
});
|
|
65
|
-
this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS, {
|
|
66
|
-
description: 'The gas consumed by the calldata in transactions',
|
|
67
|
-
unit: 'gas',
|
|
68
|
-
valueType: ValueType.INT
|
|
69
|
-
});
|
|
70
|
-
this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED, {
|
|
71
|
-
description: 'The amount of blob gas used in transactions',
|
|
72
|
-
unit: 'gas',
|
|
73
|
-
valueType: ValueType.INT
|
|
74
|
-
});
|
|
75
|
-
this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST, {
|
|
76
|
-
description: 'The gas cost of blobs in transactions',
|
|
77
|
-
unit: 'gwei',
|
|
78
|
-
valueType: ValueType.INT
|
|
79
|
-
});
|
|
80
|
-
this.senderBalance = meter.createGauge(Metrics.L1_PUBLISHER_BALANCE, {
|
|
81
|
-
unit: 'eth',
|
|
82
|
-
description: 'The balance of the sender address',
|
|
83
|
-
valueType: ValueType.DOUBLE
|
|
84
|
-
});
|
|
127
|
+
this.meter = client.getMeter(name);
|
|
128
|
+
this.gasPrice = this.meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE);
|
|
129
|
+
this.txCount = createUpDownCounterWithDefault(this.meter, Metrics.L1_PUBLISHER_TX_COUNT, {
|
|
130
|
+
[Attributes.L1_TX_TYPE]: [
|
|
131
|
+
'submitProof'
|
|
132
|
+
],
|
|
133
|
+
[Attributes.OK]: [
|
|
134
|
+
true,
|
|
135
|
+
false
|
|
136
|
+
]
|
|
137
|
+
});
|
|
138
|
+
this.txDuration = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION);
|
|
139
|
+
this.txGas = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS);
|
|
140
|
+
this.txCalldataSize = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE);
|
|
141
|
+
this.txCalldataGas = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS);
|
|
142
|
+
this.txBlobDataGasUsed = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED);
|
|
143
|
+
this.txBlobDataGasCost = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST);
|
|
144
|
+
this.txTotalFee = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE);
|
|
145
|
+
this.senderBalance = this.meter.createGauge(Metrics.L1_PUBLISHER_BALANCE);
|
|
85
146
|
}
|
|
86
147
|
recordFailedTx() {
|
|
87
148
|
this.txCount.add(1, {
|
|
@@ -92,12 +153,6 @@ export class ProverNodeMetrics {
|
|
|
92
153
|
recordSubmitProof(durationMs, stats) {
|
|
93
154
|
this.recordTx(durationMs, stats);
|
|
94
155
|
}
|
|
95
|
-
recordProvingJob(executionTimeMs, totalTimeMs, numBlocks, numTxs) {
|
|
96
|
-
this.proverEpochExecutionDuration.record(Math.ceil(executionTimeMs));
|
|
97
|
-
this.provingJobDuration.record(totalTimeMs / 1000);
|
|
98
|
-
this.provingJobBlocks.record(Math.floor(numBlocks));
|
|
99
|
-
this.provingJobTransactions.record(Math.floor(numTxs));
|
|
100
|
-
}
|
|
101
156
|
recordSenderBalance(wei, senderAddress) {
|
|
102
157
|
const eth = parseFloat(formatEther(wei, 'wei'));
|
|
103
158
|
this.senderBalance.record(eth, {
|
|
@@ -122,7 +177,15 @@ export class ProverNodeMetrics {
|
|
|
122
177
|
this.txBlobDataGasUsed.record(Number(stats.blobGasUsed), attributes);
|
|
123
178
|
try {
|
|
124
179
|
this.gasPrice.record(parseInt(formatEther(stats.gasPrice, 'gwei'), 10));
|
|
125
|
-
} catch
|
|
180
|
+
} catch {
|
|
181
|
+
// ignore
|
|
182
|
+
}
|
|
183
|
+
const executionFee = stats.gasUsed * stats.gasPrice;
|
|
184
|
+
const blobFee = stats.blobGasUsed * stats.blobDataGas;
|
|
185
|
+
const totalFee = executionFee + blobFee;
|
|
186
|
+
try {
|
|
187
|
+
this.txTotalFee.record(parseFloat(formatEther(totalFee)));
|
|
188
|
+
} catch {
|
|
126
189
|
// ignore
|
|
127
190
|
}
|
|
128
191
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
2
3
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
3
4
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
4
5
|
export interface EpochMonitorHandler {
|
|
5
|
-
handleEpochReadyToProve(epochNumber:
|
|
6
|
+
handleEpochReadyToProve(epochNumber: EpochNumber): Promise<boolean>;
|
|
6
7
|
}
|
|
7
8
|
/**
|
|
8
9
|
* Fires an event when a new epoch ready to prove is detected.
|
|
@@ -26,9 +27,11 @@ export declare class EpochMonitor implements Traceable {
|
|
|
26
27
|
private latestEpochNumber;
|
|
27
28
|
constructor(l2BlockSource: L2BlockSource, l1Constants: Pick<L1RollupConstants, 'epochDuration'>, options: {
|
|
28
29
|
pollingIntervalMs: number;
|
|
30
|
+
provingDelayMs?: number;
|
|
29
31
|
}, telemetry?: TelemetryClient);
|
|
30
32
|
static create(l2BlockSource: L2BlockSource, options: {
|
|
31
33
|
pollingIntervalMs: number;
|
|
34
|
+
provingDelayMs?: number;
|
|
32
35
|
}, telemetry?: TelemetryClient): Promise<EpochMonitor>;
|
|
33
36
|
start(handler: EpochMonitorHandler): void;
|
|
34
37
|
/** Exposed for testing */
|
|
@@ -37,4 +40,4 @@ export declare class EpochMonitor implements Traceable {
|
|
|
37
40
|
work(): Promise<void>;
|
|
38
41
|
private getEpochNumberToProve;
|
|
39
42
|
}
|
|
40
|
-
//# sourceMappingURL=
|
|
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":"
|
|
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"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
7
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
8
3
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
4
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
9
5
|
import { getEpochAtSlot } from '@aztec/stdlib/epoch-helpers';
|
|
10
|
-
import { getTelemetryClient
|
|
6
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
11
7
|
/**
|
|
12
8
|
* Fires an event when a new epoch ready to prove is detected.
|
|
13
9
|
*
|
|
@@ -34,6 +30,9 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
34
30
|
this.log = createLogger('prover-node:epoch-monitor');
|
|
35
31
|
this.tracer = telemetry.getTracer('EpochMonitor');
|
|
36
32
|
this.runningPromise = new RunningPromise(this.work.bind(this), this.log, this.options.pollingIntervalMs);
|
|
33
|
+
if (this.options.provingDelayMs) {
|
|
34
|
+
this.log.warn(`Prover node epoch monitor running with delay of ${this.options.provingDelayMs}ms`);
|
|
35
|
+
}
|
|
37
36
|
}
|
|
38
37
|
static async create(l2BlockSource, options, telemetry = getTelemetryClient()) {
|
|
39
38
|
const l1Constants = await l2BlockSource.getL1Constants();
|
|
@@ -55,7 +54,9 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
55
54
|
const { epochToProve, blockNumber, slotNumber } = await this.getEpochNumberToProve();
|
|
56
55
|
if (epochToProve === undefined) {
|
|
57
56
|
this.log.trace(`Next block to prove ${blockNumber} not yet mined`, {
|
|
58
|
-
|
|
57
|
+
epochToProve,
|
|
58
|
+
blockNumber,
|
|
59
|
+
slotNumber
|
|
59
60
|
});
|
|
60
61
|
return;
|
|
61
62
|
}
|
|
@@ -76,13 +77,18 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
76
77
|
});
|
|
77
78
|
return;
|
|
78
79
|
}
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
if (this.options.provingDelayMs) {
|
|
81
|
+
this.log.warn(`Waiting ${this.options.provingDelayMs}ms before proving epoch ${epochToProve}`);
|
|
82
|
+
await sleep(this.options.provingDelayMs);
|
|
83
|
+
}
|
|
84
|
+
this.log.verbose(`Epoch ${epochToProve} is ready to be proven`);
|
|
85
|
+
if (await this.handler?.handleEpochReadyToProve(epochToProve)) {
|
|
86
|
+
this.latestEpochNumber = epochToProve;
|
|
87
|
+
}
|
|
82
88
|
}
|
|
83
89
|
async getEpochNumberToProve() {
|
|
84
90
|
const lastBlockProven = await this.l2BlockSource.getProvenBlockNumber();
|
|
85
|
-
const firstBlockToProve = lastBlockProven + 1;
|
|
91
|
+
const firstBlockToProve = BlockNumber(lastBlockProven + 1);
|
|
86
92
|
const firstBlockHeaderToProve = await this.l2BlockSource.getBlockHeader(firstBlockToProve);
|
|
87
93
|
if (!firstBlockHeaderToProve) {
|
|
88
94
|
return {
|
|
@@ -99,6 +105,3 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
99
105
|
};
|
|
100
106
|
}
|
|
101
107
|
}
|
|
102
|
-
_ts_decorate([
|
|
103
|
-
trackSpan('EpochMonitor.work')
|
|
104
|
-
], EpochMonitor.prototype, "work", null);
|
package/dest/monitors/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './epoch-monitor.js';
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb25pdG9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDIn0=
|
|
@@ -1,41 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { BatchedBlob } from '@aztec/blob-lib';
|
|
2
|
+
import { MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
|
|
3
|
+
import type { RollupContract, ViemCommitteeAttestation } from '@aztec/ethereum/contracts';
|
|
4
|
+
import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
5
|
+
import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
6
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
7
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
8
|
+
import { type Logger, type LoggerBindings } from '@aztec/foundation/log';
|
|
9
|
+
import type { Tuple } from '@aztec/foundation/serialize';
|
|
6
10
|
import type { PublisherConfig, TxSenderConfig } from '@aztec/sequencer-client';
|
|
7
11
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
8
12
|
import type { FeeRecipient, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
9
13
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
10
|
-
/**
|
|
11
|
-
* Stats for a sent transaction.
|
|
12
|
-
*/
|
|
13
14
|
/** Arguments to the submitEpochProof method of the rollup contract */
|
|
14
15
|
export type L1SubmitEpochProofArgs = {
|
|
15
16
|
epochSize: number;
|
|
16
17
|
previousArchive: Fr;
|
|
17
18
|
endArchive: Fr;
|
|
18
|
-
previousBlockHash: Fr;
|
|
19
|
-
endBlockHash: Fr;
|
|
20
19
|
endTimestamp: Fr;
|
|
21
20
|
outHash: Fr;
|
|
22
21
|
proverId: Fr;
|
|
23
|
-
fees: Tuple<FeeRecipient, typeof
|
|
22
|
+
fees: Tuple<FeeRecipient, typeof MAX_CHECKPOINTS_PER_EPOCH>;
|
|
24
23
|
proof: Proof;
|
|
25
24
|
};
|
|
26
25
|
export declare class ProverNodePublisher {
|
|
27
|
-
private interruptibleSleep;
|
|
28
|
-
private sleepTimeMs;
|
|
29
26
|
private interrupted;
|
|
30
27
|
private metrics;
|
|
31
|
-
protected log:
|
|
28
|
+
protected log: Logger;
|
|
32
29
|
protected rollupContract: RollupContract;
|
|
33
30
|
readonly l1TxUtils: L1TxUtils;
|
|
34
31
|
constructor(config: TxSenderConfig & PublisherConfig, deps: {
|
|
35
32
|
rollupContract: RollupContract;
|
|
36
33
|
l1TxUtils: L1TxUtils;
|
|
37
34
|
telemetry?: TelemetryClient;
|
|
38
|
-
});
|
|
35
|
+
}, bindings?: LoggerBindings);
|
|
36
|
+
getRollupContract(): RollupContract;
|
|
39
37
|
/**
|
|
40
38
|
* Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
|
|
41
39
|
* Be warned, the call may return false even if the tx subsequently gets successfully mined.
|
|
@@ -47,15 +45,17 @@ export declare class ProverNodePublisher {
|
|
|
47
45
|
restart(): void;
|
|
48
46
|
getSenderAddress(): EthAddress;
|
|
49
47
|
submitEpochProof(args: {
|
|
50
|
-
epochNumber:
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
epochNumber: EpochNumber;
|
|
49
|
+
fromCheckpoint: CheckpointNumber;
|
|
50
|
+
toCheckpoint: CheckpointNumber;
|
|
53
51
|
publicInputs: RootRollupPublicInputs;
|
|
54
52
|
proof: Proof;
|
|
53
|
+
batchedBlobInputs: BatchedBlob;
|
|
54
|
+
attestations: ViemCommitteeAttestation[];
|
|
55
55
|
}): Promise<boolean>;
|
|
56
56
|
private validateEpochProofSubmission;
|
|
57
57
|
private sendSubmitEpochProofTx;
|
|
58
|
+
private getEpochProofPublicInputsArgs;
|
|
58
59
|
private getSubmitEpochProofArgs;
|
|
59
|
-
protected sleepOrInterrupted(): Promise<void>;
|
|
60
60
|
}
|
|
61
|
-
//# sourceMappingURL=
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUtcHVibGlzaGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUtcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0saUJBQWlCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3pELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFPbkYsc0VBQXNFO0FBQ3RFLE1BQU0sTUFBTSxzQkFBc0IsR0FBRztJQUNuQyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGVBQWUsRUFBRSxFQUFFLENBQUM7SUFDcEIsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUNmLFlBQVksRUFBRSxFQUFFLENBQUM7SUFDakIsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNaLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDYixJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVksRUFBRSxPQUFPLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsS0FBSyxFQUFFLEtBQUssQ0FBQztDQUNkLENBQUM7QUFFRixxQkFBYSxtQkFBbUI7SUFDOUIsT0FBTyxDQUFDLFdBQVcsQ0FBUztJQUM1QixPQUFPLENBQUMsT0FBTyxDQUE2QjtJQUU1QyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUV0QixTQUFTLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztJQUV6QyxTQUFnQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBRXJDLFlBQ0UsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEVBQ3hDLElBQUksRUFBRTtRQUNKLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFDL0IsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNyQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7S0FDN0IsRUFDRCxRQUFRLENBQUMsRUFBRSxjQUFjLEVBUzFCO0lBRU0saUJBQWlCLG1CQUV2QjtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxTQUdmO0lBRUQsd0RBQXdEO0lBQ2pELE9BQU8sU0FHYjtJQUVNLGdCQUFnQixlQUV0QjtJQUVZLGdCQUFnQixDQUFDLElBQUksRUFBRTtRQUNsQyxXQUFXLEVBQUUsV0FBVyxDQUFDO1FBQ3pCLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQztRQUNqQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7UUFDL0IsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDYixpQkFBaUIsRUFBRSxXQUFXLENBQUM7UUFDL0IsWUFBWSxFQUFFLHdCQUF3QixFQUFFLENBQUM7S0FDMUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBaURuQjtZQUVhLDRCQUE0QjtZQStENUIsc0JBQXNCO0lBNENwQyxPQUFPLENBQUMsNkJBQTZCO0lBMEJyQyxPQUFPLENBQUMsdUJBQXVCO0NBdUJoQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;YA+D5B,sBAAsB;IA4CpC,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,uBAAuB;CAuBhC"}
|