@aztec/prover-client 0.0.1-fake-ceab37513c → 0.0.2-commit.217f559981

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 (148) hide show
  1. package/dest/config.d.ts +2 -2
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +2 -2
  4. package/dest/index.d.ts +1 -1
  5. package/dest/light/index.d.ts +2 -0
  6. package/dest/light/index.d.ts.map +1 -0
  7. package/dest/light/index.js +1 -0
  8. package/dest/light/lightweight_checkpoint_builder.d.ts +48 -0
  9. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  10. package/dest/light/lightweight_checkpoint_builder.js +202 -0
  11. package/dest/mocks/fixtures.d.ts +5 -5
  12. package/dest/mocks/fixtures.d.ts.map +1 -1
  13. package/dest/mocks/fixtures.js +35 -16
  14. package/dest/mocks/test_context.d.ts +39 -33
  15. package/dest/mocks/test_context.d.ts.map +1 -1
  16. package/dest/mocks/test_context.js +141 -82
  17. package/dest/orchestrator/block-building-helpers.d.ts +34 -34
  18. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  19. package/dest/orchestrator/block-building-helpers.js +151 -187
  20. package/dest/orchestrator/block-proving-state.d.ts +71 -55
  21. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  22. package/dest/orchestrator/block-proving-state.js +280 -185
  23. package/dest/orchestrator/checkpoint-proving-state.d.ts +76 -0
  24. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/checkpoint-proving-state.js +243 -0
  26. package/dest/orchestrator/epoch-proving-state.d.ts +40 -32
  27. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  28. package/dest/orchestrator/epoch-proving-state.js +165 -85
  29. package/dest/orchestrator/index.d.ts +1 -1
  30. package/dest/orchestrator/orchestrator.d.ts +51 -35
  31. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  32. package/dest/orchestrator/orchestrator.js +847 -329
  33. package/dest/orchestrator/orchestrator_metrics.d.ts +1 -3
  34. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  35. package/dest/orchestrator/orchestrator_metrics.js +2 -15
  36. package/dest/orchestrator/tx-proving-state.d.ts +15 -12
  37. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  38. package/dest/orchestrator/tx-proving-state.js +27 -33
  39. package/dest/prover-client/factory.d.ts +3 -3
  40. package/dest/prover-client/factory.d.ts.map +1 -1
  41. package/dest/prover-client/index.d.ts +1 -1
  42. package/dest/prover-client/prover-client.d.ts +5 -5
  43. package/dest/prover-client/prover-client.d.ts.map +1 -1
  44. package/dest/prover-client/prover-client.js +15 -10
  45. package/dest/prover-client/server-epoch-prover.d.ts +13 -11
  46. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  47. package/dest/prover-client/server-epoch-prover.js +9 -9
  48. package/dest/proving_broker/broker_prover_facade.d.ts +28 -21
  49. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  50. package/dest/proving_broker/broker_prover_facade.js +45 -36
  51. package/dest/proving_broker/config.d.ts +24 -8
  52. package/dest/proving_broker/config.d.ts.map +1 -1
  53. package/dest/proving_broker/config.js +26 -3
  54. package/dest/proving_broker/factory.d.ts +1 -1
  55. package/dest/proving_broker/fixtures.d.ts +3 -2
  56. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  57. package/dest/proving_broker/fixtures.js +3 -2
  58. package/dest/proving_broker/index.d.ts +1 -1
  59. package/dest/proving_broker/proof_store/factory.d.ts +2 -5
  60. package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
  61. package/dest/proving_broker/proof_store/factory.js +7 -30
  62. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
  63. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
  64. package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
  65. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  66. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  67. package/dest/proving_broker/proof_store/index.js +1 -0
  68. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  69. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  70. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  71. package/dest/proving_broker/proving_agent.d.ts +5 -9
  72. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  73. package/dest/proving_broker/proving_agent.js +4 -19
  74. package/dest/proving_broker/proving_broker.d.ts +7 -4
  75. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  76. package/dest/proving_broker/proving_broker.js +64 -30
  77. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  78. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  79. package/dest/proving_broker/proving_broker_database/persisted.d.ts +5 -3
  80. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  81. package/dest/proving_broker/proving_broker_database/persisted.js +392 -3
  82. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  83. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  84. package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
  85. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  86. package/dest/proving_broker/proving_broker_instrumentation.js +15 -35
  87. package/dest/proving_broker/proving_job_controller.d.ts +5 -3
  88. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  89. package/dest/proving_broker/proving_job_controller.js +46 -24
  90. package/dest/proving_broker/rpc.d.ts +7 -5
  91. package/dest/proving_broker/rpc.d.ts.map +1 -1
  92. package/dest/proving_broker/rpc.js +8 -0
  93. package/dest/test/mock_proof_store.d.ts +1 -1
  94. package/dest/test/mock_proof_store.d.ts.map +1 -1
  95. package/dest/test/mock_prover.d.ts +23 -19
  96. package/dest/test/mock_prover.d.ts.map +1 -1
  97. package/dest/test/mock_prover.js +38 -23
  98. package/package.json +21 -20
  99. package/src/config.ts +2 -2
  100. package/src/light/index.ts +1 -0
  101. package/src/light/lightweight_checkpoint_builder.ts +294 -0
  102. package/src/mocks/fixtures.ts +43 -37
  103. package/src/mocks/test_context.ts +201 -114
  104. package/src/orchestrator/block-building-helpers.ts +233 -313
  105. package/src/orchestrator/block-proving-state.ts +324 -247
  106. package/src/orchestrator/checkpoint-proving-state.ts +349 -0
  107. package/src/orchestrator/epoch-proving-state.ts +229 -132
  108. package/src/orchestrator/orchestrator.ts +630 -385
  109. package/src/orchestrator/orchestrator_metrics.ts +2 -25
  110. package/src/orchestrator/tx-proving-state.ts +49 -60
  111. package/src/prover-client/factory.ts +6 -2
  112. package/src/prover-client/prover-client.ts +31 -23
  113. package/src/prover-client/server-epoch-prover.ts +30 -21
  114. package/src/proving_broker/broker_prover_facade.ts +183 -118
  115. package/src/proving_broker/config.ts +30 -1
  116. package/src/proving_broker/fixtures.ts +8 -3
  117. package/src/proving_broker/proof_store/factory.ts +10 -32
  118. package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
  119. package/src/proving_broker/proof_store/index.ts +1 -0
  120. package/src/proving_broker/proving_agent.ts +6 -19
  121. package/src/proving_broker/proving_broker.ts +72 -28
  122. package/src/proving_broker/proving_broker_database/memory.ts +2 -1
  123. package/src/proving_broker/proving_broker_database/persisted.ts +20 -5
  124. package/src/proving_broker/proving_broker_database.ts +2 -1
  125. package/src/proving_broker/proving_broker_instrumentation.ts +14 -35
  126. package/src/proving_broker/proving_job_controller.ts +51 -25
  127. package/src/proving_broker/rpc.ts +14 -0
  128. package/src/test/mock_prover.ts +144 -74
  129. package/dest/bin/get-proof-inputs.d.ts +0 -2
  130. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  131. package/dest/bin/get-proof-inputs.js +0 -51
  132. package/dest/block-factory/index.d.ts +0 -2
  133. package/dest/block-factory/index.d.ts.map +0 -1
  134. package/dest/block-factory/index.js +0 -1
  135. package/dest/block-factory/light.d.ts +0 -36
  136. package/dest/block-factory/light.d.ts.map +0 -1
  137. package/dest/block-factory/light.js +0 -87
  138. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
  139. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
  140. package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
  141. package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
  142. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
  143. package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
  144. package/src/bin/get-proof-inputs.ts +0 -59
  145. package/src/block-factory/index.ts +0 -1
  146. package/src/block-factory/light.ts +0 -114
  147. package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
  148. package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
@@ -1,41 +1,18 @@
1
- import {
2
- type Histogram,
3
- Metrics,
4
- type TelemetryClient,
5
- type Tracer,
6
- type UpDownCounter,
7
- ValueType,
8
- } from '@aztec/telemetry-client';
1
+ import { type Histogram, Metrics, type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
9
2
 
10
3
  export class ProvingOrchestratorMetrics {
11
4
  public readonly tracer: Tracer;
12
5
 
13
6
  private baseRollupInputsDuration: Histogram;
14
- private avmFallbackCount: UpDownCounter;
15
7
 
16
8
  constructor(client: TelemetryClient, name = 'ProvingOrchestrator') {
17
9
  this.tracer = client.getTracer(name);
18
10
  const meter = client.getMeter(name);
19
11
 
20
- this.baseRollupInputsDuration = meter.createHistogram(Metrics.PROVING_ORCHESTRATOR_BASE_ROLLUP_INPUTS_DURATION, {
21
- unit: 'ms',
22
- description: 'Duration to build base rollup inputs',
23
- valueType: ValueType.INT,
24
- });
25
-
26
- this.avmFallbackCount = meter.createUpDownCounter(Metrics.PROVING_ORCHESTRATOR_AVM_FALLBACK_COUNT, {
27
- description: 'How many times the AVM fallback was used',
28
- valueType: ValueType.INT,
29
- });
30
-
31
- this.avmFallbackCount.add(0);
12
+ this.baseRollupInputsDuration = meter.createHistogram(Metrics.PROVING_ORCHESTRATOR_BASE_ROLLUP_INPUTS_DURATION);
32
13
  }
33
14
 
34
15
  recordBaseRollupInputs(durationMs: number) {
35
16
  this.baseRollupInputsDuration.record(Math.ceil(durationMs));
36
17
  }
37
-
38
- incAvmFallback() {
39
- this.avmFallbackCount.add(1);
40
- }
41
18
  }
@@ -1,28 +1,26 @@
1
- import {
2
- AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
3
- AVM_VK_INDEX,
4
- PRIVATE_TUBE_VK_INDEX,
5
- PUBLIC_TUBE_VK_INDEX,
6
- type TUBE_PROOF_LENGTH,
7
- } from '@aztec/constants';
8
- import { getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { getVkData } from '@aztec/noir-protocol-circuits-types/server/vks';
9
4
  import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
10
- import type { ProofAndVerificationKey } from '@aztec/stdlib/interfaces/server';
5
+ import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
6
+ import { ProofData, ProofDataForFixedVk, RecursiveProof } from '@aztec/stdlib/proofs';
11
7
  import {
12
- AvmProofData,
13
8
  type BaseRollupHints,
14
9
  PrivateBaseRollupHints,
15
- PrivateBaseRollupInputs,
16
- PrivateTubeData,
10
+ PrivateTxBaseRollupPrivateInputs,
17
11
  PublicBaseRollupHints,
18
- PublicBaseRollupInputs,
19
- PublicTubeData,
20
- TubeInputs,
12
+ PublicChonkVerifierPublicInputs,
13
+ PublicTxBaseRollupPrivateInputs,
21
14
  } from '@aztec/stdlib/rollup';
22
15
  import type { CircuitName } from '@aztec/stdlib/stats';
23
16
  import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
24
17
  import type { ProcessedTx } from '@aztec/stdlib/tx';
25
- import { VerificationKeyData, VkData } from '@aztec/stdlib/vks';
18
+
19
+ import {
20
+ getChonkProofFromTx,
21
+ getPublicChonkVerifierPrivateInputsFromTx,
22
+ toProofData,
23
+ } from './block-building-helpers.js';
26
24
 
27
25
  /**
28
26
  * Helper class to manage the proving cycle of a transaction
@@ -30,13 +28,17 @@ import { VerificationKeyData, VkData } from '@aztec/stdlib/vks';
30
28
  * Also stores the inputs to the base rollup for this transaction and the tree snapshots
31
29
  */
32
30
  export class TxProvingState {
33
- private tube?: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>;
34
- private avm?: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
31
+ private publicChonkVerifier?: PublicInputsAndRecursiveProof<
32
+ PublicChonkVerifierPublicInputs,
33
+ typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
34
+ >;
35
+ private avmProof?: RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
35
36
 
36
37
  constructor(
37
38
  public readonly processedTx: ProcessedTx,
38
39
  private readonly baseRollupHints: BaseRollupHints,
39
40
  public readonly treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>,
41
+ private readonly proverId: Fr,
40
42
  ) {}
41
43
 
42
44
  get requireAvmProof() {
@@ -44,89 +46,76 @@ export class TxProvingState {
44
46
  }
45
47
 
46
48
  public ready() {
47
- return !!this.tube && (!this.requireAvmProof || !!this.avm);
48
- }
49
-
50
- public getTubeInputs() {
51
- return new TubeInputs(!!this.processedTx.data.forPublic, this.processedTx.clientIvcProof);
49
+ return !this.requireAvmProof || (!!this.avmProof && !!this.publicChonkVerifier);
52
50
  }
53
51
 
54
52
  public getAvmInputs(): AvmCircuitInputs {
55
53
  return this.processedTx.avmProvingRequest!.inputs;
56
54
  }
57
55
 
56
+ public getPublicChonkVerifierPrivateInputs() {
57
+ return getPublicChonkVerifierPrivateInputsFromTx(this.processedTx, this.proverId);
58
+ }
59
+
58
60
  public getBaseRollupTypeAndInputs() {
59
61
  if (this.requireAvmProof) {
60
62
  return {
61
- rollupType: 'public-base-rollup' satisfies CircuitName,
63
+ rollupType: 'rollup-tx-base-public' satisfies CircuitName,
62
64
  inputs: this.#getPublicBaseInputs(),
63
65
  };
64
66
  } else {
65
67
  return {
66
- rollupType: 'private-base-rollup' satisfies CircuitName,
68
+ rollupType: 'rollup-tx-base-private' satisfies CircuitName,
67
69
  inputs: this.#getPrivateBaseInputs(),
68
70
  };
69
71
  }
70
72
  }
71
73
 
72
- public setTubeProof(tubeProofAndVk: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>) {
73
- this.tube = tubeProofAndVk;
74
+ public setPublicChonkVerifierProof(
75
+ publicChonkVerifierProofAndVk: PublicInputsAndRecursiveProof<
76
+ PublicChonkVerifierPublicInputs,
77
+ typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
78
+ >,
79
+ ) {
80
+ this.publicChonkVerifier = publicChonkVerifierProofAndVk;
74
81
  }
75
82
 
76
- public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>) {
77
- this.avm = avmProofAndVk;
83
+ public setAvmProof(avmProof: RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>) {
84
+ this.avmProof = avmProof;
78
85
  }
79
86
 
80
87
  #getPrivateBaseInputs() {
81
- if (!this.tube) {
82
- throw new Error('Tx not ready for proving base rollup.');
88
+ if (!(this.baseRollupHints instanceof PrivateBaseRollupHints)) {
89
+ throw new Error('Mismatched base rollup hints, expected private base rollup hints');
83
90
  }
84
91
 
85
- const vkData = this.#getVkData(this.tube!.verificationKey, PRIVATE_TUBE_VK_INDEX);
86
- const tubeData = new PrivateTubeData(
92
+ const privateTailProofData = new ProofData(
87
93
  this.processedTx.data.toPrivateToRollupKernelCircuitPublicInputs(),
88
- this.tube.proof,
89
- vkData,
94
+ getChonkProofFromTx(this.processedTx),
95
+ getVkData('HidingKernelToRollup'),
90
96
  );
91
97
 
92
- if (!(this.baseRollupHints instanceof PrivateBaseRollupHints)) {
93
- throw new Error('Mismatched base rollup hints, expected private base rollup hints');
94
- }
95
- return new PrivateBaseRollupInputs(tubeData, this.baseRollupHints);
98
+ return new PrivateTxBaseRollupPrivateInputs(privateTailProofData, this.baseRollupHints);
96
99
  }
97
100
 
98
101
  #getPublicBaseInputs() {
99
102
  if (!this.processedTx.avmProvingRequest) {
100
103
  throw new Error('Should create private base rollup for a tx not requiring avm proof.');
101
104
  }
102
- if (!this.tube) {
103
- throw new Error('Tx not ready for proving base rollup: tube proof undefined');
105
+ if (!this.publicChonkVerifier) {
106
+ throw new Error('Tx not ready for proving base rollup: public chonk verifier proof undefined');
104
107
  }
105
- if (!this.avm) {
108
+ if (!this.avmProof) {
106
109
  throw new Error('Tx not ready for proving base rollup: avm proof undefined');
107
110
  }
108
-
109
- const tubeData = new PublicTubeData(
110
- this.processedTx.data.toPrivateToPublicKernelCircuitPublicInputs(),
111
- this.tube.proof,
112
- this.#getVkData(this.tube!.verificationKey, PUBLIC_TUBE_VK_INDEX),
113
- );
114
-
115
- const avmProofData = new AvmProofData(
116
- this.processedTx.avmProvingRequest.inputs.publicInputs,
117
- this.avm.proof,
118
- this.#getVkData(this.avm!.verificationKey, AVM_VK_INDEX),
119
- );
120
-
121
111
  if (!(this.baseRollupHints instanceof PublicBaseRollupHints)) {
122
112
  throw new Error('Mismatched base rollup hints, expected public base rollup hints');
123
113
  }
124
114
 
125
- return new PublicBaseRollupInputs(tubeData, avmProofData, this.baseRollupHints);
126
- }
115
+ const publicChonkVerifierProofData = toProofData(this.publicChonkVerifier);
116
+
117
+ const avmProofData = new ProofDataForFixedVk(this.processedTx.avmProvingRequest.inputs.publicInputs, this.avmProof);
127
118
 
128
- #getVkData(verificationKey: VerificationKeyData, vkIndex: number) {
129
- const vkPath = getVKSiblingPath(vkIndex);
130
- return new VkData(verificationKey, vkIndex, vkPath);
119
+ return new PublicTxBaseRollupPrivateInputs(publicChonkVerifierProofData, avmProofData, this.baseRollupHints);
131
120
  }
132
121
  }
@@ -1,4 +1,8 @@
1
- import type { ForkMerkleTreeOperations, ProvingJobBroker } from '@aztec/stdlib/interfaces/server';
1
+ import type {
2
+ ForkMerkleTreeOperations,
3
+ ProvingJobBroker,
4
+ ReadonlyWorldStateAccess,
5
+ } from '@aztec/stdlib/interfaces/server';
2
6
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
3
7
 
4
8
  import type { ProverClientConfig } from '../config.js';
@@ -6,7 +10,7 @@ import { ProverClient } from './prover-client.js';
6
10
 
7
11
  export function createProverClient(
8
12
  config: ProverClientConfig,
9
- worldState: ForkMerkleTreeOperations,
13
+ worldState: ForkMerkleTreeOperations & ReadonlyWorldStateAccess,
10
14
  broker: ProvingJobBroker,
11
15
  telemetry: TelemetryClient = getTelemetryClient(),
12
16
  ) {
@@ -1,7 +1,7 @@
1
1
  import { type ACVMConfig, type BBConfig, BBNativeRollupProver, TestCircuitProver } from '@aztec/bb-prover';
2
2
  import { times } from '@aztec/foundation/collection';
3
3
  import type { EthAddress } from '@aztec/foundation/eth-address';
4
- import { createLogger } from '@aztec/foundation/log';
4
+ import { type Logger, createLogger } from '@aztec/foundation/log';
5
5
  import { NativeACVMSimulator } from '@aztec/simulator/server';
6
6
  import {
7
7
  type ActualProverConfig,
@@ -11,6 +11,7 @@ import {
11
11
  type ProvingJobBroker,
12
12
  type ProvingJobConsumer,
13
13
  type ProvingJobProducer,
14
+ type ReadonlyWorldStateAccess,
14
15
  type ServerCircuitProver,
15
16
  tryStop,
16
17
  } from '@aztec/stdlib/interfaces/server';
@@ -28,24 +29,34 @@ export class ProverClient implements EpochProverManager {
28
29
  private running = false;
29
30
  private agents: ProvingAgent[] = [];
30
31
 
31
- private proofStore: ProofStore;
32
- private failedProofStore: ProofStore | undefined;
33
-
34
32
  private constructor(
35
33
  private config: ProverClientConfig,
36
- private worldState: ForkMerkleTreeOperations,
34
+ private worldState: ForkMerkleTreeOperations & ReadonlyWorldStateAccess,
37
35
  private orchestratorClient: ProvingJobProducer,
36
+ private proofStore: ProofStore,
37
+ private failedProofStore: ProofStore | undefined,
38
38
  private agentClient?: ProvingJobConsumer,
39
39
  private telemetry: TelemetryClient = getTelemetryClient(),
40
- private log = createLogger('prover-client:tx-prover'),
41
- ) {
42
- this.proofStore = new InlineProofStore();
43
- this.failedProofStore = this.config.failedProofStore ? createProofStore(this.config.failedProofStore) : undefined;
44
- }
40
+ private log: Logger = createLogger('prover-client:tx-prover'),
41
+ ) {}
45
42
 
46
43
  public createEpochProver(): EpochProver {
47
- const facade = new BrokerCircuitProverFacade(this.orchestratorClient, this.proofStore, this.failedProofStore);
48
- const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.config.proverId, this.telemetry);
44
+ const bindings = this.log.getBindings();
45
+ const facade = new BrokerCircuitProverFacade(
46
+ this.orchestratorClient,
47
+ this.proofStore,
48
+ this.failedProofStore,
49
+ undefined,
50
+ bindings,
51
+ );
52
+ const orchestrator = new ProvingOrchestrator(
53
+ this.worldState,
54
+ facade,
55
+ this.config.proverId,
56
+ this.config.cancelJobsOnStop,
57
+ this.telemetry,
58
+ bindings,
59
+ );
49
60
  return new ServerEpochProver(facade, orchestrator);
50
61
  }
51
62
 
@@ -99,11 +110,13 @@ export class ProverClient implements EpochProverManager {
99
110
  */
100
111
  public static async new(
101
112
  config: ProverClientConfig,
102
- worldState: ForkMerkleTreeOperations,
113
+ worldState: ForkMerkleTreeOperations & ReadonlyWorldStateAccess,
103
114
  broker: ProvingJobBroker,
104
115
  telemetry: TelemetryClient = getTelemetryClient(),
105
116
  ) {
106
- const prover = new ProverClient(config, worldState, broker, broker, telemetry);
117
+ const proofStore = await createProofStore(config.proofStore);
118
+ const failedProofStore = config.failedProofStore ? await createProofStore(config.failedProofStore) : undefined;
119
+ const prover = new ProverClient(config, worldState, broker, proofStore, failedProofStore, broker, telemetry);
107
120
  await prover.start();
108
121
  return prover;
109
122
  }
@@ -127,17 +140,11 @@ export class ProverClient implements EpochProverManager {
127
140
 
128
141
  const proofStore = new InlineProofStore();
129
142
  const prover = await buildServerCircuitProver(this.config, this.telemetry);
143
+ const bindings = this.log.getBindings();
130
144
  this.agents = times(
131
145
  this.config.proverAgentCount,
132
146
  () =>
133
- new ProvingAgent(
134
- this.agentClient!,
135
- proofStore,
136
- prover,
137
- [],
138
- this.config.proverAgentPollIntervalMs,
139
- this.telemetry,
140
- ),
147
+ new ProvingAgent(this.agentClient!, proofStore, prover, [], this.config.proverAgentPollIntervalMs, bindings),
141
148
  );
142
149
 
143
150
  await Promise.all(this.agents.map(agent => agent.start()));
@@ -156,8 +163,9 @@ export function buildServerCircuitProver(
156
163
  return BBNativeRollupProver.new(config, telemetry);
157
164
  }
158
165
 
166
+ const logger = createLogger('prover-client:acvm-native');
159
167
  const simulator = config.acvmBinaryPath
160
- ? new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath)
168
+ ? new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath, undefined, logger)
161
169
  : undefined;
162
170
 
163
171
  return Promise.resolve(new TestCircuitProver(simulator, config, telemetry));
@@ -1,10 +1,12 @@
1
- import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
2
- import type { Fr } from '@aztec/foundation/fields';
3
- import type { EthAddress, L2Block } from '@aztec/stdlib/block';
1
+ import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
2
+ import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
3
+ import type { Fr } from '@aztec/foundation/curves/bn254';
4
+ import type { EthAddress } from '@aztec/stdlib/block';
4
5
  import type { EpochProver } from '@aztec/stdlib/interfaces/server';
5
6
  import type { Proof } from '@aztec/stdlib/proofs';
6
- import type { RootRollupPublicInputs } from '@aztec/stdlib/rollup';
7
- import type { BlockHeader, GlobalVariables, ProcessedTx, Tx } from '@aztec/stdlib/tx';
7
+ import type { CheckpointConstantData, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
8
+ import type { BlockHeader, ProcessedTx, Tx } from '@aztec/stdlib/tx';
9
+ import type { UInt64 } from '@aztec/stdlib/types';
8
10
 
9
11
  import type { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
10
12
  import type { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
@@ -17,18 +19,32 @@ export class ServerEpochProver implements EpochProver {
17
19
  ) {}
18
20
 
19
21
  startNewEpoch(
20
- epochNumber: number,
21
- firstBlockNumber: number,
22
- totalNumBlocks: number,
22
+ epochNumber: EpochNumber,
23
+ totalNumCheckpoints: number,
23
24
  finalBlobBatchingChallenges: FinalBlobBatchingChallenges,
24
25
  ): void {
25
- this.orchestrator.startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks, finalBlobBatchingChallenges);
26
+ this.orchestrator.startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges);
26
27
  this.facade.start();
27
28
  }
28
- startTubeCircuits(txs: Tx[]): Promise<void> {
29
- return this.orchestrator.startTubeCircuits(txs);
29
+ startNewCheckpoint(
30
+ checkpointIndex: number,
31
+ constants: CheckpointConstantData,
32
+ l1ToL2Messages: Fr[],
33
+ totalNumBlocks: number,
34
+ headerOfLastBlockInPreviousCheckpoint: BlockHeader,
35
+ ): Promise<void> {
36
+ return this.orchestrator.startNewCheckpoint(
37
+ checkpointIndex,
38
+ constants,
39
+ l1ToL2Messages,
40
+ totalNumBlocks,
41
+ headerOfLastBlockInPreviousCheckpoint,
42
+ );
43
+ }
44
+ startChonkVerifierCircuits(txs: Tx[]): Promise<void> {
45
+ return this.orchestrator.startChonkVerifierCircuits(txs);
30
46
  }
31
- setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise<L2Block> {
47
+ setBlockCompleted(blockNumber: BlockNumber, expectedBlockHeader?: BlockHeader): Promise<BlockHeader> {
32
48
  return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
33
49
  }
34
50
  finalizeEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof; batchedBlobInputs: BatchedBlob }> {
@@ -40,19 +56,12 @@ export class ServerEpochProver implements EpochProver {
40
56
  getProverId(): EthAddress {
41
57
  return this.orchestrator.getProverId();
42
58
  }
43
- getBlock(index: number): L2Block {
44
- return this.orchestrator.getBlock(index);
45
- }
46
59
  async stop(): Promise<void> {
47
60
  await this.facade.stop();
48
61
  await this.orchestrator.stop();
49
62
  }
50
- startNewBlock(
51
- globalVariables: GlobalVariables,
52
- l1ToL2Messages: Fr[],
53
- previousBlockHeader: BlockHeader,
54
- ): Promise<void> {
55
- return this.orchestrator.startNewBlock(globalVariables, l1ToL2Messages, previousBlockHeader);
63
+ startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number): Promise<void> {
64
+ return this.orchestrator.startNewBlock(blockNumber, timestamp, totalNumTxs);
56
65
  }
57
66
  addTxs(txs: ProcessedTx[]): Promise<void> {
58
67
  return this.orchestrator.addTxs(txs);