@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":"AAKA,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;AAEzC,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,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"}
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.dbProvider.fork(block.number - 1);
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-nightly.20250903",
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-nightly.20250903",
60
- "@aztec/bb-prover": "2.0.0-nightly.20250903",
61
- "@aztec/blob-lib": "2.0.0-nightly.20250903",
62
- "@aztec/blob-sink": "2.0.0-nightly.20250903",
63
- "@aztec/constants": "2.0.0-nightly.20250903",
64
- "@aztec/epoch-cache": "2.0.0-nightly.20250903",
65
- "@aztec/ethereum": "2.0.0-nightly.20250903",
66
- "@aztec/foundation": "2.0.0-nightly.20250903",
67
- "@aztec/kv-store": "2.0.0-nightly.20250903",
68
- "@aztec/l1-artifacts": "2.0.0-nightly.20250903",
69
- "@aztec/node-keystore": "2.0.0-nightly.20250903",
70
- "@aztec/node-lib": "2.0.0-nightly.20250903",
71
- "@aztec/noir-protocol-circuits-types": "2.0.0-nightly.20250903",
72
- "@aztec/p2p": "2.0.0-nightly.20250903",
73
- "@aztec/protocol-contracts": "2.0.0-nightly.20250903",
74
- "@aztec/prover-client": "2.0.0-nightly.20250903",
75
- "@aztec/sequencer-client": "2.0.0-nightly.20250903",
76
- "@aztec/simulator": "2.0.0-nightly.20250903",
77
- "@aztec/stdlib": "2.0.0-nightly.20250903",
78
- "@aztec/telemetry-client": "2.0.0-nightly.20250903",
79
- "@aztec/world-state": "2.0.0-nightly.20250903",
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.dbProvider.fork(block.number - 1);
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;