@aztec/prover-client 0.0.0-test.1 → 0.0.1-commit.023c3e5
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/config.d.ts +8 -8
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +12 -2
- package/dest/index.d.ts +1 -1
- package/dest/light/index.d.ts +2 -0
- package/dest/light/index.d.ts.map +1 -0
- package/dest/light/index.js +1 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts +47 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
- package/dest/light/lightweight_checkpoint_builder.js +200 -0
- package/dest/mocks/fixtures.d.ts +8 -8
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +36 -17
- package/dest/mocks/test_context.d.ts +43 -32
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +149 -87
- package/dest/orchestrator/block-building-helpers.d.ts +37 -30
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +170 -189
- package/dest/orchestrator/block-proving-state.d.ts +70 -48
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +282 -177
- package/dest/orchestrator/checkpoint-proving-state.d.ts +76 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-proving-state.js +243 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +43 -28
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +177 -73
- package/dest/orchestrator/index.d.ts +1 -1
- package/dest/orchestrator/orchestrator.d.ts +53 -35
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +855 -302
- package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +2 -6
- package/dest/orchestrator/tx-proving-state.d.ts +15 -12
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +27 -44
- package/dest/prover-client/factory.d.ts +3 -3
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/index.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts +5 -5
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +11 -7
- package/dest/prover-client/server-epoch-prover.d.ts +16 -12
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +11 -11
- package/dest/proving_broker/broker_prover_facade.d.ts +28 -19
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +62 -43
- package/dest/proving_broker/config.d.ts +23 -10
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +29 -6
- package/dest/proving_broker/factory.d.ts +2 -2
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +5 -1
- package/dest/proving_broker/fixtures.d.ts +3 -2
- package/dest/proving_broker/fixtures.d.ts.map +1 -1
- package/dest/proving_broker/fixtures.js +3 -2
- package/dest/proving_broker/index.d.ts +1 -1
- package/dest/proving_broker/proof_store/factory.d.ts +2 -2
- package/dest/proving_broker/proof_store/factory.js +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +1 -0
- package/dest/proving_broker/proof_store/index.d.ts +2 -1
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
- package/dest/proving_broker/proving_agent.d.ts +8 -12
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +86 -65
- package/dest/proving_broker/proving_broker.d.ts +13 -4
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +40 -33
- package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +5 -3
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +401 -11
- package/dest/proving_broker/proving_broker_database.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +15 -35
- package/dest/proving_broker/proving_job_controller.d.ts +11 -10
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +92 -62
- package/dest/proving_broker/rpc.d.ts +4 -6
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +1 -4
- package/dest/test/mock_proof_store.d.ts +9 -0
- package/dest/test/mock_proof_store.d.ts.map +1 -0
- package/dest/test/mock_proof_store.js +10 -0
- package/dest/test/mock_prover.d.ts +23 -17
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +38 -20
- package/package.json +33 -31
- package/src/config.ts +25 -9
- package/src/light/index.ts +1 -0
- package/src/light/lightweight_checkpoint_builder.ts +289 -0
- package/src/mocks/fixtures.ts +46 -40
- package/src/mocks/test_context.ts +223 -116
- package/src/orchestrator/block-building-helpers.ts +258 -334
- package/src/orchestrator/block-proving-state.ts +325 -231
- package/src/orchestrator/checkpoint-proving-state.ts +349 -0
- package/src/orchestrator/epoch-proving-state.ts +237 -111
- package/src/orchestrator/orchestrator.ts +653 -343
- package/src/orchestrator/orchestrator_metrics.ts +2 -6
- package/src/orchestrator/tx-proving-state.ts +48 -66
- package/src/prover-client/factory.ts +6 -2
- package/src/prover-client/prover-client.ts +41 -29
- package/src/prover-client/server-epoch-prover.ts +40 -22
- package/src/proving_broker/broker_prover_facade.ts +212 -131
- package/src/proving_broker/config.ts +34 -7
- package/src/proving_broker/factory.ts +2 -1
- package/src/proving_broker/fixtures.ts +8 -3
- package/src/proving_broker/proof_store/factory.ts +1 -1
- package/src/proving_broker/proof_store/gcs_proof_store.ts +5 -1
- package/src/proving_broker/proof_store/index.ts +1 -0
- package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
- package/src/proving_broker/proving_agent.ts +95 -66
- package/src/proving_broker/proving_broker.ts +57 -41
- package/src/proving_broker/proving_broker_database/memory.ts +3 -2
- package/src/proving_broker/proving_broker_database/persisted.ts +29 -13
- package/src/proving_broker/proving_broker_database.ts +2 -1
- package/src/proving_broker/proving_broker_instrumentation.ts +14 -35
- package/src/proving_broker/proving_job_controller.ts +100 -83
- package/src/proving_broker/rpc.ts +1 -6
- package/src/test/mock_proof_store.ts +14 -0
- package/src/test/mock_prover.ts +156 -64
- package/dest/bin/get-proof-inputs.d.ts +0 -2
- package/dest/bin/get-proof-inputs.d.ts.map +0 -1
- package/dest/bin/get-proof-inputs.js +0 -51
- package/dest/block_builder/index.d.ts +0 -6
- package/dest/block_builder/index.d.ts.map +0 -1
- package/dest/block_builder/index.js +0 -1
- package/dest/block_builder/light.d.ts +0 -33
- package/dest/block_builder/light.d.ts.map +0 -1
- package/dest/block_builder/light.js +0 -82
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
- package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
- package/src/bin/get-proof-inputs.ts +0 -59
- package/src/block_builder/index.ts +0 -6
- package/src/block_builder/light.ts +0 -101
- package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
type ObservableResult,
|
|
9
9
|
type TelemetryClient,
|
|
10
10
|
type UpDownCounter,
|
|
11
|
-
|
|
11
|
+
createUpDownCounterWithDefault,
|
|
12
12
|
} from '@aztec/telemetry-client';
|
|
13
13
|
|
|
14
14
|
export type MonitorCallback = (proofType: ProvingRequestType) => number;
|
|
@@ -28,49 +28,28 @@ export class ProvingBrokerInstrumentation {
|
|
|
28
28
|
constructor(client: TelemetryClient, name = 'ProvingBroker') {
|
|
29
29
|
const meter = client.getMeter(name);
|
|
30
30
|
|
|
31
|
-
this.queueSize = meter.createObservableGauge(Metrics.PROVING_QUEUE_SIZE
|
|
32
|
-
valueType: ValueType.INT,
|
|
33
|
-
});
|
|
31
|
+
this.queueSize = meter.createObservableGauge(Metrics.PROVING_QUEUE_SIZE);
|
|
34
32
|
|
|
35
|
-
this.activeJobs = meter.createObservableGauge(Metrics.PROVING_QUEUE_ACTIVE_JOBS
|
|
36
|
-
valueType: ValueType.INT,
|
|
37
|
-
});
|
|
33
|
+
this.activeJobs = meter.createObservableGauge(Metrics.PROVING_QUEUE_ACTIVE_JOBS);
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
});
|
|
35
|
+
const provingJobTypes = Object.values(ProvingRequestType).filter(v => typeof v === 'string');
|
|
36
|
+
const provingJobAttrs = { [Attributes.PROVING_JOB_TYPE]: provingJobTypes };
|
|
42
37
|
|
|
43
|
-
this.
|
|
44
|
-
valueType: ValueType.INT,
|
|
45
|
-
});
|
|
38
|
+
this.resolvedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RESOLVED_JOBS, provingJobAttrs);
|
|
46
39
|
|
|
47
|
-
this.
|
|
48
|
-
valueType: ValueType.INT,
|
|
49
|
-
});
|
|
40
|
+
this.rejectedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_REJECTED_JOBS, provingJobAttrs);
|
|
50
41
|
|
|
51
|
-
this.
|
|
52
|
-
valueType: ValueType.INT,
|
|
53
|
-
});
|
|
42
|
+
this.retriedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RETRIED_JOBS, provingJobAttrs);
|
|
54
43
|
|
|
55
|
-
this.
|
|
56
|
-
valueType: ValueType.INT,
|
|
57
|
-
});
|
|
44
|
+
this.timedOutJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_TIMED_OUT_JOBS, provingJobAttrs);
|
|
58
45
|
|
|
59
|
-
this.
|
|
60
|
-
valueType: ValueType.INT,
|
|
61
|
-
});
|
|
46
|
+
this.cachedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_CACHED_JOBS, provingJobAttrs);
|
|
62
47
|
|
|
63
|
-
this.
|
|
64
|
-
description: 'Records how long a job sits in the queue',
|
|
65
|
-
unit: 'ms',
|
|
66
|
-
valueType: ValueType.INT,
|
|
67
|
-
});
|
|
48
|
+
this.totalJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_TOTAL_JOBS, provingJobAttrs);
|
|
68
49
|
|
|
69
|
-
this.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
valueType: ValueType.INT,
|
|
73
|
-
});
|
|
50
|
+
this.jobWait = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_WAIT);
|
|
51
|
+
|
|
52
|
+
this.jobDuration = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_DURATION);
|
|
74
53
|
}
|
|
75
54
|
|
|
76
55
|
monitorQueueDepth(fn: MonitorCallback) {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
3
|
+
import { AbortError } from '@aztec/foundation/error';
|
|
4
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
2
5
|
import type {
|
|
3
6
|
ProvingJobId,
|
|
4
7
|
ProvingJobInputs,
|
|
@@ -9,38 +12,35 @@ import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
|
9
12
|
|
|
10
13
|
export enum ProvingJobControllerStatus {
|
|
11
14
|
IDLE = 'idle',
|
|
12
|
-
|
|
15
|
+
RUNNING = 'running',
|
|
13
16
|
DONE = 'done',
|
|
14
|
-
ABORTED = 'aborted',
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface ProvingJobCompletionCallback<T extends ProvingRequestType = ProvingRequestType> {
|
|
18
|
-
(
|
|
19
|
-
jobId: ProvingJobId,
|
|
20
|
-
type: T,
|
|
21
|
-
error: Error | undefined,
|
|
22
|
-
result: ProvingJobResultsMap[T] | undefined,
|
|
23
|
-
): void | Promise<void>;
|
|
24
17
|
}
|
|
25
18
|
|
|
26
19
|
export class ProvingJobController {
|
|
27
20
|
private status: ProvingJobControllerStatus = ProvingJobControllerStatus.IDLE;
|
|
28
21
|
private promise?: Promise<void>;
|
|
29
22
|
private abortController = new AbortController();
|
|
23
|
+
private result?: ProvingJobResultsMap[ProvingRequestType] | Error;
|
|
24
|
+
private log: Logger;
|
|
30
25
|
|
|
31
26
|
constructor(
|
|
32
27
|
private jobId: ProvingJobId,
|
|
33
28
|
private inputs: ProvingJobInputs,
|
|
34
|
-
private epochNumber:
|
|
29
|
+
private epochNumber: EpochNumber,
|
|
35
30
|
private startedAt: number,
|
|
36
31
|
private circuitProver: ServerCircuitProver,
|
|
37
|
-
private onComplete:
|
|
38
|
-
|
|
39
|
-
) {
|
|
32
|
+
private onComplete: () => void,
|
|
33
|
+
bindings?: LoggerBindings,
|
|
34
|
+
) {
|
|
35
|
+
this.log = createLogger('prover-client:proving-agent:job-controller', {
|
|
36
|
+
instanceId: randomBytes(4).toString('hex'),
|
|
37
|
+
...bindings,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
40
|
|
|
41
41
|
public start(): void {
|
|
42
42
|
if (this.status !== ProvingJobControllerStatus.IDLE) {
|
|
43
|
-
this.log.
|
|
43
|
+
this.log.warn(
|
|
44
44
|
`Job controller for jobId=${this.jobId} not starting because it is not idle currentStatus=${this.status}`,
|
|
45
45
|
{
|
|
46
46
|
currentStatus: this.status,
|
|
@@ -50,63 +50,23 @@ export class ProvingJobController {
|
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
this.
|
|
54
|
-
|
|
53
|
+
this.promise = this.run();
|
|
54
|
+
|
|
55
|
+
this.log.info(`Job controller started jobId=${this.jobId}`, {
|
|
55
56
|
jobId: this.jobId,
|
|
56
57
|
});
|
|
57
|
-
|
|
58
|
-
this.promise = this.generateProof()
|
|
59
|
-
.then(
|
|
60
|
-
result => {
|
|
61
|
-
if (this.status === ProvingJobControllerStatus.ABORTED) {
|
|
62
|
-
this.log.warn(`Job controller for jobId=${this.jobId} completed successfully but job was aborted`, {
|
|
63
|
-
currentStatus: this.status,
|
|
64
|
-
jobId: this.jobId,
|
|
65
|
-
});
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
this.status = ProvingJobControllerStatus.DONE;
|
|
69
|
-
this.log.verbose(`Job controller for jobId=${this.jobId} completed successfully`, {
|
|
70
|
-
jobId: this.jobId,
|
|
71
|
-
});
|
|
72
|
-
return this.onComplete(this.jobId, this.inputs.type, undefined, result);
|
|
73
|
-
},
|
|
74
|
-
error => {
|
|
75
|
-
if (this.status === ProvingJobControllerStatus.ABORTED) {
|
|
76
|
-
this.log.warn(`Job controller for jobId=${this.jobId} finished with an error but job was aborted`, {
|
|
77
|
-
currentStatus: this.status,
|
|
78
|
-
jobId: this.jobId,
|
|
79
|
-
});
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (error.name === 'AbortError') {
|
|
84
|
-
// Ignore abort errors
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
this.log.verbose(`Job controller for jobId=${this.jobId} finished with an error`, {
|
|
89
|
-
jobId: this.jobId,
|
|
90
|
-
err: error,
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
this.status = ProvingJobControllerStatus.DONE;
|
|
94
|
-
return this.onComplete(this.jobId, this.inputs.type, error, undefined);
|
|
95
|
-
},
|
|
96
|
-
)
|
|
97
|
-
.catch(err => {
|
|
98
|
-
this.log.error(`Job constroller failed to send result for jobId=${this.jobId}: ${err}`, err, {
|
|
99
|
-
jobId: this.jobId,
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
58
|
}
|
|
103
59
|
|
|
104
60
|
public getStatus(): ProvingJobControllerStatus {
|
|
105
61
|
return this.status;
|
|
106
62
|
}
|
|
107
63
|
|
|
64
|
+
public getResult(): ProvingJobResultsMap[ProvingRequestType] | Error | undefined {
|
|
65
|
+
return this.result;
|
|
66
|
+
}
|
|
67
|
+
|
|
108
68
|
public abort(): void {
|
|
109
|
-
if (this.status !== ProvingJobControllerStatus.
|
|
69
|
+
if (this.status !== ProvingJobControllerStatus.RUNNING) {
|
|
110
70
|
this.log.warn(`Tried to abort job controller for jobId=${this.jobId} but it is not running`, {
|
|
111
71
|
currentStatus: this.status,
|
|
112
72
|
jobId: this.jobId,
|
|
@@ -114,9 +74,8 @@ export class ProvingJobController {
|
|
|
114
74
|
return;
|
|
115
75
|
}
|
|
116
76
|
|
|
117
|
-
this.status = ProvingJobControllerStatus.ABORTED;
|
|
118
77
|
this.abortController.abort();
|
|
119
|
-
this.log.
|
|
78
|
+
this.log.warn(`Aborted job controller for jobId=${this.jobId}`, {
|
|
120
79
|
jobId: this.jobId,
|
|
121
80
|
});
|
|
122
81
|
}
|
|
@@ -125,6 +84,10 @@ export class ProvingJobController {
|
|
|
125
84
|
return this.jobId;
|
|
126
85
|
}
|
|
127
86
|
|
|
87
|
+
public getProofType(): ProvingRequestType {
|
|
88
|
+
return this.inputs.type;
|
|
89
|
+
}
|
|
90
|
+
|
|
128
91
|
public getStartedAt(): number {
|
|
129
92
|
return this.startedAt;
|
|
130
93
|
}
|
|
@@ -133,6 +96,36 @@ export class ProvingJobController {
|
|
|
133
96
|
return ProvingRequestType[this.inputs.type];
|
|
134
97
|
}
|
|
135
98
|
|
|
99
|
+
private run = async () => {
|
|
100
|
+
this.status = ProvingJobControllerStatus.RUNNING;
|
|
101
|
+
let result: ProvingJobResultsMap[ProvingRequestType] | Error;
|
|
102
|
+
try {
|
|
103
|
+
result = await this.generateProof();
|
|
104
|
+
} catch (err) {
|
|
105
|
+
if (err && err instanceof Error) {
|
|
106
|
+
result = err;
|
|
107
|
+
} else {
|
|
108
|
+
result = new Error('Unknown proving error: ' + String(err), { cause: err });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (this.abortController.signal.aborted) {
|
|
113
|
+
this.log.warn(`Job controller for jobId=${this.jobId} completed but job was aborted`, {
|
|
114
|
+
currentStatus: this.status,
|
|
115
|
+
jobId: this.jobId,
|
|
116
|
+
});
|
|
117
|
+
result = new AbortError('Proof was aborted');
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
this.result = result;
|
|
121
|
+
this.status = ProvingJobControllerStatus.DONE;
|
|
122
|
+
try {
|
|
123
|
+
this.onComplete();
|
|
124
|
+
} catch (err) {
|
|
125
|
+
this.log.warn(`On complete handler error: ${err}`, { jobId: this.jobId });
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
136
129
|
private async generateProof(): Promise<ProvingJobResultsMap[ProvingRequestType]> {
|
|
137
130
|
const { type, inputs } = this.inputs;
|
|
138
131
|
const signal = this.abortController.signal;
|
|
@@ -141,50 +134,74 @@ export class ProvingJobController {
|
|
|
141
134
|
return await this.circuitProver.getAvmProof(inputs, signal, this.epochNumber);
|
|
142
135
|
}
|
|
143
136
|
|
|
144
|
-
case ProvingRequestType.
|
|
145
|
-
return await this.circuitProver.
|
|
137
|
+
case ProvingRequestType.PUBLIC_CHONK_VERIFIER: {
|
|
138
|
+
return await this.circuitProver.getPublicChonkVerifierProof(inputs, signal, this.epochNumber);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
case ProvingRequestType.PRIVATE_TX_BASE_ROLLUP: {
|
|
142
|
+
return await this.circuitProver.getPrivateTxBaseRollupProof(inputs, signal, this.epochNumber);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
case ProvingRequestType.PUBLIC_TX_BASE_ROLLUP: {
|
|
146
|
+
return await this.circuitProver.getPublicTxBaseRollupProof(inputs, signal, this.epochNumber);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
case ProvingRequestType.TX_MERGE_ROLLUP: {
|
|
150
|
+
return await this.circuitProver.getTxMergeRollupProof(inputs, signal, this.epochNumber);
|
|
146
151
|
}
|
|
147
152
|
|
|
148
|
-
case ProvingRequestType.
|
|
149
|
-
return await this.circuitProver.
|
|
153
|
+
case ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP: {
|
|
154
|
+
return await this.circuitProver.getBlockRootFirstRollupProof(inputs, signal, this.epochNumber);
|
|
150
155
|
}
|
|
151
156
|
|
|
152
|
-
case ProvingRequestType.
|
|
153
|
-
return await this.circuitProver.
|
|
157
|
+
case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP: {
|
|
158
|
+
return await this.circuitProver.getBlockRootSingleTxFirstRollupProof(inputs, signal, this.epochNumber);
|
|
154
159
|
}
|
|
155
160
|
|
|
156
|
-
case ProvingRequestType.
|
|
157
|
-
return await this.circuitProver.
|
|
161
|
+
case ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP: {
|
|
162
|
+
return await this.circuitProver.getBlockRootEmptyTxFirstRollupProof(inputs, signal, this.epochNumber);
|
|
158
163
|
}
|
|
159
164
|
|
|
160
165
|
case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
|
|
161
166
|
return await this.circuitProver.getBlockRootRollupProof(inputs, signal, this.epochNumber);
|
|
162
167
|
}
|
|
163
168
|
|
|
164
|
-
case ProvingRequestType.
|
|
165
|
-
return await this.circuitProver.
|
|
169
|
+
case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP: {
|
|
170
|
+
return await this.circuitProver.getBlockRootSingleTxRollupProof(inputs, signal, this.epochNumber);
|
|
166
171
|
}
|
|
167
172
|
|
|
168
173
|
case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
|
|
169
174
|
return await this.circuitProver.getBlockMergeRollupProof(inputs, signal, this.epochNumber);
|
|
170
175
|
}
|
|
171
176
|
|
|
177
|
+
case ProvingRequestType.CHECKPOINT_ROOT_ROLLUP: {
|
|
178
|
+
return await this.circuitProver.getCheckpointRootRollupProof(inputs, signal, this.epochNumber);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
case ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP: {
|
|
182
|
+
return await this.circuitProver.getCheckpointRootSingleBlockRollupProof(inputs, signal, this.epochNumber);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
case ProvingRequestType.CHECKPOINT_PADDING_ROLLUP: {
|
|
186
|
+
return await this.circuitProver.getCheckpointPaddingRollupProof(inputs, signal, this.epochNumber);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
case ProvingRequestType.CHECKPOINT_MERGE_ROLLUP: {
|
|
190
|
+
return await this.circuitProver.getCheckpointMergeRollupProof(inputs, signal, this.epochNumber);
|
|
191
|
+
}
|
|
192
|
+
|
|
172
193
|
case ProvingRequestType.ROOT_ROLLUP: {
|
|
173
194
|
return await this.circuitProver.getRootRollupProof(inputs, signal, this.epochNumber);
|
|
174
195
|
}
|
|
175
196
|
|
|
176
|
-
case ProvingRequestType.
|
|
197
|
+
case ProvingRequestType.PARITY_BASE: {
|
|
177
198
|
return await this.circuitProver.getBaseParityProof(inputs, signal, this.epochNumber);
|
|
178
199
|
}
|
|
179
200
|
|
|
180
|
-
case ProvingRequestType.
|
|
201
|
+
case ProvingRequestType.PARITY_ROOT: {
|
|
181
202
|
return await this.circuitProver.getRootParityProof(inputs, signal, this.epochNumber);
|
|
182
203
|
}
|
|
183
204
|
|
|
184
|
-
case ProvingRequestType.TUBE_PROOF: {
|
|
185
|
-
return await this.circuitProver.getTubeProof(inputs, signal, this.epochNumber);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
205
|
default: {
|
|
189
206
|
const _exhaustive: never = type;
|
|
190
207
|
return Promise.reject(new Error(`Invalid proof request type: ${type}`));
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
|
|
2
|
-
import type { SafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
3
2
|
import {
|
|
4
3
|
type GetProvingJobResponse,
|
|
5
4
|
ProofUri,
|
|
@@ -13,7 +12,7 @@ import {
|
|
|
13
12
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
14
13
|
import { type ApiSchemaFor, optional } from '@aztec/stdlib/schemas';
|
|
15
14
|
import { type ComponentsVersions, getVersioningResponseHandler } from '@aztec/stdlib/versioning';
|
|
16
|
-
import {
|
|
15
|
+
import { makeTracedFetch } from '@aztec/telemetry-client';
|
|
17
16
|
|
|
18
17
|
import { z } from 'zod';
|
|
19
18
|
|
|
@@ -54,10 +53,6 @@ export const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker> = {
|
|
|
54
53
|
...ProvingJobProducerSchema,
|
|
55
54
|
};
|
|
56
55
|
|
|
57
|
-
export function createProvingBrokerServer(broker: ProvingJobBroker): SafeJsonRpcServer {
|
|
58
|
-
return createTracedJsonRpcServer(broker, ProvingJobBrokerSchema);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
56
|
export function createProvingJobBrokerClient(
|
|
62
57
|
url: string,
|
|
63
58
|
versions: Partial<ComponentsVersions>,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
|
+
|
|
4
|
+
// Mock ProofStore for faster benchmarks with realistic Cloud Storage URIs
|
|
5
|
+
export class MockProofStore {
|
|
6
|
+
private mockCounter = 0;
|
|
7
|
+
private readonly bucketName = 'aztec-proving-benchmarks';
|
|
8
|
+
private readonly basePath = 'proving-jobs';
|
|
9
|
+
|
|
10
|
+
saveProofInput(jobId: ProvingJobId, type: ProvingRequestType): Promise<string> {
|
|
11
|
+
const uri = `gs://${this.bucketName}/${this.basePath}/inputs/${type}/${jobId}`;
|
|
12
|
+
return Promise.resolve(uri as any);
|
|
13
|
+
}
|
|
14
|
+
}
|