@aztec/prover-node 0.0.1-commit.fce3e4f → 0.0.1-commit.fffb133c
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 +1 -1
- package/dest/actions/rerun-epoch-proving-job.d.ts +3 -2
- package/dest/actions/rerun-epoch-proving-job.d.ts.map +1 -1
- package/dest/actions/rerun-epoch-proving-job.js +3 -1
- package/dest/config.d.ts +5 -4
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +4 -3
- package/dest/factory.d.ts +2 -4
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +20 -15
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/job/epoch-proving-job-data.d.ts +7 -6
- package/dest/job/epoch-proving-job-data.d.ts.map +1 -1
- package/dest/job/epoch-proving-job-data.js +24 -18
- package/dest/job/epoch-proving-job.d.ts +3 -3
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +478 -99
- package/dest/metrics.d.ts +4 -3
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +21 -97
- 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 +3 -11
- package/dest/prover-node-publisher.d.ts +7 -6
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +41 -36
- package/dest/prover-node.d.ts +4 -4
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +427 -45
- package/dest/prover-publisher-factory.d.ts +4 -2
- package/dest/prover-publisher-factory.d.ts.map +1 -1
- package/package.json +25 -25
- package/src/actions/rerun-epoch-proving-job.ts +3 -2
- package/src/bin/run-failed-epoch.ts +1 -1
- package/src/config.ts +6 -4
- package/src/factory.ts +28 -17
- package/src/index.ts +1 -0
- package/src/job/epoch-proving-job-data.ts +28 -23
- package/src/job/epoch-proving-job.ts +102 -97
- package/src/metrics.ts +27 -82
- package/src/monitors/epoch-monitor.ts +3 -10
- package/src/prover-node-publisher.ts +60 -50
- package/src/prover-node.ts +36 -32
- package/src/prover-publisher-factory.ts +3 -1
package/dest/metrics.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RollupContract } from '@aztec/ethereum';
|
|
1
|
+
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
2
2
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
3
|
import type { L1PublishProofStats } from '@aztec/stdlib/stats';
|
|
4
4
|
import { type Gauge, type Histogram, type Meter, type TelemetryClient, type Tracer, type UpDownCounter } from '@aztec/telemetry-client';
|
|
@@ -8,10 +8,11 @@ export declare class ProverNodeJobMetrics {
|
|
|
8
8
|
private logger;
|
|
9
9
|
proverEpochExecutionDuration: Histogram;
|
|
10
10
|
provingJobDuration: Histogram;
|
|
11
|
+
provingJobCheckpoints: Gauge;
|
|
11
12
|
provingJobBlocks: Gauge;
|
|
12
13
|
provingJobTransactions: Gauge;
|
|
13
14
|
constructor(meter: Meter, tracer: Tracer, logger?: import("@aztec/foundation/log").Logger);
|
|
14
|
-
recordProvingJob(executionTimeMs: number, totalTimeMs: number, numBlocks: number, numTxs: number): void;
|
|
15
|
+
recordProvingJob(executionTimeMs: number, totalTimeMs: number, numCheckpoints: number, numBlocks: number, numTxs: number): void;
|
|
15
16
|
}
|
|
16
17
|
export declare class ProverNodeRewardsMetrics {
|
|
17
18
|
private meter;
|
|
@@ -47,4 +48,4 @@ export declare class ProverNodePublisherMetrics {
|
|
|
47
48
|
recordSenderBalance(wei: bigint, senderAddress: string): void;
|
|
48
49
|
private recordTx;
|
|
49
50
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUdMLEtBQUssS0FBSyxFQUNWLEtBQUssU0FBUyxFQUNkLEtBQUssS0FBSyxFQUdWLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFDWCxLQUFLLGFBQWEsRUFDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUlqQyxxQkFBYSxvQkFBb0I7SUFRN0IsT0FBTyxDQUFDLEtBQUs7YUFDRyxNQUFNLEVBQUUsTUFBTTtJQUM5QixPQUFPLENBQUMsTUFBTTtJQVRoQiw0QkFBNEIsRUFBRSxTQUFTLENBQUM7SUFDeEMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDO0lBQzlCLHFCQUFxQixFQUFFLEtBQUssQ0FBQztJQUM3QixnQkFBZ0IsRUFBRSxLQUFLLENBQUM7SUFDeEIsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO0lBRTlCLFlBQ1UsS0FBSyxFQUFFLEtBQUssRUFDSixNQUFNLEVBQUUsTUFBTSxFQUN0QixNQUFNLHlDQUFnRCxFQU8vRDtJQUVNLGdCQUFnQixDQUNyQixlQUFlLEVBQUUsTUFBTSxFQUN2QixXQUFXLEVBQUUsTUFBTSxFQUNuQixjQUFjLEVBQUUsTUFBTSxFQUN0QixTQUFTLEVBQUUsTUFBTSxFQUNqQixNQUFNLEVBQUUsTUFBTSxRQU9mO0NBQ0Y7QUFFRCxxQkFBYSx3QkFBd0I7SUFPakMsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxNQUFNO0lBVGhCLE9BQU8sQ0FBQyxPQUFPLENBQWtCO0lBQ2pDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBZ0I7SUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBTztJQUN4QixPQUFPLENBQUMscUJBQXFCLENBQUs7SUFFbEMsWUFDVSxLQUFLLEVBQUUsS0FBSyxFQUNaLFFBQVEsRUFBRSxVQUFVLEVBQ3BCLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLE1BQU0seUNBQWdELEVBSy9EO0lBRVksS0FBSyxrQkFJakI7SUFFTSxJQUFJLFNBRVY7SUFFRCxPQUFPLENBQUMsT0FBTyxDQXdCYjtDQUNIO0FBRUQscUJBQWEsMEJBQTBCO2FBZW5CLE1BQU0sRUFBRSxlQUFlO0lBRXZDLE9BQU8sQ0FBQyxNQUFNO0lBaEJoQixRQUFRLEVBQUUsU0FBUyxDQUFDO0lBQ3BCLE9BQU8sRUFBRSxhQUFhLENBQUM7SUFDdkIsVUFBVSxFQUFFLFNBQVMsQ0FBQztJQUN0QixLQUFLLEVBQUUsU0FBUyxDQUFDO0lBQ2pCLGNBQWMsRUFBRSxTQUFTLENBQUM7SUFDMUIsYUFBYSxFQUFFLFNBQVMsQ0FBQztJQUN6QixpQkFBaUIsRUFBRSxTQUFTLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO0lBQzdCLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFFdEIsT0FBTyxDQUFDLGFBQWEsQ0FBUTtJQUM3QixPQUFPLENBQUMsS0FBSyxDQUFRO0lBRXJCLFlBQ2tCLE1BQU0sRUFBRSxlQUFlLEVBQ3ZDLElBQUksU0FBZSxFQUNYLE1BQU0seUNBQWdELEVBdUIvRDtJQUVELGNBQWMsU0FLYjtJQUVELGlCQUFpQixDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixRQUUvRDtJQUVNLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sUUFLNUQ7SUFFRCxPQUFPLENBQUMsUUFBUTtDQXVDakIifQ==
|
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,
|
|
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,EACnB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,KAAK;aACG,MAAM,EAAE,MAAM;IAC9B,OAAO,CAAC,MAAM;IAThB,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,YACU,KAAK,EAAE,KAAK,EACJ,MAAM,EAAE,MAAM,EACtB,MAAM,yCAAgD,EAO/D;IAEM,gBAAgB,CACrB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,QAOf;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,EAuB/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,5 +1,5 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { Attributes, Metrics
|
|
2
|
+
import { Attributes, Metrics } from '@aztec/telemetry-client';
|
|
3
3
|
import { formatEther, formatUnits } from 'viem';
|
|
4
4
|
export class ProverNodeJobMetrics {
|
|
5
5
|
meter;
|
|
@@ -7,34 +7,23 @@ export class ProverNodeJobMetrics {
|
|
|
7
7
|
logger;
|
|
8
8
|
proverEpochExecutionDuration;
|
|
9
9
|
provingJobDuration;
|
|
10
|
+
provingJobCheckpoints;
|
|
10
11
|
provingJobBlocks;
|
|
11
12
|
provingJobTransactions;
|
|
12
13
|
constructor(meter, tracer, logger = createLogger('prover-node:publisher:metrics')){
|
|
13
14
|
this.meter = meter;
|
|
14
15
|
this.tracer = tracer;
|
|
15
16
|
this.logger = logger;
|
|
16
|
-
this.proverEpochExecutionDuration = this.meter.createHistogram(Metrics.PROVER_NODE_EXECUTION_DURATION
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.provingJobDuration = this.meter.createHistogram(Metrics.PROVER_NODE_JOB_DURATION, {
|
|
22
|
-
description: 'Duration of proving job',
|
|
23
|
-
unit: 's',
|
|
24
|
-
valueType: ValueType.DOUBLE
|
|
25
|
-
});
|
|
26
|
-
this.provingJobBlocks = this.meter.createGauge(Metrics.PROVER_NODE_JOB_BLOCKS, {
|
|
27
|
-
description: 'Number of blocks in a proven epoch',
|
|
28
|
-
valueType: ValueType.INT
|
|
29
|
-
});
|
|
30
|
-
this.provingJobTransactions = this.meter.createGauge(Metrics.PROVER_NODE_JOB_TRANSACTIONS, {
|
|
31
|
-
description: 'Number of transactions in a proven epoch',
|
|
32
|
-
valueType: ValueType.INT
|
|
33
|
-
});
|
|
17
|
+
this.proverEpochExecutionDuration = this.meter.createHistogram(Metrics.PROVER_NODE_EXECUTION_DURATION);
|
|
18
|
+
this.provingJobDuration = this.meter.createHistogram(Metrics.PROVER_NODE_JOB_DURATION);
|
|
19
|
+
this.provingJobCheckpoints = this.meter.createGauge(Metrics.PROVER_NODE_JOB_CHECKPOINTS);
|
|
20
|
+
this.provingJobBlocks = this.meter.createGauge(Metrics.PROVER_NODE_JOB_BLOCKS);
|
|
21
|
+
this.provingJobTransactions = this.meter.createGauge(Metrics.PROVER_NODE_JOB_TRANSACTIONS);
|
|
34
22
|
}
|
|
35
|
-
recordProvingJob(executionTimeMs, totalTimeMs, numBlocks, numTxs) {
|
|
23
|
+
recordProvingJob(executionTimeMs, totalTimeMs, numCheckpoints, numBlocks, numTxs) {
|
|
36
24
|
this.proverEpochExecutionDuration.record(Math.ceil(executionTimeMs));
|
|
37
25
|
this.provingJobDuration.record(totalTimeMs / 1000);
|
|
26
|
+
this.provingJobCheckpoints.record(Math.floor(numCheckpoints));
|
|
38
27
|
this.provingJobBlocks.record(Math.floor(numBlocks));
|
|
39
28
|
this.provingJobTransactions.record(Math.floor(numTxs));
|
|
40
29
|
}
|
|
@@ -76,14 +65,8 @@ export class ProverNodeRewardsMetrics {
|
|
|
76
65
|
}
|
|
77
66
|
}
|
|
78
67
|
};
|
|
79
|
-
this.rewards = this.meter.createObservableGauge(Metrics.PROVER_NODE_REWARDS_PER_EPOCH
|
|
80
|
-
|
|
81
|
-
description: 'The rewards earned'
|
|
82
|
-
});
|
|
83
|
-
this.accumulatedRewards = this.meter.createUpDownCounter(Metrics.PROVER_NODE_REWARDS_TOTAL, {
|
|
84
|
-
valueType: ValueType.DOUBLE,
|
|
85
|
-
description: 'The rewards earned (total)'
|
|
86
|
-
});
|
|
68
|
+
this.rewards = this.meter.createObservableGauge(Metrics.PROVER_NODE_REWARDS_PER_EPOCH);
|
|
69
|
+
this.accumulatedRewards = this.meter.createUpDownCounter(Metrics.PROVER_NODE_REWARDS_TOTAL);
|
|
87
70
|
}
|
|
88
71
|
async start() {
|
|
89
72
|
const proofSubmissionEpochs = await this.rollup.getProofSubmissionEpochs();
|
|
@@ -117,75 +100,16 @@ export class ProverNodePublisherMetrics {
|
|
|
117
100
|
this.client = client;
|
|
118
101
|
this.logger = logger;
|
|
119
102
|
this.meter = client.getMeter(name);
|
|
120
|
-
this.gasPrice = this.meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
this.
|
|
129
|
-
|
|
130
|
-
unit: 'ms',
|
|
131
|
-
valueType: ValueType.INT
|
|
132
|
-
});
|
|
133
|
-
this.txGas = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS, {
|
|
134
|
-
description: 'The gas consumed by transactions',
|
|
135
|
-
unit: 'gas',
|
|
136
|
-
valueType: ValueType.INT
|
|
137
|
-
});
|
|
138
|
-
this.txCalldataSize = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE, {
|
|
139
|
-
description: 'The size of the calldata in transactions',
|
|
140
|
-
unit: 'By',
|
|
141
|
-
valueType: ValueType.INT
|
|
142
|
-
});
|
|
143
|
-
this.txCalldataGas = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS, {
|
|
144
|
-
description: 'The gas consumed by the calldata in transactions',
|
|
145
|
-
unit: 'gas',
|
|
146
|
-
valueType: ValueType.INT
|
|
147
|
-
});
|
|
148
|
-
this.txBlobDataGasUsed = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED, {
|
|
149
|
-
description: 'The amount of blob gas used in transactions',
|
|
150
|
-
unit: 'gas',
|
|
151
|
-
valueType: ValueType.INT
|
|
152
|
-
});
|
|
153
|
-
this.txBlobDataGasCost = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST, {
|
|
154
|
-
description: 'The gas cost of blobs in transactions',
|
|
155
|
-
unit: 'gwei',
|
|
156
|
-
valueType: ValueType.INT
|
|
157
|
-
});
|
|
158
|
-
this.txTotalFee = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE, {
|
|
159
|
-
description: 'How much L1 tx costs',
|
|
160
|
-
unit: 'gwei',
|
|
161
|
-
valueType: ValueType.DOUBLE,
|
|
162
|
-
advice: {
|
|
163
|
-
explicitBucketBoundaries: [
|
|
164
|
-
0.001,
|
|
165
|
-
0.002,
|
|
166
|
-
0.004,
|
|
167
|
-
0.008,
|
|
168
|
-
0.01,
|
|
169
|
-
0.02,
|
|
170
|
-
0.04,
|
|
171
|
-
0.08,
|
|
172
|
-
0.1,
|
|
173
|
-
0.2,
|
|
174
|
-
0.4,
|
|
175
|
-
0.8,
|
|
176
|
-
1,
|
|
177
|
-
1.2,
|
|
178
|
-
1.4,
|
|
179
|
-
1.8,
|
|
180
|
-
2
|
|
181
|
-
]
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
this.senderBalance = this.meter.createGauge(Metrics.L1_PUBLISHER_BALANCE, {
|
|
185
|
-
unit: 'eth',
|
|
186
|
-
description: 'The balance of the sender address',
|
|
187
|
-
valueType: ValueType.DOUBLE
|
|
188
|
-
});
|
|
103
|
+
this.gasPrice = this.meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE);
|
|
104
|
+
this.txCount = this.meter.createUpDownCounter(Metrics.L1_PUBLISHER_TX_COUNT);
|
|
105
|
+
this.txDuration = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION);
|
|
106
|
+
this.txGas = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS);
|
|
107
|
+
this.txCalldataSize = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE);
|
|
108
|
+
this.txCalldataGas = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS);
|
|
109
|
+
this.txBlobDataGasUsed = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED);
|
|
110
|
+
this.txBlobDataGasCost = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST);
|
|
111
|
+
this.txTotalFee = this.meter.createHistogram(Metrics.L1_PUBLISHER_TX_TOTAL_FEE);
|
|
112
|
+
this.senderBalance = this.meter.createGauge(Metrics.L1_PUBLISHER_BALANCE);
|
|
189
113
|
}
|
|
190
114
|
recordFailedTx() {
|
|
191
115
|
this.txCount.add(1, {
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtbW9uaXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbml0b3JzL2Vwb2NoLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTNFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVoSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQ3JFO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILHFCQUFhLFlBQWEsWUFBVyxTQUFTO0lBUzFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYTtJQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDNUIsT0FBTyxDQUFDLE9BQU87SUFWakIsT0FBTyxDQUFDLGNBQWMsQ0FBaUI7SUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBNkM7SUFDeEQsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixPQUFPLENBQUMsT0FBTyxDQUFrQztJQUNqRCxPQUFPLENBQUMsaUJBQWlCLENBQTBCO0lBRW5ELFlBQ21CLGFBQWEsRUFBRSxhQUFhLEVBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLEVBQzlELE9BQU8sRUFBRTtRQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQ3ZFLFNBQVMsR0FBRSxlQUFzQyxFQU9sRDtJQUVELE9BQW9CLE1BQU0sQ0FDeEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsT0FBTyxFQUFFO1FBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFDL0QsU0FBUyxHQUFFLGVBQXNDLEdBQ2hELE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FHdkI7SUFFTSxLQUFLLENBQUMsT0FBTyxFQUFFLG1CQUFtQixRQUl4QztJQUVELDBCQUEwQjtJQUNuQixVQUFVLENBQUMsT0FBTyxFQUFFLG1CQUFtQixRQUU3QztJQUVZLElBQUksa0JBR2hCO0lBRVksSUFBSSxrQkEyQmhCO1lBRWEscUJBQXFCO0NBWXBDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-monitor.d.ts","sourceRoot":"","sources":["../../src/monitors/epoch-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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,kBA2BhB;YAEa,qBAAqB;CAYpC"}
|
|
@@ -1,14 +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';
|
|
9
4
|
import { sleep } from '@aztec/foundation/sleep';
|
|
10
5
|
import { getEpochAtSlot } from '@aztec/stdlib/epoch-helpers';
|
|
11
|
-
import { getTelemetryClient
|
|
6
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
12
7
|
/**
|
|
13
8
|
* Fires an event when a new epoch ready to prove is detected.
|
|
14
9
|
*
|
|
@@ -95,7 +90,7 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
95
90
|
}
|
|
96
91
|
async getEpochNumberToProve() {
|
|
97
92
|
const lastBlockProven = await this.l2BlockSource.getProvenBlockNumber();
|
|
98
|
-
const firstBlockToProve = lastBlockProven + 1;
|
|
93
|
+
const firstBlockToProve = BlockNumber(lastBlockProven + 1);
|
|
99
94
|
const firstBlockHeaderToProve = await this.l2BlockSource.getBlockHeader(firstBlockToProve);
|
|
100
95
|
if (!firstBlockHeaderToProve) {
|
|
101
96
|
return {
|
|
@@ -112,6 +107,3 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
112
107
|
};
|
|
113
108
|
}
|
|
114
109
|
}
|
|
115
|
-
_ts_decorate([
|
|
116
|
-
trackSpan('EpochMonitor.work')
|
|
117
|
-
], EpochMonitor.prototype, "work", null);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BatchedBlob } from '@aztec/blob-lib';
|
|
2
2
|
import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
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';
|
|
5
7
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
7
8
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
8
9
|
import type { PublisherConfig, TxSenderConfig } from '@aztec/sequencer-client';
|
|
9
10
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
@@ -44,8 +45,8 @@ export declare class ProverNodePublisher {
|
|
|
44
45
|
getSenderAddress(): EthAddress;
|
|
45
46
|
submitEpochProof(args: {
|
|
46
47
|
epochNumber: EpochNumber;
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
fromCheckpoint: CheckpointNumber;
|
|
49
|
+
toCheckpoint: CheckpointNumber;
|
|
49
50
|
publicInputs: RootRollupPublicInputs;
|
|
50
51
|
proof: Proof;
|
|
51
52
|
batchedBlobInputs: BatchedBlob;
|
|
@@ -56,4 +57,4 @@ export declare class ProverNodePublisher {
|
|
|
56
57
|
private getEpochProofPublicInputsArgs;
|
|
57
58
|
private getSubmitEpochProofArgs;
|
|
58
59
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUtcHVibGlzaGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUtcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0saUJBQWlCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9FLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQU9uRixzRUFBc0U7QUFDdEUsTUFBTSxNQUFNLHNCQUFzQixHQUFHO0lBQ25DLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxFQUFFLEVBQUUsQ0FBQztJQUNwQixVQUFVLEVBQUUsRUFBRSxDQUFDO0lBQ2YsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUNqQixPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ1osUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNiLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sd0JBQXdCLENBQUMsQ0FBQztJQUMzRCxLQUFLLEVBQUUsS0FBSyxDQUFDO0NBQ2QsQ0FBQztBQUVGLHFCQUFhLG1CQUFtQjtJQUM5QixPQUFPLENBQUMsV0FBVyxDQUFTO0lBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQTZCO0lBRTVDLFNBQVMsQ0FBQyxHQUFHLHlDQUErQztJQUU1RCxTQUFTLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztJQUV6QyxTQUFnQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBRXJDLFlBQ0UsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEVBQ3hDLElBQUksRUFBRTtRQUNKLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFDL0IsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNyQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7S0FDN0IsRUFRRjtJQUVNLGlCQUFpQixtQkFFdkI7SUFFRDs7Ozs7T0FLRztJQUNJLFNBQVMsU0FHZjtJQUVELHdEQUF3RDtJQUNqRCxPQUFPLFNBR2I7SUFFTSxnQkFBZ0IsZUFFdEI7SUFFWSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDbEMsV0FBVyxFQUFFLFdBQVcsQ0FBQztRQUN6QixjQUFjLEVBQUUsZ0JBQWdCLENBQUM7UUFDakMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO1FBQy9CLFlBQVksRUFBRSxzQkFBc0IsQ0FBQztRQUNyQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ2IsaUJBQWlCLEVBQUUsV0FBVyxDQUFDO1FBQy9CLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0tBQzFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWlEbkI7WUFFYSw0QkFBNEI7WUErRDVCLHNCQUFzQjtJQTRDcEMsT0FBTyxDQUFDLDZCQUE2QjtJQTBCckMsT0FBTyxDQUFDLHVCQUF1QjtDQXVCaEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA8B,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,
|
|
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,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,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;AAE3D,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,wBAAwB,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,yCAA+C;IAE5D,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,EAQF;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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getEthBlobEvaluationInputs } from '@aztec/blob-lib';
|
|
2
2
|
import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
|
|
3
3
|
import { makeTuple } from '@aztec/foundation/array';
|
|
4
|
+
import { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
4
5
|
import { areArraysEqual } from '@aztec/foundation/collection';
|
|
5
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
7
7
|
import { createLogger } from '@aztec/foundation/log';
|
|
8
8
|
import { Timer } from '@aztec/foundation/timer';
|
|
9
9
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
@@ -44,11 +44,11 @@ export class ProverNodePublisher {
|
|
|
44
44
|
return this.l1TxUtils.getSenderAddress();
|
|
45
45
|
}
|
|
46
46
|
async submitEpochProof(args) {
|
|
47
|
-
const { epochNumber,
|
|
47
|
+
const { epochNumber, fromCheckpoint, toCheckpoint } = args;
|
|
48
48
|
const ctx = {
|
|
49
49
|
epochNumber,
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
fromCheckpoint,
|
|
51
|
+
toCheckpoint
|
|
52
52
|
};
|
|
53
53
|
if (!this.interrupted) {
|
|
54
54
|
const timer = new Timer();
|
|
@@ -56,6 +56,7 @@ export class ProverNodePublisher {
|
|
|
56
56
|
await this.validateEpochProofSubmission(args);
|
|
57
57
|
const txReceipt = await this.sendSubmitEpochProofTx(args);
|
|
58
58
|
if (!txReceipt) {
|
|
59
|
+
this.log.error(`Failed to mine submitEpochProof tx`, undefined, ctx);
|
|
59
60
|
return false;
|
|
60
61
|
}
|
|
61
62
|
try {
|
|
@@ -85,32 +86,32 @@ export class ProverNodePublisher {
|
|
|
85
86
|
return true;
|
|
86
87
|
}
|
|
87
88
|
this.metrics.recordFailedTx();
|
|
88
|
-
this.log.error(`Rollup
|
|
89
|
+
this.log.error(`Rollup submitEpochProof tx reverted ${txReceipt.transactionHash}`, undefined, ctx);
|
|
89
90
|
}
|
|
90
|
-
this.log.verbose('
|
|
91
|
+
this.log.verbose('Checkpoint data syncing interrupted', ctx);
|
|
91
92
|
return false;
|
|
92
93
|
}
|
|
93
94
|
async validateEpochProofSubmission(args) {
|
|
94
|
-
const {
|
|
95
|
-
// Check that the
|
|
95
|
+
const { fromCheckpoint, toCheckpoint, publicInputs, batchedBlobInputs } = args;
|
|
96
|
+
// Check that the checkpoint numbers match the expected epoch to be proven
|
|
96
97
|
const { pending, proven } = await this.rollupContract.getTips();
|
|
97
|
-
// Don't publish if proven is beyond our
|
|
98
|
-
if (proven >
|
|
99
|
-
throw new Error(`Cannot submit epoch proof for ${
|
|
98
|
+
// Don't publish if proven is beyond our toCheckpoint, pointless to do so
|
|
99
|
+
if (proven > toCheckpoint) {
|
|
100
|
+
throw new Error(`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as proven checkpoint is ${proven}`);
|
|
100
101
|
}
|
|
101
|
-
//
|
|
102
|
-
if (
|
|
103
|
-
throw new Error(`Cannot submit epoch proof for ${
|
|
102
|
+
// toCheckpoint can't be greater than pending
|
|
103
|
+
if (toCheckpoint > pending) {
|
|
104
|
+
throw new Error(`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as pending checkpoint is ${pending}`);
|
|
104
105
|
}
|
|
105
|
-
// Check the archive for the immediate
|
|
106
|
-
const
|
|
107
|
-
if (publicInputs.previousArchiveRoot.
|
|
108
|
-
throw new Error(`Previous archive root mismatch: ${publicInputs.previousArchiveRoot.toString()} !== ${
|
|
106
|
+
// Check the archive for the immediate checkpoint before the epoch
|
|
107
|
+
const checkpointLog = await this.rollupContract.getCheckpoint(CheckpointNumber(fromCheckpoint - 1));
|
|
108
|
+
if (!publicInputs.previousArchiveRoot.equals(checkpointLog.archive)) {
|
|
109
|
+
throw new Error(`Previous archive root mismatch: ${publicInputs.previousArchiveRoot.toString()} !== ${checkpointLog.archive.toString()}`);
|
|
109
110
|
}
|
|
110
|
-
// Check the archive for the last
|
|
111
|
-
const
|
|
112
|
-
if (publicInputs.endArchiveRoot.
|
|
113
|
-
throw new Error(`End archive root mismatch: ${publicInputs.endArchiveRoot.toString()} !== ${
|
|
111
|
+
// Check the archive for the last checkpoint in the epoch
|
|
112
|
+
const endCheckpointLog = await this.rollupContract.getCheckpoint(toCheckpoint);
|
|
113
|
+
if (!publicInputs.endArchiveRoot.equals(endCheckpointLog.archive)) {
|
|
114
|
+
throw new Error(`End archive root mismatch: ${publicInputs.endArchiveRoot.toString()} !== ${endCheckpointLog.archive.toString()}`);
|
|
114
115
|
}
|
|
115
116
|
// Check the batched blob inputs from the root rollup against the batched blob computed in ts
|
|
116
117
|
const finalBlobAccumulator = batchedBlobInputs.toFinalBlobAccumulator();
|
|
@@ -122,7 +123,7 @@ export class ProverNodePublisher {
|
|
|
122
123
|
const argsPublicInputs = [
|
|
123
124
|
...publicInputs.toFields()
|
|
124
125
|
];
|
|
125
|
-
if (!areArraysEqual(rollupPublicInputs
|
|
126
|
+
if (!areArraysEqual(rollupPublicInputs, argsPublicInputs, (a, b)=>a.equals(b))) {
|
|
126
127
|
const fmt = (inputs)=>inputs.map((x)=>x.toString()).join(', ');
|
|
127
128
|
throw new Error(`Root rollup public inputs mismatch:\nRollup: ${fmt(rollupPublicInputs)}\nComputed:${fmt(argsPublicInputs)}`);
|
|
128
129
|
}
|
|
@@ -133,8 +134,8 @@ export class ProverNodePublisher {
|
|
|
133
134
|
];
|
|
134
135
|
this.log.info(`Submitting epoch proof to L1 rollup contract`, {
|
|
135
136
|
proofSize: args.proof.withoutPublicInputs().length,
|
|
136
|
-
|
|
137
|
-
|
|
137
|
+
fromCheckpoint: args.fromCheckpoint,
|
|
138
|
+
toCheckpoint: args.toCheckpoint
|
|
138
139
|
});
|
|
139
140
|
const data = encodeFunctionData({
|
|
140
141
|
abi: RollupAbi,
|
|
@@ -146,29 +147,33 @@ export class ProverNodePublisher {
|
|
|
146
147
|
to: this.rollupContract.address,
|
|
147
148
|
data
|
|
148
149
|
});
|
|
150
|
+
if (receipt.status !== 'success') {
|
|
151
|
+
const errorMsg = await this.l1TxUtils.tryGetErrorFromRevertedTx(data, {
|
|
152
|
+
args: [
|
|
153
|
+
...txArgs
|
|
154
|
+
],
|
|
155
|
+
functionName: 'submitEpochRootProof',
|
|
156
|
+
abi: RollupAbi,
|
|
157
|
+
address: this.rollupContract.address
|
|
158
|
+
}, /*blobInputs*/ undefined, /*stateOverride*/ []);
|
|
159
|
+
this.log.error(`Rollup submit epoch proof tx reverted with ${errorMsg ?? 'unknown error'}`);
|
|
160
|
+
return undefined;
|
|
161
|
+
}
|
|
149
162
|
return receipt;
|
|
150
163
|
} catch (err) {
|
|
151
164
|
this.log.error(`Rollup submit epoch proof failed`, err);
|
|
152
|
-
const errorMsg = await this.l1TxUtils.tryGetErrorFromRevertedTx(data, {
|
|
153
|
-
args: [
|
|
154
|
-
...txArgs
|
|
155
|
-
],
|
|
156
|
-
functionName: 'submitEpochRootProof',
|
|
157
|
-
abi: RollupAbi,
|
|
158
|
-
address: this.rollupContract.address
|
|
159
|
-
}, /*blobInputs*/ undefined, /*stateOverride*/ []);
|
|
160
|
-
this.log.error(`Rollup submit epoch proof tx reverted. ${errorMsg}`);
|
|
161
165
|
return undefined;
|
|
162
166
|
}
|
|
163
167
|
}
|
|
164
168
|
getEpochProofPublicInputsArgs(args) {
|
|
165
169
|
// Returns arguments for EpochProofLib.sol -> getEpochProofPublicInputs()
|
|
166
170
|
return [
|
|
167
|
-
BigInt(args.
|
|
168
|
-
BigInt(args.
|
|
171
|
+
BigInt(args.fromCheckpoint),
|
|
172
|
+
BigInt(args.toCheckpoint),
|
|
169
173
|
{
|
|
170
174
|
previousArchive: args.publicInputs.previousArchiveRoot.toString(),
|
|
171
175
|
endArchive: args.publicInputs.endArchiveRoot.toString(),
|
|
176
|
+
outHash: args.publicInputs.outHash.toString(),
|
|
172
177
|
proverId: EthAddress.fromField(args.publicInputs.constants.proverId).toString()
|
|
173
178
|
} /*_args*/ ,
|
|
174
179
|
makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, (i)=>i % 2 === 0 ? args.publicInputs.fees[i / 2].recipient.toField().toString() : args.publicInputs.fees[(i - 1) / 2].value.toString()),
|
package/dest/prover-node.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RollupContract } from '@aztec/ethereum';
|
|
1
|
+
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
2
2
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
4
4
|
import type { P2PClient } from '@aztec/p2p';
|
|
@@ -44,7 +44,7 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
44
44
|
readonly tracer: Tracer;
|
|
45
45
|
protected publisher: ProverNodePublisher | undefined;
|
|
46
46
|
constructor(prover: EpochProverManager, publisherFactory: ProverPublisherFactory, l2BlockSource: L2BlockSource & Partial<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, p2pClient: Pick<P2PClient<P2PClientType.Prover>, 'getTxProvider'> & Partial<Service>, epochsMonitor: EpochMonitor, rollupContract: RollupContract, l1Metrics: L1Metrics, config?: Partial<ProverNodeOptions>, telemetryClient?: TelemetryClient);
|
|
47
|
-
getProverId(): import("@aztec/
|
|
47
|
+
getProverId(): import("@aztec/foundation/eth-address").EthAddress;
|
|
48
48
|
getP2P(): Pick<P2PClient<P2PClientType.Prover>, "getTxProvider"> & Partial<Service>;
|
|
49
49
|
/**
|
|
50
50
|
* Handles an epoch being completed by starting a proof for it if there are no active jobs for it.
|
|
@@ -91,7 +91,7 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
91
91
|
private createProvingJob;
|
|
92
92
|
private getL1Constants;
|
|
93
93
|
private gatherEpochData;
|
|
94
|
-
private
|
|
94
|
+
private gatherCheckpoints;
|
|
95
95
|
private gatherTxs;
|
|
96
96
|
private gatherMessages;
|
|
97
97
|
private gatherPreviousBlockHeader;
|
|
@@ -104,4 +104,4 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
104
104
|
private validateConfig;
|
|
105
105
|
}
|
|
106
106
|
export {};
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92ZXItbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUV2QixLQUFLLGFBQWEsRUFDbEIsS0FBSyxPQUFPLEVBQ1osS0FBSyxvQkFBb0IsRUFDekIsS0FBSyxzQkFBc0IsRUFFNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFFTCxTQUFTLEVBQ1QsS0FBSyxlQUFlLEVBQ3BCLEtBQUssU0FBUyxFQUNkLEtBQUssTUFBTSxFQUdaLE1BQU0seUJBQXlCLENBQUM7QUFHakMsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxP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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
|