@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.
- package/dest/bin/get-proof-inputs.d.ts +2 -0
- package/dest/bin/get-proof-inputs.d.ts.map +1 -0
- package/dest/bin/get-proof-inputs.js +50 -0
- package/dest/block_builder/light.d.ts +3 -5
- package/dest/block_builder/light.d.ts.map +1 -1
- package/dest/block_builder/light.js +9 -22
- package/dest/config.d.ts +2 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -2
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +2 -2
- package/dest/mocks/test_context.d.ts +1 -1
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +11 -12
- package/dest/orchestrator/block-building-helpers.d.ts +15 -29
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +51 -58
- package/dest/orchestrator/block-proving-state.d.ts +40 -44
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +149 -85
- package/dest/orchestrator/epoch-proving-state.d.ts +23 -30
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +92 -65
- package/dest/orchestrator/orchestrator.d.ts +17 -48
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +208 -351
- package/dest/orchestrator/tx-proving-state.d.ts +10 -6
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +57 -46
- package/dest/prover-agent/memory-proving-queue.d.ts +4 -4
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +5 -5
- package/dest/prover-agent/prover-agent.d.ts +0 -2
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +7 -9
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/factory.js +3 -3
- package/dest/prover-client/prover-client.d.ts +4 -2
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +16 -15
- package/dest/prover-client/server-epoch-prover.d.ts +25 -0
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -0
- package/dest/prover-client/server-epoch-prover.js +40 -0
- package/dest/proving_broker/broker_prover_facade.d.ts +19 -7
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +271 -49
- package/dest/proving_broker/config.d.ts +61 -0
- package/dest/proving_broker/config.d.ts.map +1 -0
- package/dest/proving_broker/config.js +83 -0
- package/dest/proving_broker/factory.d.ts +1 -1
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +4 -7
- package/dest/proving_broker/fixtures.d.ts +5 -0
- package/dest/proving_broker/fixtures.d.ts.map +1 -0
- package/dest/proving_broker/fixtures.js +12 -0
- package/dest/proving_broker/index.d.ts +2 -1
- package/dest/proving_broker/index.d.ts.map +1 -1
- package/dest/proving_broker/index.js +3 -2
- package/dest/proving_broker/proof_store/factory.d.ts +6 -0
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/factory.js +39 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +13 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.js +46 -0
- package/dest/proving_broker/proof_store/index.d.ts +4 -0
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/index.js +4 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +14 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/inline_proof_store.js +37 -0
- package/dest/proving_broker/{proof_store.d.ts → proof_store/proof_store.d.ts} +1 -12
- package/dest/proving_broker/proof_store/proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/proof_store.js +2 -0
- package/dest/proving_broker/proving_agent.d.ts +4 -4
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +5 -5
- package/dest/proving_broker/proving_broker.d.ts +16 -12
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +307 -274
- package/dest/proving_broker/proving_broker_database/memory.d.ts +4 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +17 -4
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +10 -6
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +106 -14
- package/dest/proving_broker/proving_broker_database.d.ts +7 -3
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +4 -4
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +4 -4
- package/dest/test/mock_prover.d.ts +8 -8
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +9 -10
- package/package.json +14 -12
- package/src/bin/get-proof-inputs.ts +60 -0
- package/src/block_builder/light.ts +7 -31
- package/src/config.ts +4 -4
- package/src/mocks/fixtures.ts +1 -1
- package/src/mocks/test_context.ts +9 -11
- package/src/orchestrator/block-building-helpers.ts +360 -402
- package/src/orchestrator/block-proving-state.ts +251 -121
- package/src/orchestrator/epoch-proving-state.ts +159 -88
- package/src/orchestrator/orchestrator.ts +262 -542
- package/src/orchestrator/tx-proving-state.ts +30 -18
- package/src/prover-agent/memory-proving-queue.ts +12 -16
- package/src/prover-agent/prover-agent.ts +14 -8
- package/src/prover-client/factory.ts +2 -3
- package/src/prover-client/prover-client.ts +17 -20
- package/src/prover-client/server-epoch-prover.ts +44 -0
- package/src/proving_broker/broker_prover_facade.ts +347 -67
- package/src/proving_broker/config.ts +93 -0
- package/src/proving_broker/factory.ts +11 -10
- package/src/proving_broker/fixtures.ts +14 -0
- package/src/proving_broker/index.ts +2 -1
- package/src/proving_broker/proof_store/factory.ts +42 -0
- package/src/proving_broker/proof_store/gcs_proof_store.ts +72 -0
- package/src/proving_broker/proof_store/index.ts +3 -0
- package/src/proving_broker/{proof_store.ts → proof_store/inline_proof_store.ts} +1 -44
- package/src/proving_broker/proof_store/proof_store.ts +54 -0
- package/src/proving_broker/proving_agent.ts +11 -5
- package/src/proving_broker/proving_broker.ts +122 -73
- package/src/proving_broker/proving_broker_database/memory.ts +24 -4
- package/src/proving_broker/proving_broker_database/persisted.ts +142 -20
- package/src/proving_broker/proving_broker_database.ts +8 -3
- package/src/proving_broker/proving_job_controller.ts +5 -5
- package/src/proving_broker/rpc.ts +2 -3
- package/src/test/mock_prover.ts +12 -18
- package/dest/proving_broker/proof_store.d.ts.map +0 -1
- 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
|
|
55
|
+
public getBaseRollupTypeAndInputs() {
|
|
55
56
|
if (this.requireAvmProof) {
|
|
56
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
107
|
+
this.processedTx.data.toPrivateToPublicKernelCircuitPublicInputs(),
|
|
88
108
|
this.tube.proof,
|
|
89
|
-
this
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
15
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
38
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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,
|
|
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(
|
|
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
|
+
}
|