@aztec/prover-client 0.42.0 → 0.44.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/config.d.ts.map +1 -1
- package/dest/config.js +12 -8
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +8 -5
- package/dest/orchestrator/block-building-helpers.d.ts +5 -5
- package/dest/orchestrator/orchestrator.d.ts +3 -1
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +599 -518
- package/dest/prover-agent/memory-proving-queue.d.ts +14 -1
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +77 -11
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +32 -13
- package/dest/tx-prover/tx-prover.d.ts +3 -1
- package/dest/tx-prover/tx-prover.d.ts.map +1 -1
- package/dest/tx-prover/tx-prover.js +14 -11
- package/package.json +19 -10
- package/src/config.ts +13 -6
- package/src/mocks/test_context.ts +7 -3
- package/src/orchestrator/orchestrator.ts +159 -45
- package/src/prover-agent/memory-proving-queue.ts +98 -12
- package/src/prover-agent/prover-agent.ts +40 -15
- package/src/tx-prover/tx-prover.ts +22 -8
|
@@ -5,16 +5,29 @@ import type { AvmCircuitInputs, BaseOrMergeRollupPublicInputs, BaseParityInputs,
|
|
|
5
5
|
* The queue accumulates jobs and provides them to agents in FIFO order.
|
|
6
6
|
*/
|
|
7
7
|
export declare class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource {
|
|
8
|
+
/** Timeout the job if an agent doesn't report back in this time */
|
|
9
|
+
private jobTimeoutMs;
|
|
8
10
|
private generateId;
|
|
11
|
+
private timeSource;
|
|
9
12
|
private log;
|
|
10
13
|
private queue;
|
|
11
14
|
private jobsInProgress;
|
|
12
|
-
|
|
15
|
+
private runningPromise;
|
|
16
|
+
constructor(
|
|
17
|
+
/** Timeout the job if an agent doesn't report back in this time */
|
|
18
|
+
jobTimeoutMs?: number,
|
|
19
|
+
/** How often to check for timed out jobs */
|
|
20
|
+
pollingIntervalMs?: number, generateId?: () => string, timeSource?: () => number);
|
|
21
|
+
start(): void;
|
|
22
|
+
stop(): Promise<void>;
|
|
13
23
|
getProvingJob({ timeoutSec }?: {
|
|
14
24
|
timeoutSec?: number | undefined;
|
|
15
25
|
}): Promise<ProvingJob<ProvingRequest> | undefined>;
|
|
16
26
|
resolveProvingJob<T extends ProvingRequestType>(jobId: string, result: ProvingRequestResult<T>): Promise<void>;
|
|
17
27
|
rejectProvingJob(jobId: string, err: any): Promise<void>;
|
|
28
|
+
heartbeat(jobId: string): Promise<void>;
|
|
29
|
+
isJobRunning(jobId: string): boolean;
|
|
30
|
+
private poll;
|
|
18
31
|
private enqueue;
|
|
19
32
|
getEmptyPrivateKernelProof(inputs: PrivateKernelEmptyInputData, signal?: AbortSignal): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs>>;
|
|
20
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-proving-queue.d.ts","sourceRoot":"","sources":["../../src/prover-agent/memory-proving-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,6BAA6B,EAC7B,2BAA2B,EAC3B,+BAA+B,EAC/B,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-proving-queue.d.ts","sourceRoot":"","sources":["../../src/prover-agent/memory-proving-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,74 @@
|
|
|
1
1
|
import { ProvingRequestType, } from '@aztec/circuit-types';
|
|
2
2
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
3
|
-
import {
|
|
3
|
+
import { AbortError, TimeoutError } from '@aztec/foundation/error';
|
|
4
4
|
import { MemoryFifo } from '@aztec/foundation/fifo';
|
|
5
5
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
6
|
-
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
6
|
+
import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
7
7
|
const MAX_RETRIES = 3;
|
|
8
8
|
const defaultIdGenerator = () => randomBytes(4).toString('hex');
|
|
9
|
+
const defaultTimeSource = () => Date.now();
|
|
9
10
|
/**
|
|
10
11
|
* A helper class that sits in between services that need proofs created and agents that can create them.
|
|
11
12
|
* The queue accumulates jobs and provides them to agents in FIFO order.
|
|
12
13
|
*/
|
|
13
14
|
export class MemoryProvingQueue {
|
|
14
|
-
constructor(
|
|
15
|
+
constructor(
|
|
16
|
+
/** Timeout the job if an agent doesn't report back in this time */
|
|
17
|
+
jobTimeoutMs = 60 * 1000,
|
|
18
|
+
/** How often to check for timed out jobs */
|
|
19
|
+
pollingIntervalMs = 1000, generateId = defaultIdGenerator, timeSource = defaultTimeSource) {
|
|
20
|
+
this.jobTimeoutMs = jobTimeoutMs;
|
|
15
21
|
this.generateId = generateId;
|
|
22
|
+
this.timeSource = timeSource;
|
|
16
23
|
this.log = createDebugLogger('aztec:prover-client:prover-pool:queue');
|
|
17
24
|
this.queue = new MemoryFifo();
|
|
18
25
|
this.jobsInProgress = new Map();
|
|
26
|
+
this.poll = () => {
|
|
27
|
+
const now = this.timeSource();
|
|
28
|
+
for (const job of this.jobsInProgress.values()) {
|
|
29
|
+
if (job.signal?.aborted) {
|
|
30
|
+
this.jobsInProgress.delete(job.id);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (job.heartbeat + this.jobTimeoutMs < now) {
|
|
34
|
+
this.log.warn(`Job ${job.id} type=${ProvingRequestType[job.request.type]} has timed out`);
|
|
35
|
+
this.jobsInProgress.delete(job.id);
|
|
36
|
+
job.heartbeat = 0;
|
|
37
|
+
this.queue.put(job);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
this.runningPromise = new RunningPromise(this.poll, pollingIntervalMs);
|
|
42
|
+
}
|
|
43
|
+
start() {
|
|
44
|
+
if (this.runningPromise.isRunning()) {
|
|
45
|
+
this.log.warn('Proving queue is already running');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this.runningPromise.start();
|
|
49
|
+
this.log.info('Proving queue started');
|
|
50
|
+
}
|
|
51
|
+
async stop() {
|
|
52
|
+
if (!this.runningPromise.isRunning()) {
|
|
53
|
+
this.log.warn('Proving queue is already stopped');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
await this.runningPromise.stop();
|
|
57
|
+
this.log.info('Proving queue stopped');
|
|
19
58
|
}
|
|
20
59
|
async getProvingJob({ timeoutSec = 1 } = {}) {
|
|
60
|
+
if (!this.runningPromise.isRunning()) {
|
|
61
|
+
throw new Error('Proving queue is not running. Start the queue before getting jobs.');
|
|
62
|
+
}
|
|
21
63
|
try {
|
|
22
64
|
const job = await this.queue.get(timeoutSec);
|
|
23
65
|
if (!job) {
|
|
24
66
|
return undefined;
|
|
25
67
|
}
|
|
26
68
|
if (job.signal?.aborted) {
|
|
27
|
-
this.log.debug(`Job ${job.id} type=${job.request.type} has been aborted`);
|
|
28
69
|
return undefined;
|
|
29
70
|
}
|
|
71
|
+
job.heartbeat = this.timeSource();
|
|
30
72
|
this.jobsInProgress.set(job.id, job);
|
|
31
73
|
return {
|
|
32
74
|
id: job.id,
|
|
@@ -41,21 +83,28 @@ export class MemoryProvingQueue {
|
|
|
41
83
|
}
|
|
42
84
|
}
|
|
43
85
|
resolveProvingJob(jobId, result) {
|
|
86
|
+
if (!this.runningPromise.isRunning()) {
|
|
87
|
+
throw new Error('Proving queue is not running.');
|
|
88
|
+
}
|
|
44
89
|
const job = this.jobsInProgress.get(jobId);
|
|
45
90
|
if (!job) {
|
|
46
|
-
|
|
91
|
+
this.log.warn(`Job id=${jobId} not found. Can't resolve`);
|
|
92
|
+
return Promise.resolve();
|
|
47
93
|
}
|
|
48
94
|
this.jobsInProgress.delete(jobId);
|
|
49
|
-
if (job.signal?.aborted) {
|
|
50
|
-
|
|
95
|
+
if (!job.signal?.aborted) {
|
|
96
|
+
job.resolve(result);
|
|
51
97
|
}
|
|
52
|
-
job.resolve(result);
|
|
53
98
|
return Promise.resolve();
|
|
54
99
|
}
|
|
55
100
|
rejectProvingJob(jobId, err) {
|
|
101
|
+
if (!this.runningPromise.isRunning()) {
|
|
102
|
+
throw new Error('Proving queue is not running.');
|
|
103
|
+
}
|
|
56
104
|
const job = this.jobsInProgress.get(jobId);
|
|
57
105
|
if (!job) {
|
|
58
|
-
|
|
106
|
+
this.log.warn(`Job id=${jobId} not found. Can't reject`);
|
|
107
|
+
return Promise.resolve();
|
|
59
108
|
}
|
|
60
109
|
this.jobsInProgress.delete(jobId);
|
|
61
110
|
if (job.signal?.aborted) {
|
|
@@ -72,7 +121,23 @@ export class MemoryProvingQueue {
|
|
|
72
121
|
}
|
|
73
122
|
return Promise.resolve();
|
|
74
123
|
}
|
|
124
|
+
heartbeat(jobId) {
|
|
125
|
+
if (!this.runningPromise.isRunning()) {
|
|
126
|
+
throw new Error('Proving queue is not running.');
|
|
127
|
+
}
|
|
128
|
+
const job = this.jobsInProgress.get(jobId);
|
|
129
|
+
if (job) {
|
|
130
|
+
job.heartbeat = this.timeSource();
|
|
131
|
+
}
|
|
132
|
+
return Promise.resolve();
|
|
133
|
+
}
|
|
134
|
+
isJobRunning(jobId) {
|
|
135
|
+
return this.jobsInProgress.has(jobId);
|
|
136
|
+
}
|
|
75
137
|
enqueue(request, signal) {
|
|
138
|
+
if (!this.runningPromise.isRunning()) {
|
|
139
|
+
return Promise.reject(new Error('Proving queue is not running.'));
|
|
140
|
+
}
|
|
76
141
|
const { promise, resolve, reject } = promiseWithResolvers();
|
|
77
142
|
const item = {
|
|
78
143
|
id: this.generateId(),
|
|
@@ -82,9 +147,10 @@ export class MemoryProvingQueue {
|
|
|
82
147
|
resolve,
|
|
83
148
|
reject,
|
|
84
149
|
attempts: 1,
|
|
150
|
+
heartbeat: 0,
|
|
85
151
|
};
|
|
86
152
|
if (signal) {
|
|
87
|
-
signal.addEventListener('abort', () => reject(new
|
|
153
|
+
signal.addEventListener('abort', () => reject(new AbortError('Operation has been aborted')));
|
|
88
154
|
}
|
|
89
155
|
this.log.debug(`Adding id=${item.id} type=${ProvingRequestType[request.type]} proving job to queue depth=${this.queue.length()}`);
|
|
90
156
|
// TODO (alexg) remove the `any`
|
|
@@ -184,4 +250,4 @@ export class MemoryProvingQueue {
|
|
|
184
250
|
return Promise.reject('not implemented');
|
|
185
251
|
}
|
|
186
252
|
}
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXByb3ZpbmctcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyLWFnZW50L21lbW9yeS1wcm92aW5nLXF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxrQkFBa0IsR0FLbkIsTUFBTSxzQkFBc0IsQ0FBQztBQWlCOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBNkIsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFVNUcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXRCLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRSxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBTzdCO0lBQ0UsbUVBQW1FO0lBQzNELGVBQWUsRUFBRSxHQUFHLElBQUk7SUFDaEMsNENBQTRDO0lBQzVDLGlCQUFpQixHQUFHLElBQUksRUFDaEIsYUFBYSxrQkFBa0IsRUFDL0IsYUFBYSxpQkFBaUI7UUFKOUIsaUJBQVksR0FBWixZQUFZLENBQVk7UUFHeEIsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFaaEMsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDakUsVUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-agent.d.ts","sourceRoot":"","sources":["../../src/prover-agent/prover-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAIrB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAO9B;;GAEG;AACH,qBAAa,WAAW;IAKpB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IACrB,8DAA8D;IAC9D,OAAO,CAAC,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IAVb,OAAO,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"prover-agent.d.ts","sourceRoot":"","sources":["../../src/prover-agent/prover-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAIrB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAO9B;;GAEG;AACH,qBAAa,WAAW;IAKpB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IACrB,8DAA8D;IAC9D,OAAO,CAAC,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IAVb,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,cAAc,CAAC,CAAiB;;IAGtC,iDAAiD;IACzC,aAAa,EAAE,mBAAmB;IAC1C,8DAA8D;IACtD,cAAc,SAAI;IAC1B,oCAAoC;IAC5B,cAAc,SAAM,EACpB,GAAG,yCAAwD;IAGrE,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAO/C,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAI1D,SAAS;IAIT,KAAK,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IA8BlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWb,IAAI;IA8BlB,OAAO,CAAC,QAAQ;CAmDjB"}
|
|
@@ -18,7 +18,7 @@ export class ProverAgent {
|
|
|
18
18
|
this.maxConcurrency = maxConcurrency;
|
|
19
19
|
this.pollIntervalMs = pollIntervalMs;
|
|
20
20
|
this.log = log;
|
|
21
|
-
this.inFlightPromises = new
|
|
21
|
+
this.inFlightPromises = new Map();
|
|
22
22
|
}
|
|
23
23
|
setMaxConcurrency(maxConcurrency) {
|
|
24
24
|
if (maxConcurrency < 1) {
|
|
@@ -37,18 +37,26 @@ export class ProverAgent {
|
|
|
37
37
|
throw new Error('Agent is already running');
|
|
38
38
|
}
|
|
39
39
|
this.runningPromise = new RunningPromise(async () => {
|
|
40
|
+
for (const jobId of this.inFlightPromises.keys()) {
|
|
41
|
+
await jobSource.heartbeat(jobId);
|
|
42
|
+
}
|
|
40
43
|
while (this.inFlightPromises.size < this.maxConcurrency) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
try {
|
|
45
|
+
const job = await jobSource.getProvingJob();
|
|
46
|
+
if (!job) {
|
|
47
|
+
// job source is fully drained, sleep for a bit and try again
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const promise = this.work(jobSource, job).finally(() => this.inFlightPromises.delete(job.id));
|
|
51
|
+
this.inFlightPromises.set(job.id, promise);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
this.log.warn(`Error processing job: ${err}`);
|
|
45
55
|
}
|
|
46
|
-
const promise = this.work(jobSource, job).finally(() => this.inFlightPromises.delete(promise));
|
|
47
|
-
this.inFlightPromises.add(promise);
|
|
48
56
|
}
|
|
49
57
|
}, this.pollIntervalMs);
|
|
50
58
|
this.runningPromise.start();
|
|
51
|
-
this.log.info(
|
|
59
|
+
this.log.info(`Agent started with concurrency=${this.maxConcurrency}`);
|
|
52
60
|
}
|
|
53
61
|
async stop() {
|
|
54
62
|
if (!this.runningPromise?.isRunning()) {
|
|
@@ -60,13 +68,24 @@ export class ProverAgent {
|
|
|
60
68
|
}
|
|
61
69
|
async work(jobSource, job) {
|
|
62
70
|
try {
|
|
71
|
+
this.log.debug(`Picked up proving job id=${job.id} type=${ProvingRequestType[job.request.type]}`);
|
|
63
72
|
const [time, result] = await elapsed(this.getProof(job.request));
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
if (this.isRunning()) {
|
|
74
|
+
this.log.debug(`Processed proving job id=${job.id} type=${ProvingRequestType[job.request.type]} duration=${time}ms`);
|
|
75
|
+
await jobSource.resolveProvingJob(job.id, result);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.log.debug(`Dropping proving job id=${job.id} type=${ProvingRequestType[job.request.type]} duration=${time}ms: agent stopped`);
|
|
79
|
+
}
|
|
66
80
|
}
|
|
67
81
|
catch (err) {
|
|
68
|
-
this.
|
|
69
|
-
|
|
82
|
+
if (this.isRunning()) {
|
|
83
|
+
this.log.error(`Error processing proving job id=${job.id} type=${ProvingRequestType[job.request.type]}: ${err}`);
|
|
84
|
+
await jobSource.rejectProvingJob(job.id, new ProvingError(err?.message ?? String(err)));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
this.log.debug(`Dropping proving job id=${job.id} type=${ProvingRequestType[job.request.type]}: agent stopped: ${err}`);
|
|
88
|
+
}
|
|
70
89
|
}
|
|
71
90
|
}
|
|
72
91
|
getProof(request) {
|
|
@@ -112,4 +131,4 @@ export class ProverAgent {
|
|
|
112
131
|
}
|
|
113
132
|
}
|
|
114
133
|
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1hZ2VudC9wcm92ZXItYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLGtCQUFrQixHQUVuQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFJdEI7SUFDRSxpREFBaUQ7SUFDekMsYUFBa0M7SUFDMUMsOERBQThEO0lBQ3RELGlCQUFpQixDQUFDO0lBQzFCLG9DQUFvQztJQUM1QixpQkFBaUIsR0FBRyxFQUNwQixNQUFNLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDO1FBTDNELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUVsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBSTtRQUVsQixtQkFBYyxHQUFkLGNBQWMsQ0FBTTtRQUNwQixRQUFHLEdBQUgsR0FBRyxDQUF3RDtRQVY3RCxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJQVd4RCxDQUFDO0lBRUosaUJBQWlCLENBQUMsY0FBc0I7UUFDdEMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBa0M7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVE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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ProcessedTx } from '@aztec/circuit-types';
|
|
2
2
|
import { type BlockResult, type ProverClient, type ProvingJobSource, type ProvingTicket } from '@aztec/circuit-types/interfaces';
|
|
3
3
|
import { type Fr, type GlobalVariables, type Header, type VerificationKeys } from '@aztec/circuits.js';
|
|
4
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
5
|
import { type WorldStateSynchronizer } from '@aztec/world-state';
|
|
5
6
|
import { type ProverClientConfig } from '../config.js';
|
|
6
7
|
/**
|
|
@@ -10,6 +11,7 @@ export declare class TxProver implements ProverClient {
|
|
|
10
11
|
private config;
|
|
11
12
|
private worldStateSynchronizer;
|
|
12
13
|
private vks;
|
|
14
|
+
private telemetry;
|
|
13
15
|
private agent?;
|
|
14
16
|
private orchestrator;
|
|
15
17
|
private queue;
|
|
@@ -33,7 +35,7 @@ export declare class TxProver implements ProverClient {
|
|
|
33
35
|
* @param worldStateSynchronizer - An instance of the world state
|
|
34
36
|
* @returns An instance of the prover, constructed and started.
|
|
35
37
|
*/
|
|
36
|
-
static new(config: ProverClientConfig, vks: VerificationKeys, worldStateSynchronizer: WorldStateSynchronizer, initialHeader?: Header): Promise<TxProver>;
|
|
38
|
+
static new(config: ProverClientConfig, vks: VerificationKeys, worldStateSynchronizer: WorldStateSynchronizer, telemetry: TelemetryClient, initialHeader?: Header): Promise<TxProver>;
|
|
37
39
|
private static buildCircuitProver;
|
|
38
40
|
/**
|
|
39
41
|
* Cancels any block that is currently being built and prepares for a new one to be built
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-prover.d.ts","sourceRoot":"","sources":["../../src/tx-prover/tx-prover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvG,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKvD;;GAEG;AACH,qBAAa,QAAS,YAAW,YAAY;IAMzC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"tx-prover.d.ts","sourceRoot":"","sources":["../../src/tx-prover/tx-prover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvG,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKvD;;GAEG;AACH,qBAAa,QAAS,YAAW,YAAY;IAMzC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK,CAAC;IAThB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAiBD,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,GAAG;QAAE,GAAG,EAAE,gBAAgB,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBxG;;OAEG;IACI,KAAK;IAWZ;;OAEG;IACU,IAAI;IASjB;;;;;;OAMG;WACiB,GAAG,CACrB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,gBAAgB,EACrB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,eAAe,EAC1B,aAAa,CAAC,EAAE,MAAM;mBAeH,kBAAkB;IAevC;;;;;OAKG;IACU,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,EAAE,EAAE,GACtB,OAAO,CAAC,aAAa,CAAC;IAMzB;;;OAGG;IACI,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACI,WAAW,IAAI,IAAI;IAI1B;;OAEG;IACI,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IAI5C;;;OAGG;IACI,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,mBAAmB,IAAI,gBAAgB;CAG/C"}
|
|
@@ -7,14 +7,15 @@ import { ProverAgent } from '../prover-agent/prover-agent.js';
|
|
|
7
7
|
* A prover accepting individual transaction requests
|
|
8
8
|
*/
|
|
9
9
|
export class TxProver {
|
|
10
|
-
constructor(config, worldStateSynchronizer, vks, agent, initialHeader) {
|
|
10
|
+
constructor(config, worldStateSynchronizer, vks, telemetry, agent, initialHeader) {
|
|
11
11
|
this.config = config;
|
|
12
12
|
this.worldStateSynchronizer = worldStateSynchronizer;
|
|
13
13
|
this.vks = vks;
|
|
14
|
+
this.telemetry = telemetry;
|
|
14
15
|
this.agent = agent;
|
|
15
|
-
this.queue = new MemoryProvingQueue();
|
|
16
16
|
this.running = false;
|
|
17
|
-
this.
|
|
17
|
+
this.queue = new MemoryProvingQueue(config.proverJobTimeoutMs, config.proverJobPollIntervalMs);
|
|
18
|
+
this.orchestrator = new ProvingOrchestrator(worldStateSynchronizer.getLatest(), this.queue, telemetry, initialHeader);
|
|
18
19
|
}
|
|
19
20
|
async updateProverConfig(config) {
|
|
20
21
|
const newConfig = { ...this.config, ...config };
|
|
@@ -22,7 +23,7 @@ export class TxProver {
|
|
|
22
23
|
this.vks = config.vks;
|
|
23
24
|
}
|
|
24
25
|
if (newConfig.realProofs !== this.config.realProofs && this.agent) {
|
|
25
|
-
const circuitProver = await TxProver.buildCircuitProver(newConfig);
|
|
26
|
+
const circuitProver = await TxProver.buildCircuitProver(newConfig, this.telemetry);
|
|
26
27
|
this.agent.setCircuitProver(circuitProver);
|
|
27
28
|
}
|
|
28
29
|
if (this.config.proverAgentConcurrency !== newConfig.proverAgentConcurrency) {
|
|
@@ -41,6 +42,7 @@ export class TxProver {
|
|
|
41
42
|
return Promise.resolve();
|
|
42
43
|
}
|
|
43
44
|
this.running = true;
|
|
45
|
+
this.queue.start();
|
|
44
46
|
this.agent?.start(this.queue);
|
|
45
47
|
return Promise.resolve();
|
|
46
48
|
}
|
|
@@ -53,6 +55,7 @@ export class TxProver {
|
|
|
53
55
|
}
|
|
54
56
|
this.running = false;
|
|
55
57
|
await this.agent?.stop();
|
|
58
|
+
await this.queue.stop();
|
|
56
59
|
}
|
|
57
60
|
/**
|
|
58
61
|
* Creates a new prover client and starts it
|
|
@@ -61,22 +64,22 @@ export class TxProver {
|
|
|
61
64
|
* @param worldStateSynchronizer - An instance of the world state
|
|
62
65
|
* @returns An instance of the prover, constructed and started.
|
|
63
66
|
*/
|
|
64
|
-
static async new(config, vks, worldStateSynchronizer, initialHeader) {
|
|
67
|
+
static async new(config, vks, worldStateSynchronizer, telemetry, initialHeader) {
|
|
65
68
|
const agent = config.proverAgentEnabled
|
|
66
|
-
? new ProverAgent(await TxProver.buildCircuitProver(config), config.proverAgentConcurrency, config.proverAgentPollInterval)
|
|
69
|
+
? new ProverAgent(await TxProver.buildCircuitProver(config, telemetry), config.proverAgentConcurrency, config.proverAgentPollInterval)
|
|
67
70
|
: undefined;
|
|
68
|
-
const prover = new TxProver(config, worldStateSynchronizer, vks, agent, initialHeader);
|
|
71
|
+
const prover = new TxProver(config, worldStateSynchronizer, vks, telemetry, agent, initialHeader);
|
|
69
72
|
await prover.start();
|
|
70
73
|
return prover;
|
|
71
74
|
}
|
|
72
|
-
static async buildCircuitProver(config) {
|
|
75
|
+
static async buildCircuitProver(config, telemetry) {
|
|
73
76
|
if (config.realProofs) {
|
|
74
|
-
return await BBNativeRollupProver.new(config);
|
|
77
|
+
return await BBNativeRollupProver.new(config, telemetry);
|
|
75
78
|
}
|
|
76
79
|
const simulationProvider = config.acvmBinaryPath
|
|
77
80
|
? new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath)
|
|
78
81
|
: undefined;
|
|
79
|
-
return new TestCircuitProver(simulationProvider);
|
|
82
|
+
return new TestCircuitProver(telemetry, simulationProvider);
|
|
80
83
|
}
|
|
81
84
|
/**
|
|
82
85
|
* Cancels any block that is currently being built and prepares for a new one to be built
|
|
@@ -119,4 +122,4 @@ export class TxProver {
|
|
|
119
122
|
return this.queue;
|
|
120
123
|
}
|
|
121
124
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4LXByb3Zlci90eC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFVM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFLdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFLbkIsWUFDVSxNQUEwQixFQUMxQixzQkFBOEMsRUFDOUMsR0FBcUIsRUFDckIsU0FBMEIsRUFDMUIsS0FBbUIsRUFDM0IsYUFBc0I7UUFMZCxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFQckIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQVV0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksa0JBQWtCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxtQkFBbUIsQ0FDekMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLEVBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQ1YsU0FBUyxFQUNULGFBQWEsQ0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUErRDtRQUN0RixNQUFNLFNBQVMsR0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.44.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -34,7 +34,15 @@
|
|
|
34
34
|
"rootDir": "./src",
|
|
35
35
|
"transform": {
|
|
36
36
|
"^.+\\.tsx?$": [
|
|
37
|
-
"@swc/jest"
|
|
37
|
+
"@swc/jest",
|
|
38
|
+
{
|
|
39
|
+
"jsc": {
|
|
40
|
+
"parser": {
|
|
41
|
+
"syntax": "typescript",
|
|
42
|
+
"decorators": true
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
38
46
|
]
|
|
39
47
|
},
|
|
40
48
|
"extensionsToTreatAsEsm": [
|
|
@@ -50,14 +58,15 @@
|
|
|
50
58
|
]
|
|
51
59
|
},
|
|
52
60
|
"dependencies": {
|
|
53
|
-
"@aztec/bb-prover": "0.
|
|
54
|
-
"@aztec/circuit-types": "0.
|
|
55
|
-
"@aztec/circuits.js": "0.
|
|
56
|
-
"@aztec/foundation": "0.
|
|
57
|
-
"@aztec/kv-store": "0.
|
|
58
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
59
|
-
"@aztec/simulator": "0.
|
|
60
|
-
"@aztec/
|
|
61
|
+
"@aztec/bb-prover": "0.44.0",
|
|
62
|
+
"@aztec/circuit-types": "0.44.0",
|
|
63
|
+
"@aztec/circuits.js": "0.44.0",
|
|
64
|
+
"@aztec/foundation": "0.44.0",
|
|
65
|
+
"@aztec/kv-store": "0.44.0",
|
|
66
|
+
"@aztec/noir-protocol-circuits-types": "0.44.0",
|
|
67
|
+
"@aztec/simulator": "0.44.0",
|
|
68
|
+
"@aztec/telemetry-client": "0.44.0",
|
|
69
|
+
"@aztec/world-state": "0.44.0",
|
|
61
70
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
62
71
|
"commander": "^9.0.0",
|
|
63
72
|
"lodash.chunk": "^4.2.0",
|
package/src/config.ts
CHANGED
|
@@ -34,16 +34,16 @@ export function getProverEnvVars(): ProverClientConfig {
|
|
|
34
34
|
PROVER_AGENT_CONCURRENCY = PROVER_AGENTS,
|
|
35
35
|
PROVER_AGENT_POLL_INTERVAL_MS = '100',
|
|
36
36
|
PROVER_REAL_PROOFS = '',
|
|
37
|
+
PROVER_JOB_TIMEOUT_MS = '60000',
|
|
38
|
+
PROVER_JOB_POLL_INTERVAL_MS = '1000',
|
|
37
39
|
} = process.env;
|
|
38
40
|
|
|
39
41
|
const realProofs = ['1', 'true'].includes(PROVER_REAL_PROOFS);
|
|
40
42
|
const proverAgentEnabled = ['1', 'true'].includes(PROVER_AGENT_ENABLED);
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
? parsedProverAgentPollInterval
|
|
46
|
-
: 100;
|
|
43
|
+
const proverAgentConcurrency = safeParseNumber(PROVER_AGENT_CONCURRENCY, 1);
|
|
44
|
+
const proverAgentPollInterval = safeParseNumber(PROVER_AGENT_POLL_INTERVAL_MS, 100);
|
|
45
|
+
const proverJobTimeoutMs = safeParseNumber(PROVER_JOB_TIMEOUT_MS, 60000);
|
|
46
|
+
const proverJobPollIntervalMs = safeParseNumber(PROVER_JOB_POLL_INTERVAL_MS, 1000);
|
|
47
47
|
|
|
48
48
|
return {
|
|
49
49
|
acvmWorkingDirectory: ACVM_WORKING_DIRECTORY,
|
|
@@ -55,5 +55,12 @@ export function getProverEnvVars(): ProverClientConfig {
|
|
|
55
55
|
proverAgentPollInterval,
|
|
56
56
|
proverAgentConcurrency,
|
|
57
57
|
nodeUrl: AZTEC_NODE_URL,
|
|
58
|
+
proverJobPollIntervalMs,
|
|
59
|
+
proverJobTimeoutMs,
|
|
58
60
|
};
|
|
59
61
|
}
|
|
62
|
+
|
|
63
|
+
function safeParseNumber(value: string, defaultValue: number): number {
|
|
64
|
+
const parsedValue = parseInt(value, 10);
|
|
65
|
+
return Number.isSafeInteger(parsedValue) ? parsedValue : defaultValue;
|
|
66
|
+
}
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
WASMSimulator,
|
|
32
32
|
type WorldStatePublicDB,
|
|
33
33
|
} from '@aztec/simulator';
|
|
34
|
+
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
34
35
|
import { type MerkleTreeOperations, MerkleTrees } from '@aztec/world-state';
|
|
35
36
|
|
|
36
37
|
import * as fs from 'fs/promises';
|
|
@@ -85,7 +86,7 @@ export class TestContext {
|
|
|
85
86
|
logger: DebugLogger,
|
|
86
87
|
proverCount = 4,
|
|
87
88
|
createProver: (bbConfig: BBProverConfig) => Promise<ServerCircuitProver> = _ =>
|
|
88
|
-
Promise.resolve(new TestCircuitProver(new WASMSimulator())),
|
|
89
|
+
Promise.resolve(new TestCircuitProver(new NoopTelemetryClient(), new WASMSimulator())),
|
|
89
90
|
blockNumber = 3,
|
|
90
91
|
) {
|
|
91
92
|
const globalVariables = makeGlobals(blockNumber);
|
|
@@ -95,6 +96,7 @@ export class TestContext {
|
|
|
95
96
|
const publicWorldStateDB = mock<WorldStatePublicDB>();
|
|
96
97
|
const publicKernel = new RealPublicKernelCircuitSimulator(new WASMSimulator());
|
|
97
98
|
const actualDb = await MerkleTrees.new(openTmpStore()).then(t => t.asLatest());
|
|
99
|
+
const telemetry = new NoopTelemetryClient();
|
|
98
100
|
const processor = new PublicProcessor(
|
|
99
101
|
actualDb,
|
|
100
102
|
publicExecutor,
|
|
@@ -103,6 +105,7 @@ export class TestContext {
|
|
|
103
105
|
Header.empty(),
|
|
104
106
|
publicContractsDB,
|
|
105
107
|
publicWorldStateDB,
|
|
108
|
+
telemetry,
|
|
106
109
|
);
|
|
107
110
|
|
|
108
111
|
let localProver: ServerCircuitProver;
|
|
@@ -112,7 +115,7 @@ export class TestContext {
|
|
|
112
115
|
acvmBinaryPath: config?.expectedAcvmPath,
|
|
113
116
|
});
|
|
114
117
|
if (!config) {
|
|
115
|
-
localProver = new TestCircuitProver(simulationProvider);
|
|
118
|
+
localProver = new TestCircuitProver(new NoopTelemetryClient(), simulationProvider);
|
|
116
119
|
} else {
|
|
117
120
|
const bbConfig: BBProverConfig = {
|
|
118
121
|
acvmBinaryPath: config.expectedAcvmPath,
|
|
@@ -124,9 +127,10 @@ export class TestContext {
|
|
|
124
127
|
}
|
|
125
128
|
|
|
126
129
|
const queue = new MemoryProvingQueue();
|
|
127
|
-
const orchestrator = new ProvingOrchestrator(actualDb, queue);
|
|
130
|
+
const orchestrator = new ProvingOrchestrator(actualDb, queue, telemetry);
|
|
128
131
|
const agent = new ProverAgent(localProver, proverCount);
|
|
129
132
|
|
|
133
|
+
queue.start();
|
|
130
134
|
agent.start(queue);
|
|
131
135
|
|
|
132
136
|
return new this(
|