@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.
@@ -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
- constructor(generateId?: () => string);
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":"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"}
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 { AbortedError, TimeoutError } from '@aztec/foundation/error';
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(generateId = defaultIdGenerator) {
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
- return Promise.reject(new Error('Job not found'));
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
- return Promise.resolve();
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
- return Promise.reject(new Error('Job not found'));
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 AbortedError('Operation has been aborted')));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXByb3ZpbmctcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyLWFnZW50L21lbW9yeS1wcm92aW5nLXF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxrQkFBa0IsR0FLbkIsTUFBTSxzQkFBc0IsQ0FBQztBQWlCOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBNkIsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVM1RixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRWhFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFLN0IsWUFBb0IsYUFBYSxrQkFBa0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFKM0MsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDakUsVUFBSyxHQUFHLElBQUksVUFBVSxFQUEyQixDQUFDO1FBQ2xELG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7SUFFZCxDQUFDO0lBRXZELEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRTtRQUN6QyxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxD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
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXByb3ZpbmctcXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyLWFnZW50L21lbW9yeS1wcm92aW5nLXF1ZXVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxrQkFBa0IsR0FLbkIsTUFBTSxzQkFBc0IsQ0FBQztBQWlCOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBNkIsY0FBYyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFVNUcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXRCLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRSxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBTzdCO0lBQ0UsbUVBQW1FO0lBQzNELGVBQWUsRUFBRSxHQUFHLElBQUk7SUFDaEMsNENBQTRDO0lBQzVDLGlCQUFpQixHQUFHLElBQUksRUFDaEIsYUFBYSxrQkFBa0IsRUFDL0IsYUFBYSxpQkFBaUI7UUFKOUIsaUJBQVksR0FBWixZQUFZLENBQVk7UUFHeEIsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDL0IsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFaaEMsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDakUsVUFBSyxHQUFHLElBQUksVUFBVSxFQUEyQixDQUFDO1FBQ2xELG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7UUFxSTVELFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRTlCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbkMsU0FBUztnQkFDWCxDQUFDO2dCQUVELElBQUksR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFFMUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNuQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBMUlBLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUNsRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDbEQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDVCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNyQyxPQUFPO2dCQUNMLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDVixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87YUFDckIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxHQUFHLFlBQVksWUFBWSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sU0FBUyxDQUFDO1lBQ25CLENBQUM7WUFFRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQStCLEtBQWEsRUFBRSxNQUErQjtRQUM1RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLDJCQUEyQixDQUFDLENBQUM7WUFDMUQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsR0FBUTtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLDBCQUEwQixDQUFDLENBQUM7WUFDekQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUN4QixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxHQUFHLENBQUMsUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQy9CLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNYLFVBQVUsR0FBRyxDQUFDLEVBQUUsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxXQUNyRixHQUFHLENBQUMsUUFDTixJQUFJLFdBQVcsRUFBRSxDQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBYTtRQUMvQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFxQk8sT0FBTyxDQUNiLE9BQVUsRUFDVixNQUFvQjtRQUVwQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLG9CQUFvQixFQUFtQyxDQUFDO1FBQzdGLE1BQU0sSUFBSSxHQUErQjtZQUN2QyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNyQixPQUFPO1lBQ1AsTUFBTTtZQUNOLE9BQU87WUFDUCxPQUFPO1lBQ1AsTUFBTTtZQUNOLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYixDQUFDO1FBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWixhQUFhLElBQUksQ0FBQyxFQUFFLFNBQVMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNsSCxDQUFDO1FBQ0YsZ0NBQWdDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNwQixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELDBCQUEwQixDQUN4QixNQUFtQyxFQUNuQyxNQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUNoQixNQUF3QixFQUN4QixNQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFdBQVc7WUFDcEMsTUFBTTtTQUNQLEVBQ0QsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLENBQ2hCLE1BQXdCLEVBQ3hCLE1BQW9CO1FBRXBCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FDakI7WUFDRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsV0FBVztZQUNwQyxNQUFNO1NBQ1AsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsQ0FDaEIsS0FBdUIsRUFDdkIsTUFBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQjtZQUNFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxXQUFXO1lBQ3BDLE1BQU0sRUFBRSxLQUFLO1NBQ2QsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtQkFBbUIsQ0FDakIsS0FBd0IsRUFDeEIsTUFBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQjtZQUNFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3JDLE1BQU0sRUFBRSxLQUFLO1NBQ2QsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsQ0FDaEIsS0FBdUIsRUFDdkIsTUFBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQjtZQUNFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxXQUFXO1lBQ3BDLE1BQU0sRUFBRSxLQUFLO1NBQ2QsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0IsQ0FDbEIsYUFBeUMsRUFDekMsTUFBb0I7UUFFcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUNqQjtZQUNFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0I7WUFDL0MsVUFBVSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1lBQzlCLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtTQUM3QixFQUNELE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixDQUNoQixhQUFzQyxFQUN0QyxNQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQixDQUFDLGtCQUFrQjtZQUMzQyxVQUFVLEVBQUUsYUFBYSxDQUFDLElBQUk7WUFDOUIsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO1NBQzdCLEVBQ0QsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsTUFBd0IsRUFBRSxNQUFnQztRQUNwRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQ2pCO1lBQ0UsSUFBSSxFQUFFLGtCQUFrQixDQUFDLFNBQVM7WUFDbEMsTUFBTTtTQUNQLEVBQ0QsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNGIn0=
@@ -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,CAA2B;IACnD,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;IAsBlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAWb,IAAI;IAalB,OAAO,CAAC,QAAQ;CAmDjB"}
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 Set();
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
- const job = await jobSource.getProvingJob();
42
- if (!job) {
43
- // job source is fully drained, sleep for a bit and try again
44
- return;
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('Agent started');
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
- await jobSource.resolveProvingJob(job.id, result);
65
- this.log.debug(`Processed proving job id=${job.id} type=${ProvingRequestType[job.request.type]} duration=${time}ms`);
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.log.error(`Error processing proving job id=${job.id} type=${ProvingRequestType[job.request.type]}: ${err}`);
69
- await jobSource.rejectProvingJob(job.id, new ProvingError(err?.message ?? String(err)));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1hZ2VudC9wcm92ZXItYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLGtCQUFrQixHQUVuQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFJdEI7SUFDRSxpREFBaUQ7SUFDekMsYUFBa0M7SUFDMUMsOERBQThEO0lBQ3RELGlCQUFpQixDQUFDO0lBQzFCLG9DQUFvQztJQUM1QixpQkFBaUIsR0FBRyxFQUNwQixNQUFNLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDO1FBTDNELGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUVsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBSTtRQUVsQixtQkFBYyxHQUFkLGNBQWMsQ0FBTTtRQUNwQixRQUFHLEdBQUgsR0FBRyxDQUF3RDtRQVY3RCxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBZ0IsQ0FBQztJQVdoRCxDQUFDO0lBRUosaUJBQWlCLENBQUMsY0FBc0I7UUFDdEMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsYUFBa0M7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVE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
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;IARhB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAUD,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,GAAG;QAAE,GAAG,EAAE,gBAAgB,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBxG;;OAEG;IACI,KAAK;IAUZ;;OAEG;IACU,IAAI;IAQjB;;;;;;OAMG;WACiB,GAAG,CACrB,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,gBAAgB,EACrB,sBAAsB,EAAE,sBAAsB,EAC9C,aAAa,CAAC,EAAE,MAAM;mBAeH,kBAAkB;IAYvC;;;;;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"}
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.orchestrator = new ProvingOrchestrator(worldStateSynchronizer.getLatest(), this.queue, initialHeader);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4LXByb3Zlci90eC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFVM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFLbkIsWUFDVSxNQUEwQixFQUMxQixzQkFBOEMsRUFDOUMsR0FBcUIsRUFDckIsS0FBbUIsRUFDM0IsYUFBc0I7UUFKZCxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQ3JCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFQckIsVUFBSyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNqQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBU3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBK0Q7UUFDdEYsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUVoRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxH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
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.42.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.42.0",
54
- "@aztec/circuit-types": "0.42.0",
55
- "@aztec/circuits.js": "0.42.0",
56
- "@aztec/foundation": "0.42.0",
57
- "@aztec/kv-store": "0.42.0",
58
- "@aztec/noir-protocol-circuits-types": "0.42.0",
59
- "@aztec/simulator": "0.42.0",
60
- "@aztec/world-state": "0.42.0",
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 parsedProverConcurrency = parseInt(PROVER_AGENT_CONCURRENCY, 10);
42
- const proverAgentConcurrency = Number.isSafeInteger(parsedProverConcurrency) ? parsedProverConcurrency : 1;
43
- const parsedProverAgentPollInterval = parseInt(PROVER_AGENT_POLL_INTERVAL_MS, 10);
44
- const proverAgentPollInterval = Number.isSafeInteger(parsedProverAgentPollInterval)
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(