@aztec/prover-client 0.69.1 → 0.71.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 (130) hide show
  1. package/dest/bin/get-proof-inputs.d.ts +2 -0
  2. package/dest/bin/get-proof-inputs.d.ts.map +1 -0
  3. package/dest/bin/get-proof-inputs.js +50 -0
  4. package/dest/block_builder/light.d.ts +3 -5
  5. package/dest/block_builder/light.d.ts.map +1 -1
  6. package/dest/block_builder/light.js +9 -22
  7. package/dest/config.d.ts +2 -1
  8. package/dest/config.d.ts.map +1 -1
  9. package/dest/config.js +3 -2
  10. package/dest/mocks/fixtures.d.ts +1 -1
  11. package/dest/mocks/fixtures.d.ts.map +1 -1
  12. package/dest/mocks/fixtures.js +2 -2
  13. package/dest/mocks/test_context.d.ts +1 -1
  14. package/dest/mocks/test_context.d.ts.map +1 -1
  15. package/dest/mocks/test_context.js +11 -12
  16. package/dest/orchestrator/block-building-helpers.d.ts +15 -29
  17. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  18. package/dest/orchestrator/block-building-helpers.js +51 -58
  19. package/dest/orchestrator/block-proving-state.d.ts +40 -44
  20. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  21. package/dest/orchestrator/block-proving-state.js +149 -85
  22. package/dest/orchestrator/epoch-proving-state.d.ts +23 -30
  23. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  24. package/dest/orchestrator/epoch-proving-state.js +92 -65
  25. package/dest/orchestrator/orchestrator.d.ts +17 -48
  26. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  27. package/dest/orchestrator/orchestrator.js +208 -351
  28. package/dest/orchestrator/tx-proving-state.d.ts +10 -6
  29. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  30. package/dest/orchestrator/tx-proving-state.js +57 -46
  31. package/dest/prover-agent/memory-proving-queue.d.ts +4 -4
  32. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
  33. package/dest/prover-agent/memory-proving-queue.js +5 -5
  34. package/dest/prover-agent/prover-agent.d.ts +0 -2
  35. package/dest/prover-agent/prover-agent.d.ts.map +1 -1
  36. package/dest/prover-agent/prover-agent.js +7 -9
  37. package/dest/prover-client/factory.d.ts.map +1 -1
  38. package/dest/prover-client/factory.js +3 -3
  39. package/dest/prover-client/prover-client.d.ts +4 -2
  40. package/dest/prover-client/prover-client.d.ts.map +1 -1
  41. package/dest/prover-client/prover-client.js +16 -15
  42. package/dest/prover-client/server-epoch-prover.d.ts +25 -0
  43. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -0
  44. package/dest/prover-client/server-epoch-prover.js +40 -0
  45. package/dest/proving_broker/broker_prover_facade.d.ts +19 -7
  46. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  47. package/dest/proving_broker/broker_prover_facade.js +271 -49
  48. package/dest/proving_broker/config.d.ts +61 -0
  49. package/dest/proving_broker/config.d.ts.map +1 -0
  50. package/dest/proving_broker/config.js +83 -0
  51. package/dest/proving_broker/factory.d.ts +1 -1
  52. package/dest/proving_broker/factory.d.ts.map +1 -1
  53. package/dest/proving_broker/factory.js +4 -7
  54. package/dest/proving_broker/fixtures.d.ts +5 -0
  55. package/dest/proving_broker/fixtures.d.ts.map +1 -0
  56. package/dest/proving_broker/fixtures.js +12 -0
  57. package/dest/proving_broker/index.d.ts +2 -1
  58. package/dest/proving_broker/index.d.ts.map +1 -1
  59. package/dest/proving_broker/index.js +3 -2
  60. package/dest/proving_broker/proof_store/factory.d.ts +6 -0
  61. package/dest/proving_broker/proof_store/factory.d.ts.map +1 -0
  62. package/dest/proving_broker/proof_store/factory.js +39 -0
  63. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +13 -0
  64. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -0
  65. package/dest/proving_broker/proof_store/gcs_proof_store.js +46 -0
  66. package/dest/proving_broker/proof_store/index.d.ts +4 -0
  67. package/dest/proving_broker/proof_store/index.d.ts.map +1 -0
  68. package/dest/proving_broker/proof_store/index.js +4 -0
  69. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +14 -0
  70. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -0
  71. package/dest/proving_broker/proof_store/inline_proof_store.js +37 -0
  72. package/dest/proving_broker/{proof_store.d.ts → proof_store/proof_store.d.ts} +1 -12
  73. package/dest/proving_broker/proof_store/proof_store.d.ts.map +1 -0
  74. package/dest/proving_broker/proof_store/proof_store.js +2 -0
  75. package/dest/proving_broker/proving_agent.d.ts +4 -4
  76. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  77. package/dest/proving_broker/proving_agent.js +5 -5
  78. package/dest/proving_broker/proving_broker.d.ts +16 -12
  79. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  80. package/dest/proving_broker/proving_broker.js +307 -274
  81. package/dest/proving_broker/proving_broker_database/memory.d.ts +4 -2
  82. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  83. package/dest/proving_broker/proving_broker_database/memory.js +17 -4
  84. package/dest/proving_broker/proving_broker_database/persisted.d.ts +10 -6
  85. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  86. package/dest/proving_broker/proving_broker_database/persisted.js +106 -14
  87. package/dest/proving_broker/proving_broker_database.d.ts +7 -3
  88. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  89. package/dest/proving_broker/proving_job_controller.js +4 -4
  90. package/dest/proving_broker/rpc.d.ts.map +1 -1
  91. package/dest/proving_broker/rpc.js +4 -4
  92. package/dest/test/mock_prover.d.ts +8 -8
  93. package/dest/test/mock_prover.d.ts.map +1 -1
  94. package/dest/test/mock_prover.js +9 -10
  95. package/package.json +14 -12
  96. package/src/bin/get-proof-inputs.ts +60 -0
  97. package/src/block_builder/light.ts +7 -31
  98. package/src/config.ts +4 -4
  99. package/src/mocks/fixtures.ts +1 -1
  100. package/src/mocks/test_context.ts +9 -11
  101. package/src/orchestrator/block-building-helpers.ts +360 -402
  102. package/src/orchestrator/block-proving-state.ts +251 -121
  103. package/src/orchestrator/epoch-proving-state.ts +159 -88
  104. package/src/orchestrator/orchestrator.ts +262 -542
  105. package/src/orchestrator/tx-proving-state.ts +30 -18
  106. package/src/prover-agent/memory-proving-queue.ts +12 -16
  107. package/src/prover-agent/prover-agent.ts +14 -8
  108. package/src/prover-client/factory.ts +2 -3
  109. package/src/prover-client/prover-client.ts +17 -20
  110. package/src/prover-client/server-epoch-prover.ts +44 -0
  111. package/src/proving_broker/broker_prover_facade.ts +347 -67
  112. package/src/proving_broker/config.ts +93 -0
  113. package/src/proving_broker/factory.ts +11 -10
  114. package/src/proving_broker/fixtures.ts +14 -0
  115. package/src/proving_broker/index.ts +2 -1
  116. package/src/proving_broker/proof_store/factory.ts +42 -0
  117. package/src/proving_broker/proof_store/gcs_proof_store.ts +72 -0
  118. package/src/proving_broker/proof_store/index.ts +3 -0
  119. package/src/proving_broker/{proof_store.ts → proof_store/inline_proof_store.ts} +1 -44
  120. package/src/proving_broker/proof_store/proof_store.ts +54 -0
  121. package/src/proving_broker/proving_agent.ts +11 -5
  122. package/src/proving_broker/proving_broker.ts +122 -73
  123. package/src/proving_broker/proving_broker_database/memory.ts +24 -4
  124. package/src/proving_broker/proving_broker_database/persisted.ts +142 -20
  125. package/src/proving_broker/proving_broker_database.ts +8 -3
  126. package/src/proving_broker/proving_job_controller.ts +5 -5
  127. package/src/proving_broker/rpc.ts +2 -3
  128. package/src/test/mock_prover.ts +12 -18
  129. package/dest/proving_broker/proof_store.d.ts.map +0 -1
  130. package/dest/proving_broker/proof_store.js +0 -37
@@ -1,4 +1,5 @@
1
1
  import { type MerkleTreeId, type ProcessedTx, type ProofAndVerificationKey } from '@aztec/circuit-types';
2
+ import { type CircuitName } from '@aztec/circuit-types/stats';
2
3
  import {
3
4
  type AVM_PROOF_LENGTH_IN_FIELDS,
4
5
  AVM_VK_INDEX,
@@ -18,7 +19,7 @@ import {
18
19
  PublicTubeData,
19
20
  TubeInputs,
20
21
  } from '@aztec/circuits.js/rollup';
21
- import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types';
22
+ import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vks';
22
23
 
23
24
  /**
24
25
  * Helper class to manage the proving cycle of a transaction
@@ -51,15 +52,34 @@ export class TxProvingState {
51
52
  return this.processedTx.avmProvingRequest!.inputs;
52
53
  }
53
54
 
54
- public getPrivateBaseInputs() {
55
+ public getBaseRollupTypeAndInputs() {
55
56
  if (this.requireAvmProof) {
56
- throw new Error('Should create public base rollup for a tx requiring avm proof.');
57
+ return {
58
+ rollupType: 'public-base-rollup' satisfies CircuitName,
59
+ inputs: this.#getPublicBaseInputs(),
60
+ };
61
+ } else {
62
+ return {
63
+ rollupType: 'private-base-rollup' satisfies CircuitName,
64
+ inputs: this.#getPrivateBaseInputs(),
65
+ };
57
66
  }
67
+ }
68
+
69
+ public setTubeProof(tubeProofAndVk: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>) {
70
+ this.tube = tubeProofAndVk;
71
+ }
72
+
73
+ public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>) {
74
+ this.avm = avmProofAndVk;
75
+ }
76
+
77
+ #getPrivateBaseInputs() {
58
78
  if (!this.tube) {
59
79
  throw new Error('Tx not ready for proving base rollup.');
60
80
  }
61
81
 
62
- const vkData = this.getTubeVkData();
82
+ const vkData = this.#getTubeVkData();
63
83
  const tubeData = new PrivateTubeData(
64
84
  this.processedTx.data.toPrivateToRollupKernelCircuitPublicInputs(),
65
85
  this.tube.proof,
@@ -72,7 +92,7 @@ export class TxProvingState {
72
92
  return new PrivateBaseRollupInputs(tubeData, this.baseRollupHints);
73
93
  }
74
94
 
75
- public getPublicBaseInputs() {
95
+ #getPublicBaseInputs() {
76
96
  if (!this.processedTx.avmProvingRequest) {
77
97
  throw new Error('Should create private base rollup for a tx not requiring avm proof.');
78
98
  }
@@ -84,15 +104,15 @@ export class TxProvingState {
84
104
  }
85
105
 
86
106
  const tubeData = new PublicTubeData(
87
- this.processedTx.data.toPublicKernelCircuitPublicInputs(),
107
+ this.processedTx.data.toPrivateToPublicKernelCircuitPublicInputs(),
88
108
  this.tube.proof,
89
- this.getTubeVkData(),
109
+ this.#getTubeVkData(),
90
110
  );
91
111
 
92
112
  const avmProofData = new AvmProofData(
93
113
  this.processedTx.avmProvingRequest.inputs.output,
94
114
  this.avm.proof,
95
- this.getAvmVkData(),
115
+ this.#getAvmVkData(),
96
116
  );
97
117
 
98
118
  if (!(this.baseRollupHints instanceof PublicBaseRollupHints)) {
@@ -102,15 +122,7 @@ export class TxProvingState {
102
122
  return new PublicBaseRollupInputs(tubeData, avmProofData, this.baseRollupHints);
103
123
  }
104
124
 
105
- public assignTubeProof(tubeProofAndVk: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>) {
106
- this.tube = tubeProofAndVk;
107
- }
108
-
109
- public assignAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>) {
110
- this.avm = avmProofAndVk;
111
- }
112
-
113
- private getTubeVkData() {
125
+ #getTubeVkData() {
114
126
  let vkIndex = TUBE_VK_INDEX;
115
127
  try {
116
128
  vkIndex = getVKIndex(this.tube!.verificationKey);
@@ -122,7 +134,7 @@ export class TxProvingState {
122
134
  return new VkWitnessData(this.tube!.verificationKey, vkIndex, vkPath);
123
135
  }
124
136
 
125
- private getAvmVkData() {
137
+ #getAvmVkData() {
126
138
  const vkIndex = AVM_VK_INDEX;
127
139
  const vkPath = getVKSiblingPath(vkIndex);
128
140
  return new VkWitnessData(this.avm!.verificationKey, AVM_VK_INDEX, vkPath);
@@ -15,8 +15,6 @@ import type {
15
15
  NESTED_RECURSIVE_PROOF_LENGTH,
16
16
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
17
17
  ParityPublicInputs,
18
- PrivateKernelEmptyInputData,
19
- PrivateToRollupKernelCircuitPublicInputs,
20
18
  RECURSIVE_PROOF_LENGTH,
21
19
  RootParityInputs,
22
20
  TUBE_PROOF_LENGTH,
@@ -32,6 +30,7 @@ import {
32
30
  type PublicBaseRollupInputs,
33
31
  type RootRollupInputs,
34
32
  type RootRollupPublicInputs,
33
+ type SingleTxBlockRootRollupInputs,
35
34
  type TubeInputs,
36
35
  } from '@aztec/circuits.js/rollup';
37
36
  import { randomBytes } from '@aztec/foundation/crypto';
@@ -41,7 +40,7 @@ import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from
41
40
  import { PriorityMemoryQueue } from '@aztec/foundation/queue';
42
41
  import { type TelemetryClient, type Tracer, trackSpan } from '@aztec/telemetry-client';
43
42
 
44
- import { InlineProofStore, type ProofStore } from '../proving_broker/proof_store.js';
43
+ import { InlineProofStore, type ProofStore } from '../proving_broker/proof_store/index.js';
45
44
  import { ProvingQueueMetrics } from './queue_metrics.js';
46
45
 
47
46
  type ProvingJobWithResolvers<T extends ProvingRequestType = ProvingRequestType> = ProvingJob &
@@ -271,19 +270,6 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
271
270
  return promise.then(({ result }) => result);
272
271
  }
273
272
 
274
- getEmptyPrivateKernelProof(
275
- inputs: PrivateKernelEmptyInputData,
276
- signal?: AbortSignal,
277
- epochNumber?: number,
278
- ): Promise<
279
- PublicInputsAndRecursiveProof<
280
- PrivateToRollupKernelCircuitPublicInputs,
281
- typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
282
- >
283
- > {
284
- return this.enqueue(ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs, signal, epochNumber);
285
- }
286
-
287
273
  getTubeProof(
288
274
  inputs: TubeInputs,
289
275
  signal?: AbortSignal,
@@ -364,6 +350,16 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
364
350
  return this.enqueue(ProvingRequestType.BLOCK_ROOT_ROLLUP, inputs, signal, epochNumber);
365
351
  }
366
352
 
353
+ getSingleTxBlockRootRollupProof(
354
+ inputs: SingleTxBlockRootRollupInputs,
355
+ signal?: AbortSignal,
356
+ epochNumber?: number,
357
+ ): Promise<
358
+ PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
359
+ > {
360
+ return this.enqueue(ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP, inputs, signal, epochNumber);
361
+ }
362
+
367
363
  getEmptyBlockRootRollupProof(
368
364
  inputs: EmptyBlockRootRollupInputs,
369
365
  signal?: AbortSignal,
@@ -11,10 +11,16 @@ import {
11
11
  import { createLogger } from '@aztec/foundation/log';
12
12
  import { RunningPromise } from '@aztec/foundation/running-promise';
13
13
  import { elapsed } from '@aztec/foundation/timer';
14
- import { Attributes, type TelemetryClient, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
15
- import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
14
+ import {
15
+ Attributes,
16
+ type TelemetryClient,
17
+ type Traceable,
18
+ type Tracer,
19
+ getTelemetryClient,
20
+ trackSpan,
21
+ } from '@aztec/telemetry-client';
16
22
 
17
- import { InlineProofStore } from '../proving_broker/proof_store.js';
23
+ import { InlineProofStore } from '../proving_broker/proof_store/index.js';
18
24
 
19
25
  const PRINT_THRESHOLD_NS = 6e10; // 60 seconds
20
26
 
@@ -42,7 +48,7 @@ export class ProverAgent implements ProverAgentApi, Traceable {
42
48
  /** How long to wait between jobs */
43
49
  private pollIntervalMs = 100,
44
50
  /** Telemetry client */
45
- private telemetry: TelemetryClient = new NoopTelemetryClient(),
51
+ telemetry: TelemetryClient = getTelemetryClient(),
46
52
  /** Logger */
47
53
  private log = createLogger('prover-client:prover-agent'),
48
54
  ) {
@@ -209,6 +215,10 @@ export class ProverAgent implements ProverAgentApi, Traceable {
209
215
  return this.circuitProver.getBlockRootRollupProof(inputs);
210
216
  }
211
217
 
218
+ case ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP: {
219
+ return this.circuitProver.getSingleTxBlockRootRollupProof(inputs);
220
+ }
221
+
212
222
  case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
213
223
  return this.circuitProver.getBlockMergeRollupProof(inputs);
214
224
  }
@@ -225,10 +235,6 @@ export class ProverAgent implements ProverAgentApi, Traceable {
225
235
  return this.circuitProver.getRootParityProof(inputs);
226
236
  }
227
237
 
228
- case ProvingRequestType.PRIVATE_KERNEL_EMPTY: {
229
- return this.circuitProver.getEmptyPrivateKernelProof(inputs);
230
- }
231
-
232
238
  case ProvingRequestType.TUBE_PROOF: {
233
239
  return this.circuitProver.getTubeProof(inputs);
234
240
  }
@@ -1,6 +1,5 @@
1
1
  import { type ForkMerkleTreeOperations, type ProvingJobBroker } from '@aztec/circuit-types';
2
- import { type TelemetryClient } from '@aztec/telemetry-client';
3
- import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
2
+ import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
4
3
 
5
4
  import { type ProverClientConfig } from '../config.js';
6
5
  import { ProverClient } from './prover-client.js';
@@ -9,7 +8,7 @@ export function createProverClient(
9
8
  config: ProverClientConfig,
10
9
  worldState: ForkMerkleTreeOperations,
11
10
  broker: ProvingJobBroker,
12
- telemetry: TelemetryClient = new NoopTelemetryClient(),
11
+ telemetry: TelemetryClient = getTelemetryClient(),
13
12
  ) {
14
13
  return ProverClient.new(config, worldState, broker, telemetry);
15
14
  }
@@ -12,39 +12,40 @@ import {
12
12
  import { Fr } from '@aztec/circuits.js';
13
13
  import { times } from '@aztec/foundation/collection';
14
14
  import { createLogger } from '@aztec/foundation/log';
15
- import { NativeACVMSimulator } from '@aztec/simulator';
16
- import { type TelemetryClient } from '@aztec/telemetry-client';
15
+ import { NativeACVMSimulator } from '@aztec/simulator/server';
16
+ import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
17
17
 
18
18
  import { type ProverClientConfig } from '../config.js';
19
19
  import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
20
20
  import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
21
- import { InlineProofStore } from '../proving_broker/proof_store.js';
21
+ import { InlineProofStore, type ProofStore, createProofStore } from '../proving_broker/proof_store/index.js';
22
22
  import { ProvingAgent } from '../proving_broker/proving_agent.js';
23
+ import { ServerEpochProver } from './server-epoch-prover.js';
23
24
 
24
25
  /** Manages proving of epochs by orchestrating the proving of individual blocks relying on a pool of prover agents. */
25
26
  export class ProverClient implements EpochProverManager {
26
27
  private running = false;
27
28
  private agents: ProvingAgent[] = [];
28
29
 
30
+ private proofStore: ProofStore;
31
+ private failedProofStore: ProofStore | undefined;
32
+
29
33
  private constructor(
30
34
  private config: ProverClientConfig,
31
35
  private worldState: ForkMerkleTreeOperations,
32
- private telemetry: TelemetryClient,
33
36
  private orchestratorClient: ProvingJobProducer,
34
37
  private agentClient?: ProvingJobConsumer,
38
+ private telemetry: TelemetryClient = getTelemetryClient(),
35
39
  private log = createLogger('prover-client:tx-prover'),
36
40
  ) {
37
- // TODO(palla/prover-node): Cache the paddingTx here, and not in each proving orchestrator,
38
- // so it can be reused across multiple ones and not recomputed every time.
41
+ this.proofStore = new InlineProofStore();
42
+ this.failedProofStore = this.config.failedProofStore ? createProofStore(this.config.failedProofStore) : undefined;
39
43
  }
40
44
 
41
45
  public createEpochProver(): EpochProver {
42
- return new ProvingOrchestrator(
43
- this.worldState,
44
- new BrokerCircuitProverFacade(this.orchestratorClient),
45
- this.telemetry,
46
- this.config.proverId,
47
- );
46
+ const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore);
47
+ const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.telemetry);
48
+ return new ServerEpochProver(facade, orchestrator);
48
49
  }
49
50
 
50
51
  public getProverId(): Fr {
@@ -62,10 +63,6 @@ export class ProverClient implements EpochProverManager {
62
63
  await this.createAndStartAgents();
63
64
  }
64
65
 
65
- if (!this.config.realProofs && newConfig.realProofs) {
66
- // TODO(palla/prover-node): Reset padding tx here once we cache it at this class
67
- }
68
-
69
66
  this.config = newConfig;
70
67
  }
71
68
 
@@ -102,9 +99,9 @@ export class ProverClient implements EpochProverManager {
102
99
  config: ProverClientConfig,
103
100
  worldState: ForkMerkleTreeOperations,
104
101
  broker: ProvingJobBroker,
105
- telemetry: TelemetryClient,
102
+ telemetry: TelemetryClient = getTelemetryClient(),
106
103
  ) {
107
- const prover = new ProverClient(config, worldState, telemetry, broker, broker);
104
+ const prover = new ProverClient(config, worldState, broker, broker, telemetry);
108
105
  await prover.start();
109
106
  return prover;
110
107
  }
@@ -135,9 +132,9 @@ export class ProverClient implements EpochProverManager {
135
132
  this.agentClient!,
136
133
  proofStore,
137
134
  prover,
138
- this.telemetry,
139
135
  [],
140
136
  this.config.proverAgentPollIntervalMs,
137
+ this.telemetry,
141
138
  ),
142
139
  );
143
140
 
@@ -161,5 +158,5 @@ export function buildServerCircuitProver(
161
158
  ? new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath)
162
159
  : undefined;
163
160
 
164
- return Promise.resolve(new TestCircuitProver(telemetry, simulationProvider, config));
161
+ return Promise.resolve(new TestCircuitProver(simulationProvider, config, telemetry));
165
162
  }
@@ -0,0 +1,44 @@
1
+ import { type EpochProver, type L2Block, type ProcessedTx, type Tx } from '@aztec/circuit-types';
2
+ import { type BlockHeader, type Fr, type GlobalVariables, type Proof } from '@aztec/circuits.js';
3
+ import { type RootRollupPublicInputs } from '@aztec/circuits.js/rollup';
4
+
5
+ import { type ProvingOrchestrator } from '../orchestrator/orchestrator.js';
6
+ import { type BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
7
+
8
+ /** Encapsulates the proving orchestrator and the broker facade */
9
+ export class ServerEpochProver implements EpochProver {
10
+ constructor(private facade: BrokerCircuitProverFacade, private orchestrator: ProvingOrchestrator) {}
11
+
12
+ startNewEpoch(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number): void {
13
+ this.orchestrator.startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks);
14
+ this.facade.start();
15
+ }
16
+ startTubeCircuits(txs: Tx[]): void {
17
+ this.orchestrator.startTubeCircuits(txs);
18
+ }
19
+ setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise<L2Block> {
20
+ return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
21
+ }
22
+ finaliseEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof }> {
23
+ return this.orchestrator.finaliseEpoch();
24
+ }
25
+ cancel(): void {
26
+ this.orchestrator.cancel();
27
+ }
28
+ getProverId(): Fr {
29
+ return this.orchestrator.getProverId();
30
+ }
31
+ getBlock(index: number): L2Block {
32
+ return this.orchestrator.getBlock(index);
33
+ }
34
+ async stop(): Promise<void> {
35
+ await this.facade.stop();
36
+ await this.orchestrator.stop();
37
+ }
38
+ startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void> {
39
+ return this.orchestrator.startNewBlock(globalVariables, l1ToL2Messages);
40
+ }
41
+ addTxs(txs: ProcessedTx[]): Promise<void> {
42
+ return this.orchestrator.addTxs(txs);
43
+ }
44
+ }