@aztec/prover-node 2.0.0-nightly.20250903 → 2.0.0-rc.10
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.
|
@@ -44,6 +44,11 @@ export declare class EpochProvingJob implements Traceable {
|
|
|
44
44
|
* Proves the given epoch and submits the proof to L1.
|
|
45
45
|
*/
|
|
46
46
|
run(): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new db fork for tx processing, inserting all L1 to L2.
|
|
49
|
+
* REFACTOR: The prover already spawns a db fork of its own for each block, so we may be able to do away with just one fork.
|
|
50
|
+
*/
|
|
51
|
+
private createFork;
|
|
47
52
|
private progressState;
|
|
48
53
|
private checkState;
|
|
49
54
|
stop(state?: EpochProvingJobTerminalState): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,6BAA6B,CAAC;AAEpG;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAY7C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAiD;IAC5D,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACxD,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE;IAOpE,KAAK,IAAI,MAAM;IAIf,QAAQ,IAAI,oBAAoB;IAIhC,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,IAAI,GAAG,SAAS;IAI/B,cAAc,IAAI,mBAAmB;IAI5C,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IAIU,GAAG;IAwHhB;;;OAGG;YACW,UAAU;IAgBxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC;IASjE,OAAO,CAAC,oBAAoB;IAoB5B;;;OAGG;YACW,kBAAkB;IAiChC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAmBzB;AASD,OAAO,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
|
|
@@ -5,11 +5,15 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
7
|
import { BatchedBlob, Blob } from '@aztec/blob-lib';
|
|
8
|
+
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
8
9
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
10
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
11
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
9
12
|
import { createLogger } from '@aztec/foundation/log';
|
|
10
13
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
11
14
|
import { Timer } from '@aztec/foundation/timer';
|
|
12
15
|
import { EpochProvingJobTerminalState } from '@aztec/stdlib/interfaces/server';
|
|
16
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
13
17
|
import { Attributes, trackSpan } from '@aztec/telemetry-client';
|
|
14
18
|
import * as crypto from 'node:crypto';
|
|
15
19
|
import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
@@ -128,7 +132,7 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
128
132
|
// Start block proving
|
|
129
133
|
await this.prover.startNewBlock(globalVariables, l1ToL2Messages, previousHeader);
|
|
130
134
|
// Process public fns
|
|
131
|
-
const db = await this.
|
|
135
|
+
const db = await this.createFork(block.number - 1, l1ToL2Messages);
|
|
132
136
|
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, true);
|
|
133
137
|
const processed = await this.processTxs(publicProcessor, txs);
|
|
134
138
|
await this.prover.addTxs(processed);
|
|
@@ -191,6 +195,19 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
|
|
|
191
195
|
resolve();
|
|
192
196
|
}
|
|
193
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Create a new db fork for tx processing, inserting all L1 to L2.
|
|
200
|
+
* REFACTOR: The prover already spawns a db fork of its own for each block, so we may be able to do away with just one fork.
|
|
201
|
+
*/ async createFork(blockNumber, l1ToL2Messages) {
|
|
202
|
+
const db = await this.dbProvider.fork(blockNumber);
|
|
203
|
+
const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 'Too many L1 to L2 messages');
|
|
204
|
+
this.log.verbose(`Creating fork at ${blockNumber} with ${l1ToL2Messages.length} L1 to L2 messages`, {
|
|
205
|
+
blockNumber,
|
|
206
|
+
l1ToL2Messages: l1ToL2MessagesPadded.map((m)=>m.toString())
|
|
207
|
+
});
|
|
208
|
+
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
209
|
+
return db;
|
|
210
|
+
}
|
|
194
211
|
progressState(state) {
|
|
195
212
|
this.checkState();
|
|
196
213
|
this.state = state;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "2.0.0-
|
|
3
|
+
"version": "2.0.0-rc.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -56,27 +56,27 @@
|
|
|
56
56
|
]
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@aztec/archiver": "2.0.0-
|
|
60
|
-
"@aztec/bb-prover": "2.0.0-
|
|
61
|
-
"@aztec/blob-lib": "2.0.0-
|
|
62
|
-
"@aztec/blob-sink": "2.0.0-
|
|
63
|
-
"@aztec/constants": "2.0.0-
|
|
64
|
-
"@aztec/epoch-cache": "2.0.0-
|
|
65
|
-
"@aztec/ethereum": "2.0.0-
|
|
66
|
-
"@aztec/foundation": "2.0.0-
|
|
67
|
-
"@aztec/kv-store": "2.0.0-
|
|
68
|
-
"@aztec/l1-artifacts": "2.0.0-
|
|
69
|
-
"@aztec/node-keystore": "2.0.0-
|
|
70
|
-
"@aztec/node-lib": "2.0.0-
|
|
71
|
-
"@aztec/noir-protocol-circuits-types": "2.0.0-
|
|
72
|
-
"@aztec/p2p": "2.0.0-
|
|
73
|
-
"@aztec/protocol-contracts": "2.0.0-
|
|
74
|
-
"@aztec/prover-client": "2.0.0-
|
|
75
|
-
"@aztec/sequencer-client": "2.0.0-
|
|
76
|
-
"@aztec/simulator": "2.0.0-
|
|
77
|
-
"@aztec/stdlib": "2.0.0-
|
|
78
|
-
"@aztec/telemetry-client": "2.0.0-
|
|
79
|
-
"@aztec/world-state": "2.0.0-
|
|
59
|
+
"@aztec/archiver": "2.0.0-rc.10",
|
|
60
|
+
"@aztec/bb-prover": "2.0.0-rc.10",
|
|
61
|
+
"@aztec/blob-lib": "2.0.0-rc.10",
|
|
62
|
+
"@aztec/blob-sink": "2.0.0-rc.10",
|
|
63
|
+
"@aztec/constants": "2.0.0-rc.10",
|
|
64
|
+
"@aztec/epoch-cache": "2.0.0-rc.10",
|
|
65
|
+
"@aztec/ethereum": "2.0.0-rc.10",
|
|
66
|
+
"@aztec/foundation": "2.0.0-rc.10",
|
|
67
|
+
"@aztec/kv-store": "2.0.0-rc.10",
|
|
68
|
+
"@aztec/l1-artifacts": "2.0.0-rc.10",
|
|
69
|
+
"@aztec/node-keystore": "2.0.0-rc.10",
|
|
70
|
+
"@aztec/node-lib": "2.0.0-rc.10",
|
|
71
|
+
"@aztec/noir-protocol-circuits-types": "2.0.0-rc.10",
|
|
72
|
+
"@aztec/p2p": "2.0.0-rc.10",
|
|
73
|
+
"@aztec/protocol-contracts": "2.0.0-rc.10",
|
|
74
|
+
"@aztec/prover-client": "2.0.0-rc.10",
|
|
75
|
+
"@aztec/sequencer-client": "2.0.0-rc.10",
|
|
76
|
+
"@aztec/simulator": "2.0.0-rc.10",
|
|
77
|
+
"@aztec/stdlib": "2.0.0-rc.10",
|
|
78
|
+
"@aztec/telemetry-client": "2.0.0-rc.10",
|
|
79
|
+
"@aztec/world-state": "2.0.0-rc.10",
|
|
80
80
|
"source-map-support": "^0.5.21",
|
|
81
81
|
"tslib": "^2.4.0",
|
|
82
82
|
"viem": "2.23.7"
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { BatchedBlob, Blob } from '@aztec/blob-lib';
|
|
2
|
+
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
2
3
|
import { asyncPool } from '@aztec/foundation/async-pool';
|
|
4
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
3
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
7
|
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
5
8
|
import { Timer } from '@aztec/foundation/timer';
|
|
@@ -11,6 +14,7 @@ import {
|
|
|
11
14
|
EpochProvingJobTerminalState,
|
|
12
15
|
type ForkMerkleTreeOperations,
|
|
13
16
|
} from '@aztec/stdlib/interfaces/server';
|
|
17
|
+
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
14
18
|
import type { ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
15
19
|
import { Attributes, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
16
20
|
|
|
@@ -151,7 +155,7 @@ export class EpochProvingJob implements Traceable {
|
|
|
151
155
|
await this.prover.startNewBlock(globalVariables, l1ToL2Messages, previousHeader);
|
|
152
156
|
|
|
153
157
|
// Process public fns
|
|
154
|
-
const db = await this.
|
|
158
|
+
const db = await this.createFork(block.number - 1, l1ToL2Messages);
|
|
155
159
|
const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, true);
|
|
156
160
|
const processed = await this.processTxs(publicProcessor, txs);
|
|
157
161
|
await this.prover.addTxs(processed);
|
|
@@ -214,6 +218,26 @@ export class EpochProvingJob implements Traceable {
|
|
|
214
218
|
}
|
|
215
219
|
}
|
|
216
220
|
|
|
221
|
+
/**
|
|
222
|
+
* Create a new db fork for tx processing, inserting all L1 to L2.
|
|
223
|
+
* REFACTOR: The prover already spawns a db fork of its own for each block, so we may be able to do away with just one fork.
|
|
224
|
+
*/
|
|
225
|
+
private async createFork(blockNumber: number, l1ToL2Messages: Fr[]) {
|
|
226
|
+
const db = await this.dbProvider.fork(blockNumber);
|
|
227
|
+
const l1ToL2MessagesPadded = padArrayEnd(
|
|
228
|
+
l1ToL2Messages,
|
|
229
|
+
Fr.ZERO,
|
|
230
|
+
NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
|
|
231
|
+
'Too many L1 to L2 messages',
|
|
232
|
+
);
|
|
233
|
+
this.log.verbose(`Creating fork at ${blockNumber} with ${l1ToL2Messages.length} L1 to L2 messages`, {
|
|
234
|
+
blockNumber,
|
|
235
|
+
l1ToL2Messages: l1ToL2MessagesPadded.map(m => m.toString()),
|
|
236
|
+
});
|
|
237
|
+
await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
|
|
238
|
+
return db;
|
|
239
|
+
}
|
|
240
|
+
|
|
217
241
|
private progressState(state: EpochProvingJobState) {
|
|
218
242
|
this.checkState();
|
|
219
243
|
this.state = state;
|