@aztec/prover-client 0.57.0 → 0.58.0

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.
Files changed (39) hide show
  1. package/dest/config.d.ts +4 -5
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +11 -2
  4. package/dest/mocks/fixtures.d.ts +6 -6
  5. package/dest/mocks/fixtures.d.ts.map +1 -1
  6. package/dest/mocks/fixtures.js +8 -4
  7. package/dest/mocks/test_context.d.ts +5 -5
  8. package/dest/mocks/test_context.d.ts.map +1 -1
  9. package/dest/mocks/test_context.js +9 -12
  10. package/dest/orchestrator/block-building-helpers.d.ts +12 -12
  11. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  12. package/dest/orchestrator/block-building-helpers.js +4 -2
  13. package/dest/orchestrator/block-proving-state.d.ts +1 -0
  14. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  15. package/dest/orchestrator/block-proving-state.js +2 -1
  16. package/dest/orchestrator/orchestrator.d.ts +4 -5
  17. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  18. package/dest/orchestrator/orchestrator.js +35 -16
  19. package/dest/prover-agent/memory-proving-queue.d.ts +4 -7
  20. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
  21. package/dest/prover-agent/rpc.d.ts.map +1 -1
  22. package/dest/prover-agent/rpc.js +2 -4
  23. package/dest/test/mock_prover.d.ts +7 -13
  24. package/dest/test/mock_prover.d.ts.map +1 -1
  25. package/dest/test/mock_prover.js +16 -22
  26. package/dest/tx-prover/tx-prover.d.ts +2 -3
  27. package/dest/tx-prover/tx-prover.d.ts.map +1 -1
  28. package/dest/tx-prover/tx-prover.js +1 -1
  29. package/package.json +11 -10
  30. package/src/config.ts +20 -11
  31. package/src/mocks/fixtures.ts +21 -7
  32. package/src/mocks/test_context.ts +19 -15
  33. package/src/orchestrator/block-building-helpers.ts +21 -12
  34. package/src/orchestrator/block-proving-state.ts +2 -0
  35. package/src/orchestrator/orchestrator.ts +45 -16
  36. package/src/prover-agent/memory-proving-queue.ts +4 -4
  37. package/src/prover-agent/rpc.ts +0 -3
  38. package/src/test/mock_prover.ts +24 -26
  39. package/src/tx-prover/tx-prover.ts +2 -2
@@ -16,7 +16,7 @@ import {
16
16
  mapProvingRequestTypeToCircuitName,
17
17
  toTxEffect,
18
18
  } from '@aztec/circuit-types';
19
- import { type EpochProver } from '@aztec/circuit-types/interfaces';
19
+ import { type EpochProver, type MerkleTreeWriteOperations } from '@aztec/circuit-types/interfaces';
20
20
  import { type CircuitName } from '@aztec/circuit-types/stats';
21
21
  import {
22
22
  AvmCircuitInputs,
@@ -28,6 +28,7 @@ import {
28
28
  EmptyBlockRootRollupInputs,
29
29
  Fr,
30
30
  type GlobalVariables,
31
+ type Header,
31
32
  type KernelCircuitPublicInputs,
32
33
  L1_TO_L2_MSG_SUBTREE_HEIGHT,
33
34
  L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
@@ -41,6 +42,7 @@ import {
41
42
  type RecursiveProof,
42
43
  type RootParityInput,
43
44
  RootParityInputs,
45
+ TUBE_INDEX,
44
46
  type TUBE_PROOF_LENGTH,
45
47
  TubeInputs,
46
48
  type VMCircuitPublicInputs,
@@ -57,9 +59,9 @@ import { promiseWithResolvers } from '@aztec/foundation/promise';
57
59
  import { type Tuple } from '@aztec/foundation/serialize';
58
60
  import { pushTestData } from '@aztec/foundation/testing';
59
61
  import { elapsed } from '@aztec/foundation/timer';
60
- import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
62
+ import { TubeVk, getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types';
63
+ import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
61
64
  import { Attributes, type TelemetryClient, type Tracer, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
62
- import { type MerkleTreeOperations } from '@aztec/world-state';
63
65
 
64
66
  import { inspect } from 'util';
65
67
 
@@ -112,7 +114,7 @@ export class ProvingOrchestrator implements EpochProver {
112
114
  private metrics: ProvingOrchestratorMetrics;
113
115
 
114
116
  constructor(
115
- private db: MerkleTreeOperations,
117
+ private db: MerkleTreeWriteOperations,
116
118
  private prover: ServerCircuitProver,
117
119
  telemetryClient: TelemetryClient,
118
120
  private readonly proverId: Fr = Fr.ZERO,
@@ -299,12 +301,16 @@ export class ProvingOrchestrator implements EpochProver {
299
301
  [Attributes.BLOCK_TXS_COUNT]: block.transactionsReceived,
300
302
  };
301
303
  })
302
- public async setBlockCompleted(): Promise<L2Block> {
304
+ public async setBlockCompleted(expectedHeader?: Header): Promise<L2Block> {
303
305
  const provingState = this.provingState?.currentBlock;
304
306
  if (!provingState) {
305
307
  throw new Error(`Invalid proving state, call startNewBlock before adding transactions or completing the block`);
306
308
  }
307
309
 
310
+ if (!provingState.verifyState()) {
311
+ throw new Error(`Block proving failed: ${provingState.error}`);
312
+ }
313
+
308
314
  // We may need to pad the rollup with empty transactions
309
315
  const paddingTxCount = provingState.totalNumTxs - provingState.transactionsReceived;
310
316
  if (paddingTxCount > 0 && provingState.totalNumTxs > 2) {
@@ -325,6 +331,7 @@ export class ProvingOrchestrator implements EpochProver {
325
331
  provingState.globalVariables.chainId,
326
332
  provingState.globalVariables.version,
327
333
  getVKTreeRoot(),
334
+ protocolContractTreeRoot,
328
335
  );
329
336
  const txInputs: Array<{ inputs: BaseRollupInputs; snapshot: TreeSnapshots }> = [];
330
337
  for (let i = 0; i < paddingTxCount; i++) {
@@ -342,7 +349,7 @@ export class ProvingOrchestrator implements EpochProver {
342
349
 
343
350
  // And build the block header
344
351
  logger.verbose(`Block ${provingState.globalVariables.blockNumber} completed. Assembling header.`);
345
- await this.buildBlock(provingState);
352
+ await this.buildBlock(provingState, expectedHeader);
346
353
 
347
354
  // If the proofs were faster than the block building, then we need to try the block root rollup again here
348
355
  this.checkAndEnqueueBlockRootRollup(provingState);
@@ -367,16 +374,16 @@ export class ProvingOrchestrator implements EpochProver {
367
374
  [Attributes.EPOCH_SIZE]: this.provingState.totalNumBlocks,
368
375
  };
369
376
  })
370
- private padEpoch() {
377
+ private padEpoch(): Promise<void> {
371
378
  const provingState = this.provingState!;
372
379
  const lastBlock = provingState.currentBlock?.block;
373
380
  if (!lastBlock) {
374
- throw new Error(`Epoch needs at least one completed block in order to be padded`);
381
+ return Promise.reject(new Error(`Epoch needs at least one completed block in order to be padded`));
375
382
  }
376
383
 
377
384
  const paddingBlockCount = Math.max(2, provingState.totalNumBlocks) - provingState.blocks.length;
378
385
  if (paddingBlockCount === 0) {
379
- return;
386
+ return Promise.resolve();
380
387
  }
381
388
 
382
389
  logger.debug(`Padding epoch proof with ${paddingBlockCount} empty block proofs`);
@@ -386,6 +393,7 @@ export class ProvingOrchestrator implements EpochProver {
386
393
  blockHash: lastBlock.header.hash(),
387
394
  globalVariables: lastBlock.header.globalVariables,
388
395
  vkTreeRoot: getVKTreeRoot(),
396
+ protocolContractTreeRoot,
389
397
  proverId: this.proverId,
390
398
  });
391
399
 
@@ -415,9 +423,10 @@ export class ProvingOrchestrator implements EpochProver {
415
423
  }
416
424
  },
417
425
  );
426
+ return Promise.resolve();
418
427
  }
419
428
 
420
- private async buildBlock(provingState: BlockProvingState) {
429
+ private async buildBlock(provingState: BlockProvingState, expectedHeader?: Header) {
421
430
  // Collect all new nullifiers, commitments, and contracts from all txs in this block to build body
422
431
  const gasFees = provingState.globalVariables.gasFees;
423
432
  const nonEmptyTxEffects: TxEffect[] = provingState!.allTxs
@@ -434,6 +443,11 @@ export class ProvingOrchestrator implements EpochProver {
434
443
  this.db,
435
444
  );
436
445
 
446
+ if (expectedHeader && !header.equals(expectedHeader)) {
447
+ logger.error(`Block header mismatch: header=${header} expectedHeader=${expectedHeader}`);
448
+ throw new Error('Block header mismatch');
449
+ }
450
+
437
451
  logger.verbose(`Updating archive tree with block ${provingState.blockNumber} header ${header.hash().toString()}`);
438
452
  await this.db.updateArchive(header);
439
453
 
@@ -486,6 +500,7 @@ export class ProvingOrchestrator implements EpochProver {
486
500
  unprovenPaddingTx.data.constants.txContext.chainId,
487
501
  unprovenPaddingTx.data.constants.txContext.version,
488
502
  getVKTreeRoot(),
503
+ protocolContractTreeRoot,
489
504
  ),
490
505
  signal,
491
506
  provingState.epochNumber,
@@ -566,7 +581,7 @@ export class ProvingOrchestrator implements EpochProver {
566
581
  throw new Error(`Invalid proving state, an epoch must be proven before it can be finalised`);
567
582
  }
568
583
 
569
- this.padEpoch();
584
+ await this.padEpoch();
570
585
 
571
586
  const result = await this.provingPromise!;
572
587
  if (result.status === 'failure') {
@@ -700,7 +715,7 @@ export class ProvingOrchestrator implements EpochProver {
700
715
  makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH),
701
716
  provingState.globalVariables,
702
717
  this.db,
703
- VerificationKeyData.makeFake(),
718
+ TubeVk,
704
719
  ),
705
720
  );
706
721
 
@@ -832,8 +847,14 @@ export class ProvingOrchestrator implements EpochProver {
832
847
  ),
833
848
  result => {
834
849
  logger.debug(`Completed tube proof for tx index: ${txIndex}`);
835
- const nextKernelRequest = txProvingState.getNextPublicKernelFromTubeProof(result.tubeProof, result.tubeVK);
836
- this.checkAndEnqueueNextTxCircuit(provingState, txIndex, result.tubeProof, result.tubeVK, nextKernelRequest);
850
+ const nextKernelRequest = txProvingState.getNextPublicKernelFromTubeProof(result.proof, result.verificationKey);
851
+ this.checkAndEnqueueNextTxCircuit(
852
+ provingState,
853
+ txIndex,
854
+ result.proof,
855
+ result.verificationKey,
856
+ nextKernelRequest,
857
+ );
837
858
  },
838
859
  );
839
860
  }
@@ -1217,7 +1238,10 @@ export class ProvingOrchestrator implements EpochProver {
1217
1238
  logger.warn(
1218
1239
  `Error thrown when proving AVM circuit, but AVM_PROVING_STRICT is off, so faking AVM proof and carrying on. Error: ${err}.`,
1219
1240
  );
1220
- return { proof: makeEmptyProof(), verificationKey: VerificationKeyData.makeFake() };
1241
+ return {
1242
+ proof: makeEmptyProof(),
1243
+ verificationKey: VerificationKeyData.makeFakeHonk(),
1244
+ };
1221
1245
  }
1222
1246
  }
1223
1247
  },
@@ -1270,7 +1294,12 @@ export class ProvingOrchestrator implements EpochProver {
1270
1294
  // Take the final proof and assign it to the base rollup inputs
1271
1295
  txProvingState.baseRollupInputs.kernelData.proof = proof;
1272
1296
  txProvingState.baseRollupInputs.kernelData.vk = verificationKey;
1273
- txProvingState.baseRollupInputs.kernelData.vkIndex = getVKIndex(verificationKey);
1297
+ try {
1298
+ txProvingState.baseRollupInputs.kernelData.vkIndex = getVKIndex(verificationKey);
1299
+ } catch (_ignored) {
1300
+ // TODO(#7410) The VK for the tube won't be in the tree for now, so we manually set it to the tube vk index
1301
+ txProvingState.baseRollupInputs.kernelData.vkIndex = TUBE_INDEX;
1302
+ }
1274
1303
  txProvingState.baseRollupInputs.kernelData.vkPath = getVKSiblingPath(
1275
1304
  txProvingState.baseRollupInputs.kernelData.vkIndex,
1276
1305
  );
@@ -1,5 +1,5 @@
1
1
  import {
2
- type AvmProofAndVerificationKey,
2
+ type ProofAndVerificationKey,
3
3
  type ProvingJob,
4
4
  type ProvingJobSource,
5
5
  type ProvingRequest,
@@ -21,6 +21,7 @@ import type {
21
21
  MergeRollupInputs,
22
22
  NESTED_RECURSIVE_PROOF_LENGTH,
23
23
  PrivateKernelEmptyInputData,
24
+ Proof,
24
25
  PublicKernelCircuitPrivateInputs,
25
26
  PublicKernelCircuitPublicInputs,
26
27
  PublicKernelInnerCircuitPrivateInputs,
@@ -33,7 +34,6 @@ import type {
33
34
  RootRollupPublicInputs,
34
35
  TubeInputs,
35
36
  VMCircuitPublicInputs,
36
- VerificationKeyData,
37
37
  } from '@aztec/circuits.js';
38
38
  import { randomBytes } from '@aztec/foundation/crypto';
39
39
  import { AbortError, TimeoutError } from '@aztec/foundation/error';
@@ -280,7 +280,7 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
280
280
  inputs: TubeInputs,
281
281
  signal?: AbortSignal,
282
282
  epochNumber?: number,
283
- ): Promise<{ tubeVK: VerificationKeyData; tubeProof: RecursiveProof<typeof RECURSIVE_PROOF_LENGTH> }> {
283
+ ): Promise<ProofAndVerificationKey<RecursiveProof<typeof RECURSIVE_PROOF_LENGTH>>> {
284
284
  return this.enqueue({ type: ProvingRequestType.TUBE_PROOF, inputs }, signal, epochNumber);
285
285
  }
286
286
 
@@ -427,7 +427,7 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
427
427
  inputs: AvmCircuitInputs,
428
428
  signal?: AbortSignal,
429
429
  epochNumber?: number,
430
- ): Promise<AvmProofAndVerificationKey> {
430
+ ): Promise<ProofAndVerificationKey<Proof>> {
431
431
  return this.enqueue({ type: ProvingRequestType.PUBLIC_VM, inputs }, signal, epochNumber);
432
432
  }
433
433
 
@@ -1,7 +1,6 @@
1
1
  import { type ProvingJobSource } from '@aztec/circuit-types';
2
2
  import {
3
3
  AvmCircuitInputs,
4
- AvmVerificationKeyData,
5
4
  AztecAddress,
6
5
  BaseOrMergeRollupPublicInputs,
7
6
  BaseParityInputs,
@@ -41,7 +40,6 @@ export function createProvingJobSourceServer(queue: ProvingJobSource): JsonRpcSe
41
40
  return new JsonRpcServer(
42
41
  queue,
43
42
  {
44
- AvmVerificationKeyData,
45
43
  AvmCircuitInputs,
46
44
  BaseOrMergeRollupPublicInputs,
47
45
  BaseParityInputs,
@@ -83,7 +81,6 @@ export function createProvingJobSourceClient(
83
81
  return createJsonRpcClient(
84
82
  url,
85
83
  {
86
- AvmVerificationKeyData,
87
84
  AvmCircuitInputs,
88
85
  BaseOrMergeRollupPublicInputs,
89
86
  BaseParityInputs,
@@ -1,11 +1,12 @@
1
1
  import {
2
+ type ProofAndVerificationKey,
2
3
  type PublicInputsAndRecursiveProof,
3
- type PublicInputsAndTubeProof,
4
4
  type ServerCircuitProver,
5
+ makeProofAndVerificationKey,
5
6
  makePublicInputsAndRecursiveProof,
6
7
  } from '@aztec/circuit-types';
7
8
  import {
8
- AvmVerificationKeyData,
9
+ AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS,
9
10
  type BaseOrMergeRollupPublicInputs,
10
11
  type BlockRootOrBlockMergePublicInputs,
11
12
  type KernelCircuitPublicInputs,
@@ -13,6 +14,7 @@ import {
13
14
  RECURSIVE_PROOF_LENGTH,
14
15
  type RecursiveProof,
15
16
  type RootRollupPublicInputs,
17
+ TUBE_PROOF_LENGTH,
16
18
  type VMCircuitPublicInputs,
17
19
  VerificationKeyData,
18
20
  makeEmptyProof,
@@ -33,10 +35,10 @@ export class MockProver implements ServerCircuitProver {
33
35
 
34
36
  getAvmProof() {
35
37
  return Promise.resolve(
36
- Promise.resolve({
37
- proof: makeEmptyProof(),
38
- verificationKey: AvmVerificationKeyData.makeFake(),
39
- }),
38
+ makeProofAndVerificationKey(
39
+ makeEmptyProof(),
40
+ VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS),
41
+ ),
40
42
  );
41
43
  }
42
44
 
@@ -53,7 +55,7 @@ export class MockProver implements ServerCircuitProver {
53
55
  makePublicInputsAndRecursiveProof(
54
56
  makeBaseOrMergeRollupPublicInputs(),
55
57
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
56
- VerificationKeyData.makeFake(),
58
+ VerificationKeyData.makeFakeHonk(),
57
59
  ),
58
60
  );
59
61
  }
@@ -63,7 +65,7 @@ export class MockProver implements ServerCircuitProver {
63
65
  makePublicInputsAndRecursiveProof(
64
66
  makeBaseOrMergeRollupPublicInputs(),
65
67
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
66
- VerificationKeyData.makeFake(),
68
+ VerificationKeyData.makeFakeHonk(),
67
69
  ),
68
70
  );
69
71
  }
@@ -73,7 +75,7 @@ export class MockProver implements ServerCircuitProver {
73
75
  makePublicInputsAndRecursiveProof(
74
76
  makeBlockRootOrBlockMergeRollupPublicInputs(),
75
77
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
76
- VerificationKeyData.makeFake(),
78
+ VerificationKeyData.makeFakeHonk(),
77
79
  ),
78
80
  );
79
81
  }
@@ -83,7 +85,7 @@ export class MockProver implements ServerCircuitProver {
83
85
  makePublicInputsAndRecursiveProof(
84
86
  makeBlockRootOrBlockMergeRollupPublicInputs(),
85
87
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
86
- VerificationKeyData.makeFake(),
88
+ VerificationKeyData.makeFakeHonk(),
87
89
  ),
88
90
  );
89
91
  }
@@ -93,7 +95,7 @@ export class MockProver implements ServerCircuitProver {
93
95
  makePublicInputsAndRecursiveProof(
94
96
  makeBlockRootOrBlockMergeRollupPublicInputs(),
95
97
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
96
- VerificationKeyData.makeFake(),
98
+ VerificationKeyData.makeFakeHonk(),
97
99
  ),
98
100
  );
99
101
  }
@@ -103,17 +105,17 @@ export class MockProver implements ServerCircuitProver {
103
105
  makePublicInputsAndRecursiveProof(
104
106
  makeKernelCircuitPublicInputs(),
105
107
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
106
- VerificationKeyData.makeFake(),
108
+ VerificationKeyData.makeFakeHonk(),
107
109
  ),
108
110
  );
109
111
  }
110
112
 
111
- getEmptyTubeProof(): Promise<PublicInputsAndTubeProof<KernelCircuitPublicInputs>> {
113
+ getEmptyTubeProof(): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs>> {
112
114
  return Promise.resolve(
113
115
  makePublicInputsAndRecursiveProof(
114
116
  makeKernelCircuitPublicInputs(),
115
117
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
116
- VerificationKeyData.makeFake(),
118
+ VerificationKeyData.makeFakeHonk(),
117
119
  ),
118
120
  );
119
121
  }
@@ -123,7 +125,7 @@ export class MockProver implements ServerCircuitProver {
123
125
  makePublicInputsAndRecursiveProof(
124
126
  makeVMCircuitPublicInputs(),
125
127
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
126
- VerificationKeyData.makeFake(),
128
+ VerificationKeyData.makeFakeHonk(),
127
129
  ),
128
130
  );
129
131
  }
@@ -133,7 +135,7 @@ export class MockProver implements ServerCircuitProver {
133
135
  makePublicInputsAndRecursiveProof(
134
136
  makePublicKernelCircuitPublicInputs(),
135
137
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
136
- VerificationKeyData.makeFake(),
138
+ VerificationKeyData.makeFakeHonk(),
137
139
  ),
138
140
  );
139
141
  }
@@ -143,7 +145,7 @@ export class MockProver implements ServerCircuitProver {
143
145
  makePublicInputsAndRecursiveProof(
144
146
  makeKernelCircuitPublicInputs(),
145
147
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
146
- VerificationKeyData.makeFake(),
148
+ VerificationKeyData.makeFakeHonk(),
147
149
  ),
148
150
  );
149
151
  }
@@ -153,18 +155,14 @@ export class MockProver implements ServerCircuitProver {
153
155
  makePublicInputsAndRecursiveProof(
154
156
  makeRootRollupPublicInputs(),
155
157
  makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
156
- VerificationKeyData.makeFake(),
158
+ VerificationKeyData.makeFakeHonk(),
157
159
  ),
158
160
  );
159
161
  }
160
162
 
161
- getTubeProof(): Promise<{
162
- tubeVK: VerificationKeyData;
163
- tubeProof: RecursiveProof<typeof RECURSIVE_PROOF_LENGTH>;
164
- }> {
165
- return Promise.resolve({
166
- tubeVK: VerificationKeyData.makeFake(),
167
- tubeProof: makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
168
- });
163
+ getTubeProof(): Promise<ProofAndVerificationKey<RecursiveProof<typeof TUBE_PROOF_LENGTH>>> {
164
+ return Promise.resolve(
165
+ makeProofAndVerificationKey(makeRecursiveProof(TUBE_PROOF_LENGTH), VerificationKeyData.makeFake()),
166
+ );
169
167
  }
170
168
  }
@@ -2,13 +2,13 @@ import { BBNativeRollupProver, TestCircuitProver } from '@aztec/bb-prover';
2
2
  import {
3
3
  type EpochProver,
4
4
  type EpochProverManager,
5
+ type MerkleTreeWriteOperations,
5
6
  type ProvingJobSource,
6
7
  type ServerCircuitProver,
7
8
  } from '@aztec/circuit-types/interfaces';
8
9
  import { Fr } from '@aztec/circuits.js';
9
10
  import { NativeACVMSimulator } from '@aztec/simulator';
10
11
  import { type TelemetryClient } from '@aztec/telemetry-client';
11
- import { type MerkleTreeOperations } from '@aztec/world-state';
12
12
 
13
13
  import { type ProverClientConfig } from '../config.js';
14
14
  import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
@@ -33,7 +33,7 @@ export class TxProver implements EpochProverManager {
33
33
  this.queue = new MemoryProvingQueue(telemetry, config.proverJobTimeoutMs, config.proverJobPollIntervalMs);
34
34
  }
35
35
 
36
- public createEpochProver(db: MerkleTreeOperations): EpochProver {
36
+ public createEpochProver(db: MerkleTreeWriteOperations): EpochProver {
37
37
  return new ProvingOrchestrator(db, this.queue, this.telemetry, this.config.proverId);
38
38
  }
39
39