@aztec/prover-node 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1
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 +4 -4
- package/dest/actions/index.d.ts +1 -1
- package/dest/actions/rerun-epoch-proving-job.d.ts +2 -2
- package/dest/actions/upload-epoch-proof-failure.d.ts +1 -1
- package/dest/bin/run-failed-epoch.d.ts +1 -1
- package/dest/bin/run-failed-epoch.js +1 -1
- package/dest/config.d.ts +4 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +19 -14
- package/dest/factory.d.ts +2 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +18 -7
- package/dest/index.d.ts +1 -1
- package/dest/job/epoch-proving-job-data.d.ts +8 -6
- package/dest/job/epoch-proving-job-data.d.ts.map +1 -1
- package/dest/job/epoch-proving-job-data.js +25 -18
- package/dest/job/epoch-proving-job.d.ts +11 -16
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +107 -65
- package/dest/metrics.d.ts +4 -3
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +9 -3
- 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 +10 -1
- package/dest/monitors/index.d.ts +1 -1
- package/dest/prover-node-publisher.d.ts +9 -10
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +51 -52
- package/dest/prover-node.d.ts +8 -7
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +39 -32
- package/dest/prover-publisher-factory.d.ts +6 -2
- package/dest/prover-publisher-factory.d.ts.map +1 -1
- package/dest/prover-publisher-factory.js +6 -0
- package/dest/test/index.d.ts +1 -1
- package/dest/test/index.d.ts.map +1 -1
- package/package.json +26 -25
- package/src/bin/run-failed-epoch.ts +2 -2
- package/src/config.ts +30 -29
- package/src/factory.ts +22 -14
- package/src/job/epoch-proving-job-data.ts +31 -25
- package/src/job/epoch-proving-job.ts +138 -82
- package/src/metrics.ts +16 -4
- package/src/monitors/epoch-monitor.ts +15 -5
- package/src/prover-node-publisher.ts +73 -72
- package/src/prover-node.ts +51 -44
- package/src/prover-publisher-factory.ts +12 -1
|
@@ -4,15 +4,20 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
|
-
import { BatchedBlob, Blob } from '@aztec/blob-lib';
|
|
8
7
|
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
9
8
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
9
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
10
10
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
11
|
-
import { Fr } from '@aztec/foundation/
|
|
11
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
12
12
|
import { createLogger } from '@aztec/foundation/log';
|
|
13
13
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
14
14
|
import { Timer } from '@aztec/foundation/timer';
|
|
15
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
16
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
17
|
+
import { buildFinalBlobChallenges } from '@aztec/prover-client/helpers';
|
|
18
|
+
import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
|
|
15
19
|
import { EpochProvingJobTerminalState } from '@aztec/stdlib/interfaces/server';
|
|
20
|
+
import { CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
16
21
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
17
22
|
import { Attributes, trackSpan } from '@aztec/telemetry-client';
|
|
18
23
|
import * as crypto from 'node:crypto';
|
|
@@ -72,8 +77,8 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
72
77
|
get epochNumber() {
|
|
73
78
|
return this.data.epochNumber;
|
|
74
79
|
}
|
|
75
|
-
get
|
|
76
|
-
return this.data.
|
|
80
|
+
get checkpoints() {
|
|
81
|
+
return this.data.checkpoints;
|
|
77
82
|
}
|
|
78
83
|
get txs() {
|
|
79
84
|
return this.data.txs;
|
|
@@ -89,17 +94,18 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
89
94
|
await this.scheduleEpochCheck();
|
|
90
95
|
}
|
|
91
96
|
const attestations = this.attestations.map((attestation)=>attestation.toViem());
|
|
92
|
-
const epochNumber =
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
];
|
|
99
|
-
this.
|
|
97
|
+
const epochNumber = this.epochNumber;
|
|
98
|
+
const epochSizeCheckpoints = this.checkpoints.length;
|
|
99
|
+
const epochSizeBlocks = this.checkpoints.reduce((accum, checkpoint)=>accum + checkpoint.blocks.length, 0);
|
|
100
|
+
const epochSizeTxs = this.checkpoints.reduce((accum, checkpoint)=>accum + checkpoint.blocks.reduce((accumC, block)=>accumC + block.body.txEffects.length, 0), 0);
|
|
101
|
+
const fromCheckpoint = this.checkpoints[0].number;
|
|
102
|
+
const toCheckpoint = this.checkpoints.at(-1).number;
|
|
103
|
+
const fromBlock = this.checkpoints[0].blocks[0].number;
|
|
104
|
+
const toBlock = this.checkpoints.at(-1).blocks.at(-1).number;
|
|
105
|
+
this.log.info(`Starting epoch ${epochNumber} proving job with checkpoints ${fromCheckpoint} to ${toCheckpoint}`, {
|
|
100
106
|
fromBlock,
|
|
101
107
|
toBlock,
|
|
102
|
-
|
|
108
|
+
epochSizeTxs,
|
|
103
109
|
epochNumber,
|
|
104
110
|
uuid: this.uuid
|
|
105
111
|
});
|
|
@@ -108,42 +114,75 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
108
114
|
const { promise, resolve } = promiseWithResolvers();
|
|
109
115
|
this.runPromise = promise;
|
|
110
116
|
try {
|
|
111
|
-
const
|
|
112
|
-
const finalBlobBatchingChallenges = await
|
|
113
|
-
this.prover.startNewEpoch(epochNumber,
|
|
114
|
-
await this.prover.
|
|
115
|
-
|
|
117
|
+
const blobFieldsPerCheckpoint = this.checkpoints.map((checkpoint)=>checkpoint.toBlobFields());
|
|
118
|
+
const finalBlobBatchingChallenges = await buildFinalBlobChallenges(blobFieldsPerCheckpoint);
|
|
119
|
+
this.prover.startNewEpoch(epochNumber, epochSizeCheckpoints, finalBlobBatchingChallenges);
|
|
120
|
+
await this.prover.startChonkVerifierCircuits(Array.from(this.txs.values()));
|
|
121
|
+
// Everything in the epoch should have the same chainId and version.
|
|
122
|
+
const { chainId, version } = this.checkpoints[0].blocks[0].header.globalVariables;
|
|
123
|
+
const previousBlockHeaders = this.gatherPreviousBlockHeaders();
|
|
124
|
+
await asyncPool(this.config.parallelBlockLimit ?? 32, this.checkpoints, async (checkpoint)=>{
|
|
116
125
|
this.checkState();
|
|
117
|
-
const
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
previousHeader: previousHeader.hash(),
|
|
129
|
-
uuid: this.uuid,
|
|
130
|
-
...globalVariables
|
|
126
|
+
const checkpointIndex = checkpoint.number - fromCheckpoint;
|
|
127
|
+
const checkpointConstants = CheckpointConstantData.from({
|
|
128
|
+
chainId,
|
|
129
|
+
version,
|
|
130
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
131
|
+
protocolContractsHash: protocolContractsHash,
|
|
132
|
+
proverId: this.prover.getProverId().toField(),
|
|
133
|
+
slotNumber: checkpoint.header.slotNumber,
|
|
134
|
+
coinbase: checkpoint.header.coinbase,
|
|
135
|
+
feeRecipient: checkpoint.header.feeRecipient,
|
|
136
|
+
gasFees: checkpoint.header.gasFees
|
|
131
137
|
});
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
await db.close();
|
|
140
|
-
this.log.verbose(`Processed all ${txs.length} txs for block ${block.number}`, {
|
|
141
|
-
blockNumber: block.number,
|
|
142
|
-
blockHash: (await block.hash()).toString(),
|
|
138
|
+
const previousHeader = previousBlockHeaders[checkpointIndex];
|
|
139
|
+
const l1ToL2Messages = this.getL1ToL2Messages(checkpoint);
|
|
140
|
+
this.log.verbose(`Starting processing checkpoint ${checkpoint.number}`, {
|
|
141
|
+
number: checkpoint.number,
|
|
142
|
+
checkpointHash: checkpoint.hash().toString(),
|
|
143
|
+
lastArchive: checkpoint.header.lastArchiveRoot,
|
|
144
|
+
previousHeader: previousHeader.hash(),
|
|
143
145
|
uuid: this.uuid
|
|
144
146
|
});
|
|
145
|
-
|
|
146
|
-
|
|
147
|
+
await this.prover.startNewCheckpoint(checkpointIndex, checkpointConstants, l1ToL2Messages, checkpoint.blocks.length, previousHeader);
|
|
148
|
+
for (const block of checkpoint.blocks){
|
|
149
|
+
const globalVariables = block.header.globalVariables;
|
|
150
|
+
const txs = this.getTxs(block);
|
|
151
|
+
this.log.verbose(`Starting processing block ${block.number}`, {
|
|
152
|
+
number: block.number,
|
|
153
|
+
blockHash: (await block.hash()).toString(),
|
|
154
|
+
lastArchive: block.header.lastArchive.root,
|
|
155
|
+
noteHashTreeRoot: block.header.state.partial.noteHashTree.root,
|
|
156
|
+
nullifierTreeRoot: block.header.state.partial.nullifierTree.root,
|
|
157
|
+
publicDataTreeRoot: block.header.state.partial.publicDataTree.root,
|
|
158
|
+
...globalVariables,
|
|
159
|
+
numTxs: txs.length
|
|
160
|
+
});
|
|
161
|
+
// Start block proving
|
|
162
|
+
await this.prover.startNewBlock(block.number, globalVariables.timestamp, txs.length);
|
|
163
|
+
// Process public fns
|
|
164
|
+
const db = await this.createFork(BlockNumber(block.number - 1), l1ToL2Messages);
|
|
165
|
+
const config = PublicSimulatorConfig.from({
|
|
166
|
+
proverId: this.prover.getProverId().toField(),
|
|
167
|
+
skipFeeEnforcement: false,
|
|
168
|
+
collectDebugLogs: false,
|
|
169
|
+
collectHints: true,
|
|
170
|
+
collectPublicInputs: true,
|
|
171
|
+
collectStatistics: false
|
|
172
|
+
});
|
|
173
|
+
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, config);
|
|
174
|
+
const processed = await this.processTxs(publicProcessor, txs);
|
|
175
|
+
await this.prover.addTxs(processed);
|
|
176
|
+
await db.close();
|
|
177
|
+
this.log.verbose(`Processed all ${txs.length} txs for block ${block.number}`, {
|
|
178
|
+
blockNumber: block.number,
|
|
179
|
+
blockHash: (await block.hash()).toString(),
|
|
180
|
+
uuid: this.uuid
|
|
181
|
+
});
|
|
182
|
+
// Mark block as completed to pad it
|
|
183
|
+
const expectedBlockHeader = block.header;
|
|
184
|
+
await this.prover.setBlockCompleted(block.number, expectedBlockHeader);
|
|
185
|
+
}
|
|
147
186
|
});
|
|
148
187
|
const executionTime = timer.ms();
|
|
149
188
|
this.progressState('awaiting-prover');
|
|
@@ -154,9 +193,15 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
154
193
|
duration: timer.ms()
|
|
155
194
|
});
|
|
156
195
|
this.progressState('publishing-proof');
|
|
196
|
+
if (this.config.skipSubmitProof) {
|
|
197
|
+
this.log.info(`Proof publishing is disabled. Dropping valid proof for epoch ${epochNumber} (checkpoints ${fromCheckpoint} to ${toCheckpoint})`);
|
|
198
|
+
this.state = 'completed';
|
|
199
|
+
this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeCheckpoints, epochSizeBlocks, epochSizeTxs);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
157
202
|
const success = await this.publisher.submitEpochProof({
|
|
158
|
-
|
|
159
|
-
|
|
203
|
+
fromCheckpoint,
|
|
204
|
+
toCheckpoint,
|
|
160
205
|
epochNumber,
|
|
161
206
|
publicInputs,
|
|
162
207
|
proof,
|
|
@@ -166,12 +211,12 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
166
211
|
if (!success) {
|
|
167
212
|
throw new Error('Failed to submit epoch proof to L1');
|
|
168
213
|
}
|
|
169
|
-
this.log.info(`Submitted proof for epoch ${epochNumber} (
|
|
214
|
+
this.log.info(`Submitted proof for epoch ${epochNumber} (checkpoints ${fromCheckpoint} to ${toCheckpoint})`, {
|
|
170
215
|
epochNumber,
|
|
171
216
|
uuid: this.uuid
|
|
172
217
|
});
|
|
173
218
|
this.state = 'completed';
|
|
174
|
-
this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeBlocks, epochSizeTxs);
|
|
219
|
+
this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeCheckpoints, epochSizeBlocks, epochSizeTxs);
|
|
175
220
|
} catch (err) {
|
|
176
221
|
if (err && err.name === 'HaltExecutionError') {
|
|
177
222
|
this.log.warn(`Halted execution of epoch ${epochNumber} prover job`, {
|
|
@@ -203,7 +248,7 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
203
248
|
const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 'Too many L1 to L2 messages');
|
|
204
249
|
this.log.verbose(`Creating fork at ${blockNumber} with ${l1ToL2Messages.length} L1 to L2 messages`, {
|
|
205
250
|
blockNumber,
|
|
206
|
-
l1ToL2Messages:
|
|
251
|
+
l1ToL2Messages: l1ToL2Messages.map((m)=>m.toString())
|
|
207
252
|
});
|
|
208
253
|
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
209
254
|
return db;
|
|
@@ -220,7 +265,6 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
220
265
|
async stop(state = 'stopped') {
|
|
221
266
|
this.state = state;
|
|
222
267
|
this.prover.cancel();
|
|
223
|
-
// TODO(palla/prover): Stop the publisher as well
|
|
224
268
|
if (this.runPromise) {
|
|
225
269
|
await this.runPromise;
|
|
226
270
|
}
|
|
@@ -262,8 +306,9 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
262
306
|
this.epochCheckPromise = new RunningPromise(async ()=>{
|
|
263
307
|
const blocks = await l2BlockSource.getBlockHeadersForEpoch(this.epochNumber);
|
|
264
308
|
const blockHashes = await Promise.all(blocks.map((block)=>block.hash()));
|
|
265
|
-
const
|
|
266
|
-
|
|
309
|
+
const thisBlocks = this.checkpoints.flatMap((checkpoint)=>checkpoint.blocks);
|
|
310
|
+
const thisBlockHashes = await Promise.all(thisBlocks.map((block)=>block.hash()));
|
|
311
|
+
if (blocks.length !== thisBlocks.length || !blockHashes.every((block, i)=>block.equals(thisBlockHashes[i]))) {
|
|
267
312
|
this.log.warn('Epoch blocks changed underfoot', {
|
|
268
313
|
uuid: this.uuid,
|
|
269
314
|
epochNumber: this.epochNumber,
|
|
@@ -275,21 +320,18 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
275
320
|
}, this.log, intervalMs).start();
|
|
276
321
|
this.log.verbose(`Scheduled epoch check for epoch ${this.epochNumber} every ${intervalMs}ms`);
|
|
277
322
|
}
|
|
278
|
-
/* Returns the header
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
return this.data.previousBlockHeader;
|
|
285
|
-
}
|
|
286
|
-
throw new Error(`Block header not found for block number ${blockNumber} (got ${this.blocks.map((b)=>b.number).join(', ')} and previous header ${this.data.previousBlockHeader.getBlockNumber()})`);
|
|
323
|
+
/* Returns the last block header in the previous checkpoint for all checkpoints in the epoch */ gatherPreviousBlockHeaders() {
|
|
324
|
+
const lastBlocks = this.checkpoints.map((checkpoint)=>checkpoint.blocks.at(-1));
|
|
325
|
+
return [
|
|
326
|
+
this.data.previousBlockHeader,
|
|
327
|
+
...lastBlocks.map((block)=>block.header).slice(0, -1)
|
|
328
|
+
];
|
|
287
329
|
}
|
|
288
330
|
getTxs(block) {
|
|
289
331
|
return block.body.txEffects.map((txEffect)=>this.txs.get(txEffect.txHash.toString()));
|
|
290
332
|
}
|
|
291
|
-
getL1ToL2Messages(
|
|
292
|
-
return this.data.l1ToL2Messages[
|
|
333
|
+
getL1ToL2Messages(checkpoint) {
|
|
334
|
+
return this.data.l1ToL2Messages[checkpoint.number];
|
|
293
335
|
}
|
|
294
336
|
async processTxs(publicProcessor, txs) {
|
|
295
337
|
const { deadline } = this;
|
|
@@ -309,7 +351,7 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
309
351
|
_ts_decorate([
|
|
310
352
|
trackSpan('EpochProvingJob.run', function() {
|
|
311
353
|
return {
|
|
312
|
-
[Attributes.EPOCH_NUMBER]:
|
|
354
|
+
[Attributes.EPOCH_NUMBER]: this.data.epochNumber
|
|
313
355
|
};
|
|
314
356
|
})
|
|
315
357
|
], EpochProvingJob.prototype, "run", null);
|
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=
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQWtCLE1BQU0scUJBQXFCLENBQUM7QUFDL0UsT0FBTyxFQUdMLEtBQUssS0FBSyxFQUNWLEtBQUssU0FBUyxFQUNkLEtBQUssS0FBSyxFQUdWLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFDWCxLQUFLLGFBQWEsRUFFbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUlqQyxxQkFBYSxvQkFBb0I7SUFRN0IsT0FBTyxDQUFDLEtBQUs7YUFDRyxNQUFNLEVBQUUsTUFBTTtJQUM5QixPQUFPLENBQUMsTUFBTTtJQVRoQiw0QkFBNEIsRUFBRSxTQUFTLENBQUM7SUFDeEMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDO0lBQzlCLHFCQUFxQixFQUFFLEtBQUssQ0FBQztJQUM3QixnQkFBZ0IsRUFBRSxLQUFLLENBQUM7SUFDeEIsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO0lBRTlCLFlBQ1UsS0FBSyxFQUFFLEtBQUssRUFDSixNQUFNLEVBQUUsTUFBTSxFQUN0QixNQUFNLHlDQUFnRCxFQXdCL0Q7SUFFTSxnQkFBZ0IsQ0FDckIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsV0FBVyxFQUFFLE1BQU0sRUFDbkIsY0FBYyxFQUFFLE1BQU0sRUFDdEIsU0FBUyxFQUFFLE1BQU0sRUFDakIsTUFBTSxFQUFFLE1BQU0sUUFPZjtDQUNGO0FBRUQscUJBQWEsd0JBQXdCO0lBT2pDLE9BQU8sQ0FBQyxLQUFLO0lBQ2IsT0FBTyxDQUFDLFFBQVE7SUFDaEIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsTUFBTTtJQVRoQixPQUFPLENBQUMsT0FBTyxDQUFrQjtJQUNqQyxPQUFPLENBQUMsa0JBQWtCLENBQWdCO0lBQzFDLE9BQU8sQ0FBQyxTQUFTLENBQU87SUFDeEIsT0FBTyxDQUFDLHFCQUFxQixDQUFLO0lBRWxDLFlBQ1UsS0FBSyxFQUFFLEtBQUssRUFDWixRQUFRLEVBQUUsVUFBVSxFQUNwQixNQUFNLEVBQUUsY0FBYyxFQUN0QixNQUFNLHlDQUFnRCxFQVcvRDtJQUVZLEtBQUssa0JBSWpCO0lBRU0sSUFBSSxTQUVWO0lBRUQsT0FBTyxDQUFDLE9BQU8sQ0F3QmI7Q0FDSDtBQUVELHFCQUFhLDBCQUEwQjthQWVuQixNQUFNLEVBQUUsZUFBZTtJQUV2QyxPQUFPLENBQUMsTUFBTTtJQWhCaEIsUUFBUSxFQUFFLFNBQVMsQ0FBQztJQUNwQixPQUFPLEVBQUUsYUFBYSxDQUFDO0lBQ3ZCLFVBQVUsRUFBRSxTQUFTLENBQUM7SUFDdEIsS0FBSyxFQUFFLFNBQVMsQ0FBQztJQUNqQixjQUFjLEVBQUUsU0FBUyxDQUFDO0lBQzFCLGFBQWEsRUFBRSxTQUFTLENBQUM7SUFDekIsaUJBQWlCLEVBQUUsU0FBUyxDQUFDO0lBQzdCLGlCQUFpQixFQUFFLFNBQVMsQ0FBQztJQUM3QixVQUFVLEVBQUUsU0FBUyxDQUFDO0lBRXRCLE9BQU8sQ0FBQyxhQUFhLENBQVE7SUFDN0IsT0FBTyxDQUFDLEtBQUssQ0FBUTtJQUVyQixZQUNrQixNQUFNLEVBQUUsZUFBZSxFQUN2QyxJQUFJLFNBQWUsRUFDWCxNQUFNLHlDQUFnRCxFQWtFL0Q7SUFFRCxjQUFjLFNBS2I7SUFFRCxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsUUFFL0Q7SUFFTSxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLFFBSzVEO0lBRUQsT0FBTyxDQUFDLFFBQVE7Q0F1Q2pCIn0=
|
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,EAEnB,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,EAwB/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,EAW/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,EAkE/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
|
@@ -7,6 +7,7 @@ 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')){
|
|
@@ -23,6 +24,10 @@ export class ProverNodeJobMetrics {
|
|
|
23
24
|
unit: 's',
|
|
24
25
|
valueType: ValueType.DOUBLE
|
|
25
26
|
});
|
|
27
|
+
this.provingJobCheckpoints = this.meter.createGauge(Metrics.PROVER_NODE_JOB_CHECKPOINTS, {
|
|
28
|
+
description: 'Number of checkpoints in a proven epoch',
|
|
29
|
+
valueType: ValueType.INT
|
|
30
|
+
});
|
|
26
31
|
this.provingJobBlocks = this.meter.createGauge(Metrics.PROVER_NODE_JOB_BLOCKS, {
|
|
27
32
|
description: 'Number of blocks in a proven epoch',
|
|
28
33
|
valueType: ValueType.INT
|
|
@@ -32,9 +37,10 @@ export class ProverNodeJobMetrics {
|
|
|
32
37
|
valueType: ValueType.INT
|
|
33
38
|
});
|
|
34
39
|
}
|
|
35
|
-
recordProvingJob(executionTimeMs, totalTimeMs, numBlocks, numTxs) {
|
|
40
|
+
recordProvingJob(executionTimeMs, totalTimeMs, numCheckpoints, numBlocks, numTxs) {
|
|
36
41
|
this.proverEpochExecutionDuration.record(Math.ceil(executionTimeMs));
|
|
37
42
|
this.provingJobDuration.record(totalTimeMs / 1000);
|
|
43
|
+
this.provingJobCheckpoints.record(Math.floor(numCheckpoints));
|
|
38
44
|
this.provingJobBlocks.record(Math.floor(numBlocks));
|
|
39
45
|
this.provingJobTransactions.record(Math.floor(numTxs));
|
|
40
46
|
}
|
|
@@ -56,12 +62,12 @@ export class ProverNodeRewardsMetrics {
|
|
|
56
62
|
this.prevEpoch = -1n;
|
|
57
63
|
this.proofSubmissionEpochs = 0;
|
|
58
64
|
this.observe = async (observer)=>{
|
|
59
|
-
const epoch = await this.rollup.
|
|
65
|
+
const epoch = await this.rollup.getCurrentEpochNumber();
|
|
60
66
|
if (epoch > this.proofSubmissionEpochs) {
|
|
61
67
|
// look at the prev epoch so that we get an accurate value, after proof submission window has closed
|
|
62
68
|
// For example, if proof submission window is 1 epoch, and we are in epoch 2, we should be looking at epoch 0.
|
|
63
69
|
// Similarly, if the proof submission window is 0, and we are in epoch 1, we should be looking at epoch 0.
|
|
64
|
-
const closedEpoch = epoch - BigInt(this.proofSubmissionEpochs) - 1n;
|
|
70
|
+
const closedEpoch = BigInt(epoch) - BigInt(this.proofSubmissionEpochs) - 1n;
|
|
65
71
|
const rewards = await this.rollup.getSpecificProverRewardsForEpoch(closedEpoch, this.coinbase);
|
|
66
72
|
const fmt = parseFloat(formatUnits(rewards, 18));
|
|
67
73
|
observer.observe(this.rewards, fmt, {
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtbW9uaXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbml0b3JzL2Vwb2NoLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTNFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JGLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxTQUFTLEVBQ2QsS0FBSyxNQUFNLEVBR1osTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0NBQ3JFO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILHFCQUFhLFlBQWEsWUFBVyxTQUFTO0lBUzFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYTtJQUM5QixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDNUIsT0FBTyxDQUFDLE9BQU87SUFWakIsT0FBTyxDQUFDLGNBQWMsQ0FBaUI7SUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBNkM7SUFDeEQsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixPQUFPLENBQUMsT0FBTyxDQUFrQztJQUNqRCxPQUFPLENBQUMsaUJBQWlCLENBQTBCO0lBRW5ELFlBQ21CLGFBQWEsRUFBRSxhQUFhLEVBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDLEVBQzlELE9BQU8sRUFBRTtRQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztRQUFDLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLEVBQ3ZFLFNBQVMsR0FBRSxlQUFzQyxFQU9sRDtJQUVELE9BQW9CLE1BQU0sQ0FDeEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsT0FBTyxFQUFFO1FBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFDL0QsU0FBUyxHQUFFLGVBQXNDLEdBQ2hELE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FHdkI7SUFFTSxLQUFLLENBQUMsT0FBTyxFQUFFLG1CQUFtQixRQUl4QztJQUVELDBCQUEwQjtJQUNuQixVQUFVLENBQUMsT0FBTyxFQUFFLG1CQUFtQixRQUU3QztJQUVZLElBQUksa0JBR2hCO0lBR1ksSUFBSSxrQkEyQmhCO1lBRWEscUJBQXFCO0NBWXBDIn0=
|
|
@@ -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,EACL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,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;IAGY,IAAI,kBA2BhB;YAEa,qBAAqB;CAYpC"}
|
|
@@ -4,8 +4,10 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
4
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
7
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
8
9
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
10
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
9
11
|
import { getEpochAtSlot } from '@aztec/stdlib/epoch-helpers';
|
|
10
12
|
import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
11
13
|
/**
|
|
@@ -34,6 +36,9 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
34
36
|
this.log = createLogger('prover-node:epoch-monitor');
|
|
35
37
|
this.tracer = telemetry.getTracer('EpochMonitor');
|
|
36
38
|
this.runningPromise = new RunningPromise(this.work.bind(this), this.log, this.options.pollingIntervalMs);
|
|
39
|
+
if (this.options.provingDelayMs) {
|
|
40
|
+
this.log.warn(`Prover node epoch monitor running with delay of ${this.options.provingDelayMs}ms`);
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
43
|
static async create(l2BlockSource, options, telemetry = getTelemetryClient()) {
|
|
39
44
|
const l1Constants = await l2BlockSource.getL1Constants();
|
|
@@ -80,6 +85,10 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
80
85
|
});
|
|
81
86
|
return;
|
|
82
87
|
}
|
|
88
|
+
if (this.options.provingDelayMs) {
|
|
89
|
+
this.log.debug(`Waiting ${this.options.provingDelayMs}ms before proving epoch ${epochToProve}`);
|
|
90
|
+
await sleep(this.options.provingDelayMs);
|
|
91
|
+
}
|
|
83
92
|
this.log.debug(`Epoch ${epochToProve} is ready to be proven`);
|
|
84
93
|
if (await this.handler?.handleEpochReadyToProve(epochToProve)) {
|
|
85
94
|
this.latestEpochNumber = epochToProve;
|
|
@@ -87,7 +96,7 @@ import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
|
87
96
|
}
|
|
88
97
|
async getEpochNumberToProve() {
|
|
89
98
|
const lastBlockProven = await this.l2BlockSource.getProvenBlockNumber();
|
|
90
|
-
const firstBlockToProve = lastBlockProven + 1;
|
|
99
|
+
const firstBlockToProve = BlockNumber(lastBlockProven + 1);
|
|
91
100
|
const firstBlockHeaderToProve = await this.l2BlockSource.getBlockHeader(firstBlockToProve);
|
|
92
101
|
if (!firstBlockHeaderToProve) {
|
|
93
102
|
return {
|
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,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BatchedBlob } from '@aztec/blob-lib';
|
|
2
2
|
import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
|
|
3
|
-
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';
|
|
4
7
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
6
8
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
7
9
|
import type { PublisherConfig, TxSenderConfig } from '@aztec/sequencer-client';
|
|
8
10
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
@@ -20,8 +22,6 @@ export type L1SubmitEpochProofArgs = {
|
|
|
20
22
|
proof: Proof;
|
|
21
23
|
};
|
|
22
24
|
export declare class ProverNodePublisher {
|
|
23
|
-
private interruptibleSleep;
|
|
24
|
-
private sleepTimeMs;
|
|
25
25
|
private interrupted;
|
|
26
26
|
private metrics;
|
|
27
27
|
protected log: import("@aztec/foundation/log").Logger;
|
|
@@ -44,9 +44,9 @@ export declare class ProverNodePublisher {
|
|
|
44
44
|
restart(): void;
|
|
45
45
|
getSenderAddress(): EthAddress;
|
|
46
46
|
submitEpochProof(args: {
|
|
47
|
-
epochNumber:
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
epochNumber: EpochNumber;
|
|
48
|
+
fromCheckpoint: CheckpointNumber;
|
|
49
|
+
toCheckpoint: CheckpointNumber;
|
|
50
50
|
publicInputs: RootRollupPublicInputs;
|
|
51
51
|
proof: Proof;
|
|
52
52
|
batchedBlobInputs: BatchedBlob;
|
|
@@ -56,6 +56,5 @@ export declare class ProverNodePublisher {
|
|
|
56
56
|
private sendSubmitEpochProofTx;
|
|
57
57
|
private getEpochProofPublicInputsArgs;
|
|
58
58
|
private getSubmitEpochProofArgs;
|
|
59
|
-
protected sleepOrInterrupted(): Promise<void>;
|
|
60
59
|
}
|
|
61
|
-
//# sourceMappingURL=
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUtcHVibGlzaGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUtcHVibGlzaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQThCLE1BQU0saUJBQWlCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9FLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQU9uRixzRUFBc0U7QUFDdEUsTUFBTSxNQUFNLHNCQUFzQixHQUFHO0lBQ25DLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZUFBZSxFQUFFLEVBQUUsQ0FBQztJQUNwQixVQUFVLEVBQUUsRUFBRSxDQUFDO0lBQ2YsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUNqQixPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ1osUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNiLElBQUksRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sd0JBQXdCLENBQUMsQ0FBQztJQUMzRCxLQUFLLEVBQUUsS0FBSyxDQUFDO0NBQ2QsQ0FBQztBQUVGLHFCQUFhLG1CQUFtQjtJQUM5QixPQUFPLENBQUMsV0FBVyxDQUFTO0lBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQTZCO0lBRTVDLFNBQVMsQ0FBQyxHQUFHLHlDQUErQztJQUU1RCxTQUFTLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQztJQUV6QyxTQUFnQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBRXJDLFlBQ0UsTUFBTSxFQUFFLGNBQWMsR0FBRyxlQUFlLEVBQ3hDLElBQUksRUFBRTtRQUNKLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFDL0IsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUNyQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7S0FDN0IsRUFRRjtJQUVNLGlCQUFpQixtQkFFdkI7SUFFRDs7Ozs7T0FLRztJQUNJLFNBQVMsU0FHZjtJQUVELHdEQUF3RDtJQUNqRCxPQUFPLFNBR2I7SUFFTSxnQkFBZ0IsZUFFdEI7SUFFWSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDbEMsV0FBVyxFQUFFLFdBQVcsQ0FBQztRQUN6QixjQUFjLEVBQUUsZ0JBQWdCLENBQUM7UUFDakMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO1FBQy9CLFlBQVksRUFBRSxzQkFBc0IsQ0FBQztRQUNyQyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ2IsaUJBQWlCLEVBQUUsV0FBVyxDQUFDO1FBQy9CLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxDQUFDO0tBQzFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQWlEbkI7WUFFYSw0QkFBNEI7WUErRDVCLHNCQUFzQjtJQTRDcEMsT0FBTyxDQUFDLDZCQUE2QjtJQXlCckMsT0FBTyxDQUFDLHVCQUF1QjtDQXVCaEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,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;IAyBrC,OAAO,CAAC,uBAAuB;CAuBhC"}
|