@aztec/prover-node 0.76.4 → 0.77.0-testnet-ignition.17
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/config.d.ts +5 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +24 -30
- package/dest/factory.d.ts +6 -3
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +21 -14
- package/dest/http.d.ts +1 -1
- package/dest/http.d.ts.map +1 -1
- package/dest/http.js +2 -4
- package/dest/index.js +0 -1
- package/dest/job/epoch-proving-job.d.ts +7 -4
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +233 -193
- package/dest/metrics.d.ts +5 -2
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +50 -25
- package/dest/monitors/epoch-monitor.d.ts +22 -3
- package/dest/monitors/epoch-monitor.d.ts.map +1 -1
- package/dest/monitors/epoch-monitor.js +102 -48
- package/dest/monitors/index.js +0 -1
- package/dest/prover-coordination/config.js +2 -3
- package/dest/prover-coordination/factory.d.ts +5 -5
- package/dest/prover-coordination/factory.d.ts.map +1 -1
- package/dest/prover-coordination/factory.js +11 -8
- package/dest/prover-coordination/index.js +0 -1
- package/dest/prover-node-publisher.d.ts +5 -4
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +60 -52
- package/dest/prover-node.d.ts +12 -7
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +237 -224
- package/dest/test/index.d.ts +2 -2
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +2 -1
- package/package.json +21 -22
- package/src/config.ts +23 -31
- package/src/factory.ts +17 -8
- package/src/http.ts +2 -2
- package/src/job/epoch-proving-job.ts +11 -13
- package/src/metrics.ts +26 -5
- package/src/monitors/epoch-monitor.ts +57 -12
- package/src/prover-coordination/factory.ts +9 -12
- package/src/prover-node-publisher.ts +21 -14
- package/src/prover-node.ts +24 -22
- package/src/test/index.ts +2 -2
|
@@ -1,215 +1,255 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
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
|
+
}
|
|
3
7
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
4
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
9
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
6
10
|
import { Timer } from '@aztec/foundation/timer';
|
|
11
|
+
import { EpochProvingJobTerminalState } from '@aztec/stdlib/interfaces/server';
|
|
7
12
|
import { Attributes, trackSpan } from '@aztec/telemetry-client';
|
|
8
13
|
import * as crypto from 'node:crypto';
|
|
9
14
|
/**
|
|
10
15
|
* Job that grabs a range of blocks from the unfinalised chain from L1, gets their txs given their hashes,
|
|
11
16
|
* re-executes their public calls, generates a rollup proof, and submits it to L1. This job will update the
|
|
12
17
|
* world state as part of public call execution via the public processor.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
18
|
+
*/ export class EpochProvingJob {
|
|
19
|
+
dbProvider;
|
|
20
|
+
epochNumber;
|
|
21
|
+
blocks;
|
|
22
|
+
txs;
|
|
23
|
+
prover;
|
|
24
|
+
publicProcessorFactory;
|
|
25
|
+
publisher;
|
|
26
|
+
l2BlockSource;
|
|
27
|
+
l1ToL2MessageSource;
|
|
28
|
+
metrics;
|
|
29
|
+
deadline;
|
|
30
|
+
config;
|
|
31
|
+
cleanUp;
|
|
32
|
+
state;
|
|
33
|
+
log;
|
|
34
|
+
uuid;
|
|
35
|
+
runPromise;
|
|
36
|
+
deadlineTimeoutHandler;
|
|
37
|
+
tracer;
|
|
38
|
+
constructor(dbProvider, epochNumber, blocks, txs, prover, publicProcessorFactory, publisher, l2BlockSource, l1ToL2MessageSource, metrics, deadline, config = {
|
|
39
|
+
parallelBlockLimit: 32
|
|
40
|
+
}, cleanUp = ()=>Promise.resolve()){
|
|
41
|
+
this.dbProvider = dbProvider;
|
|
42
|
+
this.epochNumber = epochNumber;
|
|
43
|
+
this.blocks = blocks;
|
|
44
|
+
this.txs = txs;
|
|
45
|
+
this.prover = prover;
|
|
46
|
+
this.publicProcessorFactory = publicProcessorFactory;
|
|
47
|
+
this.publisher = publisher;
|
|
48
|
+
this.l2BlockSource = l2BlockSource;
|
|
49
|
+
this.l1ToL2MessageSource = l1ToL2MessageSource;
|
|
50
|
+
this.metrics = metrics;
|
|
51
|
+
this.deadline = deadline;
|
|
52
|
+
this.config = config;
|
|
53
|
+
this.cleanUp = cleanUp;
|
|
54
|
+
this.state = 'initialized';
|
|
55
|
+
this.log = createLogger('prover-node:epoch-proving-job');
|
|
56
|
+
this.uuid = crypto.randomUUID();
|
|
57
|
+
this.tracer = metrics.client.getTracer('EpochProvingJob');
|
|
58
|
+
}
|
|
59
|
+
getId() {
|
|
60
|
+
return this.uuid;
|
|
61
|
+
}
|
|
62
|
+
getState() {
|
|
63
|
+
return this.state;
|
|
64
|
+
}
|
|
65
|
+
getEpochNumber() {
|
|
66
|
+
return this.epochNumber;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Proves the given epoch and submits the proof to L1.
|
|
70
|
+
*/ async run() {
|
|
71
|
+
this.scheduleDeadlineStop();
|
|
72
|
+
const epochNumber = Number(this.epochNumber);
|
|
73
|
+
const epochSizeBlocks = this.blocks.length;
|
|
74
|
+
const epochSizeTxs = this.blocks.reduce((total, current)=>total + current.body.txEffects.length, 0);
|
|
75
|
+
const [fromBlock, toBlock] = [
|
|
76
|
+
this.blocks[0].number,
|
|
77
|
+
this.blocks.at(-1).number
|
|
78
|
+
];
|
|
79
|
+
this.log.info(`Starting epoch ${epochNumber} proving job with blocks ${fromBlock} to ${toBlock}`, {
|
|
80
|
+
fromBlock,
|
|
81
|
+
toBlock,
|
|
82
|
+
epochSizeBlocks,
|
|
83
|
+
epochNumber,
|
|
84
|
+
uuid: this.uuid
|
|
85
|
+
});
|
|
86
|
+
this.progressState('processing');
|
|
87
|
+
const timer = new Timer();
|
|
88
|
+
const { promise, resolve } = promiseWithResolvers();
|
|
89
|
+
this.runPromise = promise;
|
|
90
|
+
try {
|
|
91
|
+
this.prover.startNewEpoch(epochNumber, fromBlock, epochSizeBlocks);
|
|
92
|
+
await this.prover.startTubeCircuits(this.txs);
|
|
93
|
+
await asyncPool(this.config.parallelBlockLimit, this.blocks, async (block)=>{
|
|
94
|
+
this.checkState();
|
|
95
|
+
const globalVariables = block.header.globalVariables;
|
|
96
|
+
const txs = await this.getTxs(block);
|
|
97
|
+
const l1ToL2Messages = await this.getL1ToL2Messages(block);
|
|
98
|
+
const previousHeader = await this.getBlockHeader(block.number - 1);
|
|
99
|
+
this.log.verbose(`Starting processing block ${block.number}`, {
|
|
100
|
+
number: block.number,
|
|
101
|
+
blockHash: (await block.hash()).toString(),
|
|
102
|
+
lastArchive: block.header.lastArchive.root,
|
|
103
|
+
noteHashTreeRoot: block.header.state.partial.noteHashTree.root,
|
|
104
|
+
nullifierTreeRoot: block.header.state.partial.nullifierTree.root,
|
|
105
|
+
publicDataTreeRoot: block.header.state.partial.publicDataTree.root,
|
|
106
|
+
previousHeader: previousHeader.hash(),
|
|
107
|
+
uuid: this.uuid,
|
|
108
|
+
...globalVariables
|
|
109
|
+
});
|
|
110
|
+
// Start block proving
|
|
111
|
+
await this.prover.startNewBlock(globalVariables, l1ToL2Messages, previousHeader);
|
|
112
|
+
// Process public fns
|
|
113
|
+
const db = await this.dbProvider.fork(block.number - 1);
|
|
114
|
+
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, true);
|
|
115
|
+
const processed = await this.processTxs(publicProcessor, txs);
|
|
116
|
+
await this.prover.addTxs(processed);
|
|
117
|
+
await db.close();
|
|
118
|
+
this.log.verbose(`Processed all ${txs.length} txs for block ${block.number}`, {
|
|
119
|
+
blockNumber: block.number,
|
|
120
|
+
blockHash: (await block.hash()).toString(),
|
|
121
|
+
uuid: this.uuid
|
|
122
|
+
});
|
|
123
|
+
// Mark block as completed to pad it
|
|
124
|
+
await this.prover.setBlockCompleted(block.number, block.header);
|
|
125
|
+
});
|
|
126
|
+
const executionTime = timer.ms();
|
|
127
|
+
this.progressState('awaiting-prover');
|
|
128
|
+
const { publicInputs, proof } = await this.prover.finaliseEpoch();
|
|
129
|
+
this.log.info(`Finalised proof for epoch ${epochNumber}`, {
|
|
130
|
+
epochNumber,
|
|
131
|
+
uuid: this.uuid,
|
|
132
|
+
duration: timer.ms()
|
|
133
|
+
});
|
|
134
|
+
this.progressState('publishing-proof');
|
|
135
|
+
const success = await this.publisher.submitEpochProof({
|
|
136
|
+
fromBlock,
|
|
137
|
+
toBlock,
|
|
138
|
+
epochNumber,
|
|
139
|
+
publicInputs,
|
|
140
|
+
proof
|
|
141
|
+
});
|
|
142
|
+
if (!success) {
|
|
143
|
+
throw new Error('Failed to submit epoch proof to L1');
|
|
40
144
|
}
|
|
41
|
-
|
|
42
|
-
|
|
145
|
+
this.log.info(`Submitted proof for epoch ${epochNumber} (blocks ${fromBlock} to ${toBlock})`, {
|
|
146
|
+
epochNumber,
|
|
147
|
+
uuid: this.uuid
|
|
148
|
+
});
|
|
149
|
+
this.state = 'completed';
|
|
150
|
+
this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeBlocks, epochSizeTxs);
|
|
151
|
+
} catch (err) {
|
|
152
|
+
if (err && err.name === 'HaltExecutionError') {
|
|
153
|
+
this.log.warn(`Halted execution of epoch ${epochNumber} prover job`, {
|
|
154
|
+
uuid: this.uuid,
|
|
155
|
+
epochNumber
|
|
156
|
+
});
|
|
157
|
+
return;
|
|
43
158
|
}
|
|
44
|
-
|
|
45
|
-
|
|
159
|
+
this.log.error(`Error running epoch ${epochNumber} prover job`, err, {
|
|
160
|
+
uuid: this.uuid,
|
|
161
|
+
epochNumber
|
|
162
|
+
});
|
|
163
|
+
this.state = 'failed';
|
|
164
|
+
} finally{
|
|
165
|
+
clearTimeout(this.deadlineTimeoutHandler);
|
|
166
|
+
await this.cleanUp(this);
|
|
167
|
+
await this.prover.stop();
|
|
168
|
+
resolve();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
progressState(state) {
|
|
172
|
+
this.checkState();
|
|
173
|
+
this.state = state;
|
|
174
|
+
}
|
|
175
|
+
checkState() {
|
|
176
|
+
if (this.state === 'timed-out' || this.state === 'stopped' || this.state === 'failed') {
|
|
177
|
+
throw new HaltExecutionError(this.state);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async stop(state = 'stopped') {
|
|
181
|
+
this.state = state;
|
|
182
|
+
this.prover.cancel();
|
|
183
|
+
// TODO(palla/prover): Stop the publisher as well
|
|
184
|
+
if (this.runPromise) {
|
|
185
|
+
await this.runPromise;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
scheduleDeadlineStop() {
|
|
189
|
+
const deadline = this.deadline;
|
|
190
|
+
if (deadline) {
|
|
191
|
+
const timeout = deadline.getTime() - Date.now();
|
|
192
|
+
if (timeout <= 0) {
|
|
193
|
+
throw new Error('Cannot start job with deadline in the past');
|
|
46
194
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this.
|
|
52
|
-
const epochNumber = Number(this.epochNumber);
|
|
53
|
-
const epochSizeBlocks = this.blocks.length;
|
|
54
|
-
const epochSizeTxs = this.blocks.reduce((total, current) => total + current.body.txEffects.length, 0);
|
|
55
|
-
const [fromBlock, toBlock] = [this.blocks[0].number, this.blocks.at(-1).number];
|
|
56
|
-
this.log.info(`Starting epoch ${epochNumber} proving job with blocks ${fromBlock} to ${toBlock}`, {
|
|
57
|
-
fromBlock,
|
|
58
|
-
toBlock,
|
|
59
|
-
epochSizeBlocks,
|
|
60
|
-
epochNumber,
|
|
195
|
+
this.deadlineTimeoutHandler = setTimeout(()=>{
|
|
196
|
+
if (EpochProvingJobTerminalState.includes(this.state)) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
this.log.warn('Stopping job due to deadline hit', {
|
|
61
200
|
uuid: this.uuid,
|
|
201
|
+
epochNumber: this.epochNumber
|
|
62
202
|
});
|
|
63
|
-
this.
|
|
64
|
-
|
|
65
|
-
const { promise, resolve } = promiseWithResolvers();
|
|
66
|
-
this.runPromise = promise;
|
|
67
|
-
try {
|
|
68
|
-
this.prover.startNewEpoch(epochNumber, fromBlock, epochSizeBlocks);
|
|
69
|
-
await this.prover.startTubeCircuits(this.txs);
|
|
70
|
-
await asyncPool(this.config.parallelBlockLimit, this.blocks, async (block) => {
|
|
71
|
-
this.checkState();
|
|
72
|
-
const globalVariables = block.header.globalVariables;
|
|
73
|
-
const txs = await this.getTxs(block);
|
|
74
|
-
const l1ToL2Messages = await this.getL1ToL2Messages(block);
|
|
75
|
-
const previousHeader = (await this.getBlockHeader(block.number - 1));
|
|
76
|
-
this.log.verbose(`Starting processing block ${block.number}`, {
|
|
77
|
-
number: block.number,
|
|
78
|
-
blockHash: (await block.hash()).toString(),
|
|
79
|
-
lastArchive: block.header.lastArchive.root,
|
|
80
|
-
noteHashTreeRoot: block.header.state.partial.noteHashTree.root,
|
|
81
|
-
nullifierTreeRoot: block.header.state.partial.nullifierTree.root,
|
|
82
|
-
publicDataTreeRoot: block.header.state.partial.publicDataTree.root,
|
|
83
|
-
previousHeader: previousHeader.hash(),
|
|
84
|
-
uuid: this.uuid,
|
|
85
|
-
...globalVariables,
|
|
86
|
-
});
|
|
87
|
-
// Start block proving
|
|
88
|
-
await this.prover.startNewBlock(globalVariables, l1ToL2Messages, previousHeader);
|
|
89
|
-
// Process public fns
|
|
90
|
-
const db = await this.dbProvider.fork(block.number - 1);
|
|
91
|
-
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, true);
|
|
92
|
-
const processed = await this.processTxs(publicProcessor, txs);
|
|
93
|
-
await this.prover.addTxs(processed);
|
|
94
|
-
await db.close();
|
|
95
|
-
this.log.verbose(`Processed all ${txs.length} txs for block ${block.number}`, {
|
|
96
|
-
blockNumber: block.number,
|
|
97
|
-
blockHash: (await block.hash()).toString(),
|
|
98
|
-
uuid: this.uuid,
|
|
99
|
-
});
|
|
100
|
-
// Mark block as completed to pad it
|
|
101
|
-
await this.prover.setBlockCompleted(block.number, block.header);
|
|
102
|
-
});
|
|
103
|
-
const executionTime = timer.ms();
|
|
104
|
-
this.progressState('awaiting-prover');
|
|
105
|
-
const { publicInputs, proof } = await this.prover.finaliseEpoch();
|
|
106
|
-
this.log.info(`Finalised proof for epoch ${epochNumber}`, { epochNumber, uuid: this.uuid, duration: timer.ms() });
|
|
107
|
-
this.progressState('publishing-proof');
|
|
108
|
-
const success = await this.publisher.submitEpochProof({ fromBlock, toBlock, epochNumber, publicInputs, proof });
|
|
109
|
-
if (!success) {
|
|
110
|
-
throw new Error('Failed to submit epoch proof to L1');
|
|
111
|
-
}
|
|
112
|
-
this.log.info(`Submitted proof for epoch ${epochNumber} (blocks ${fromBlock} to ${toBlock})`, {
|
|
113
|
-
epochNumber,
|
|
203
|
+
this.stop('timed-out').catch((err)=>{
|
|
204
|
+
this.log.error('Error stopping job', err, {
|
|
114
205
|
uuid: this.uuid,
|
|
206
|
+
epochNumber: this.epochNumber
|
|
115
207
|
});
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
this.deadlineTimeoutHandler = setTimeout(() => {
|
|
159
|
-
if (EpochProvingJobTerminalState.includes(this.state)) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
this.log.warn('Stopping job due to deadline hit', { uuid: this.uuid, epochNumber: this.epochNumber });
|
|
163
|
-
this.stop('timed-out').catch(err => {
|
|
164
|
-
this.log.error('Error stopping job', err, { uuid: this.uuid, epochNumber: this.epochNumber });
|
|
165
|
-
});
|
|
166
|
-
}, timeout);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/* Returns the header for the given block number, or the genesis block for block zero. */
|
|
170
|
-
async getBlockHeader(blockNumber) {
|
|
171
|
-
if (blockNumber === 0) {
|
|
172
|
-
return (await this.dbProvider.fork()).getInitialHeader();
|
|
173
|
-
}
|
|
174
|
-
return this.l2BlockSource.getBlockHeader(blockNumber);
|
|
175
|
-
}
|
|
176
|
-
async getTxs(block) {
|
|
177
|
-
const txHashes = block.body.txEffects.map(tx => tx.txHash.toBigInt());
|
|
178
|
-
const txsAndHashes = await Promise.all(this.txs.map(async (tx) => ({ tx, hash: await tx.getTxHash() })));
|
|
179
|
-
return txsAndHashes
|
|
180
|
-
.filter(txAndHash => txHashes.includes(txAndHash.hash.toBigInt()))
|
|
181
|
-
.map(txAndHash => txAndHash.tx);
|
|
182
|
-
}
|
|
183
|
-
getL1ToL2Messages(block) {
|
|
184
|
-
return this.l1ToL2MessageSource.getL1ToL2Messages(BigInt(block.number));
|
|
185
|
-
}
|
|
186
|
-
async processTxs(publicProcessor, txs) {
|
|
187
|
-
const { deadline } = this;
|
|
188
|
-
const [processedTxs, failedTxs] = await publicProcessor.process(txs, { deadline });
|
|
189
|
-
if (failedTxs.length) {
|
|
190
|
-
throw new Error(`Txs failed processing: ${failedTxs.map(({ tx, error }) => `${tx.getTxHash()} (${error})`).join(', ')}`);
|
|
191
|
-
}
|
|
192
|
-
if (processedTxs.length !== txs.length) {
|
|
193
|
-
throw new Error(`Failed to process all txs: processed ${processedTxs.length} out of ${txs.length}`);
|
|
194
|
-
}
|
|
195
|
-
return processedTxs;
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
(() => {
|
|
199
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
200
|
-
_run_decorators = [trackSpan('EpochProvingJob.run', function () {
|
|
201
|
-
return { [Attributes.EPOCH_NUMBER]: Number(this.epochNumber) };
|
|
202
|
-
})];
|
|
203
|
-
__esDecorate(_a, null, _run_decorators, { kind: "method", name: "run", static: false, private: false, access: { has: obj => "run" in obj, get: obj => obj.run }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
204
|
-
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
205
|
-
})(),
|
|
206
|
-
_a;
|
|
207
|
-
})();
|
|
208
|
-
export { EpochProvingJob };
|
|
208
|
+
});
|
|
209
|
+
}, timeout);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/* Returns the header for the given block number, or the genesis block for block zero. */ async getBlockHeader(blockNumber) {
|
|
213
|
+
if (blockNumber === 0) {
|
|
214
|
+
return (await this.dbProvider.fork()).getInitialHeader();
|
|
215
|
+
}
|
|
216
|
+
return this.l2BlockSource.getBlockHeader(blockNumber);
|
|
217
|
+
}
|
|
218
|
+
async getTxs(block) {
|
|
219
|
+
const txHashes = block.body.txEffects.map((tx)=>tx.txHash.toBigInt());
|
|
220
|
+
const txsAndHashes = await Promise.all(this.txs.map(async (tx)=>({
|
|
221
|
+
tx,
|
|
222
|
+
hash: await tx.getTxHash()
|
|
223
|
+
})));
|
|
224
|
+
return txsAndHashes.filter((txAndHash)=>txHashes.includes(txAndHash.hash.toBigInt())).map((txAndHash)=>txAndHash.tx);
|
|
225
|
+
}
|
|
226
|
+
getL1ToL2Messages(block) {
|
|
227
|
+
return this.l1ToL2MessageSource.getL1ToL2Messages(BigInt(block.number));
|
|
228
|
+
}
|
|
229
|
+
async processTxs(publicProcessor, txs) {
|
|
230
|
+
const { deadline } = this;
|
|
231
|
+
const [processedTxs, failedTxs] = await publicProcessor.process(txs, {
|
|
232
|
+
deadline
|
|
233
|
+
});
|
|
234
|
+
if (failedTxs.length) {
|
|
235
|
+
throw new Error(`Txs failed processing: ${failedTxs.map(({ tx, error })=>`${tx.getTxHash()} (${error})`).join(', ')}`);
|
|
236
|
+
}
|
|
237
|
+
if (processedTxs.length !== txs.length) {
|
|
238
|
+
throw new Error(`Failed to process all txs: processed ${processedTxs.length} out of ${txs.length}`);
|
|
239
|
+
}
|
|
240
|
+
return processedTxs;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
_ts_decorate([
|
|
244
|
+
trackSpan('EpochProvingJob.run', function() {
|
|
245
|
+
return {
|
|
246
|
+
[Attributes.EPOCH_NUMBER]: Number(this.epochNumber)
|
|
247
|
+
};
|
|
248
|
+
})
|
|
249
|
+
], EpochProvingJob.prototype, "run", null);
|
|
209
250
|
class HaltExecutionError extends Error {
|
|
210
|
-
constructor(state)
|
|
251
|
+
constructor(state){
|
|
211
252
|
super(`Halted execution due to state ${state}`);
|
|
212
253
|
this.name = 'HaltExecutionError';
|
|
213
254
|
}
|
|
214
255
|
}
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1qb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvam9iL2Vwb2NoLXByb3Zpbmctam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBR0wsNEJBQTRCLEdBTzdCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFVBQVUsRUFBK0IsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFN0YsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFLdEM7Ozs7R0FJRztJQUNVLGVBQWU7Ozs7c0JBQWYsZUFBZTtZQVUxQixZQUNVLFVBQW9DLEVBQ3BDLFdBQW1CLEVBQ25CLE1BQWlCLEVBQ2pCLEdBQVMsRUFDVCxNQUFtQixFQUNuQixzQkFBOEMsRUFDOUMsU0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLE9BQTBCLEVBQzFCLFFBQTBCLEVBQzFCLFNBQXlDLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQ25FLFVBQW1ELEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBWjFFLGVBQVUsSUFYVCxtREFBZSxFQVdoQixVQUFVLEVBQTBCO2dCQUNwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtnQkFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBVztnQkFDakIsUUFBRyxHQUFILEdBQUcsQ0FBTTtnQkFDVCxXQUFNLEdBQU4sTUFBTSxDQUFhO2dCQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO2dCQUM5QyxjQUFTLEdBQVQs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
|
package/dest/metrics.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { L1PublishProofStats } from '@aztec/stdlib/stats';
|
|
2
2
|
import { type Histogram, type TelemetryClient, type UpDownCounter } from '@aztec/telemetry-client';
|
|
3
3
|
export declare class ProverNodeMetrics {
|
|
4
4
|
readonly client: TelemetryClient;
|
|
5
|
+
private logger;
|
|
5
6
|
proverEpochExecutionDuration: Histogram;
|
|
6
7
|
provingJobDuration: Histogram;
|
|
7
8
|
provingJobBlocks: Histogram;
|
|
@@ -14,10 +15,12 @@ export declare class ProverNodeMetrics {
|
|
|
14
15
|
txCalldataGas: Histogram;
|
|
15
16
|
txBlobDataGasUsed: Histogram;
|
|
16
17
|
txBlobDataGasCost: Histogram;
|
|
17
|
-
|
|
18
|
+
private senderBalance;
|
|
19
|
+
constructor(client: TelemetryClient, name?: string, logger?: import("@aztec/foundation/log").Logger);
|
|
18
20
|
recordFailedTx(): void;
|
|
19
21
|
recordSubmitProof(durationMs: number, stats: L1PublishProofStats): void;
|
|
20
22
|
recordProvingJob(executionTimeMs: number, totalTimeMs: number, numBlocks: number, numTxs: number): void;
|
|
23
|
+
recordSenderBalance(wei: bigint, senderAddress: string): void;
|
|
21
24
|
private recordTx;
|
|
22
25
|
}
|
|
23
26
|
//# sourceMappingURL=metrics.d.ts.map
|
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":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,eAAe,EACpB,KAAK,aAAa,EAEnB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,iBAAiB;aAkBV,MAAM,EAAE,eAAe;IAEvC,OAAO,CAAC,MAAM;IAnBhB,4BAA4B,EAAE,SAAS,CAAC;IACxC,kBAAkB,EAAE,SAAS,CAAC;IAC9B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,sBAAsB,EAAE,SAAS,CAAC;IAElC,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;IAE7B,OAAO,CAAC,aAAa,CAAQ;gBAGX,MAAM,EAAE,eAAe,EACvC,IAAI,SAAe,EACX,MAAM,yCAAgD;IA2EhE,cAAc;IAOd,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAIzD,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAOhG,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAO7D,OAAO,CAAC,QAAQ;CA6BjB"}
|