@aztec/prover-client 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240
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 +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +16 -2
- package/dest/light/lightweight_checkpoint_builder.d.ts +16 -7
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +75 -27
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +2 -1
- package/dest/mocks/test_context.d.ts +5 -2
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +23 -9
- package/dest/orchestrator/block-building-helpers.d.ts +5 -5
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +3 -3
- package/dest/orchestrator/block-proving-state.d.ts +4 -1
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +7 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts +24 -4
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +47 -5
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +107 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +151 -0
- package/dest/orchestrator/epoch-proving-context.d.ts +51 -0
- package/dest/orchestrator/epoch-proving-context.d.ts.map +1 -0
- package/dest/orchestrator/epoch-proving-context.js +81 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +7 -6
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +37 -1
- package/dest/orchestrator/index.d.ts +4 -1
- package/dest/orchestrator/index.d.ts.map +1 -1
- package/dest/orchestrator/index.js +3 -0
- package/dest/orchestrator/orchestrator.d.ts +29 -24
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +137 -225
- package/dest/orchestrator/proving-scheduler.d.ts +72 -0
- package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
- package/dest/orchestrator/proving-scheduler.js +117 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts +83 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-orchestrator.js +182 -0
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts +62 -0
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-proving-scheduler.js +73 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-proving-state.js +185 -0
- package/dest/prover-client/prover-client.d.ts +64 -5
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +64 -11
- package/dest/proving_broker/broker_prover_facade.d.ts +4 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +16 -22
- package/dest/proving_broker/config.d.ts +12 -64
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +22 -5
- package/dest/proving_broker/index.d.ts +2 -1
- package/dest/proving_broker/index.d.ts.map +1 -1
- package/dest/proving_broker/index.js +1 -0
- package/dest/proving_broker/proof_store/factory.d.ts +2 -5
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/factory.js +7 -30
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
- package/dest/proving_broker/proof_store/index.d.ts +2 -2
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -1
- package/dest/proving_broker/proving_agent.d.ts +4 -3
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +4 -4
- package/dest/proving_broker/proving_broker.d.ts +8 -5
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +68 -11
- package/dest/proving_broker/proving_broker_database/persisted.js +2 -2
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +18 -7
- package/dest/proving_broker/proving_job_controller.d.ts +4 -3
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +6 -3
- package/dest/proving_broker/rpc.d.ts +6 -2
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +87 -23
- package/dest/test/mock_proof_store.d.ts +3 -3
- package/dest/test/mock_proof_store.d.ts.map +1 -1
- package/dest/test/mock_prover.d.ts +4 -4
- package/package.json +19 -21
- package/src/config.ts +18 -2
- package/src/light/lightweight_checkpoint_builder.ts +107 -36
- package/src/mocks/fixtures.ts +2 -1
- package/src/mocks/test_context.ts +18 -10
- package/src/orchestrator/block-building-helpers.ts +3 -3
- package/src/orchestrator/block-proving-state.ts +9 -0
- package/src/orchestrator/checkpoint-proving-state.ts +65 -6
- package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +271 -0
- package/src/orchestrator/epoch-proving-context.ts +101 -0
- package/src/orchestrator/epoch-proving-state.ts +59 -9
- package/src/orchestrator/index.ts +8 -0
- package/src/orchestrator/orchestrator.ts +161 -290
- package/src/orchestrator/proving-scheduler.ts +156 -0
- package/src/orchestrator/top-tree-orchestrator.ts +314 -0
- package/src/orchestrator/top-tree-proving-scheduler.ts +154 -0
- package/src/orchestrator/top-tree-proving-state.ts +220 -0
- package/src/prover-client/prover-client.ts +155 -15
- package/src/proving_broker/broker_prover_facade.ts +23 -23
- package/src/proving_broker/config.ts +25 -2
- package/src/proving_broker/index.ts +1 -0
- package/src/proving_broker/proof_store/factory.ts +10 -32
- package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
- package/src/proving_broker/proof_store/index.ts +1 -1
- package/src/proving_broker/proving_agent.ts +5 -2
- package/src/proving_broker/proving_broker.ts +64 -8
- package/src/proving_broker/proving_broker_database/persisted.ts +2 -2
- package/src/proving_broker/proving_broker_instrumentation.ts +19 -6
- package/src/proving_broker/proving_job_controller.ts +9 -3
- package/src/proving_broker/rpc.ts +46 -20
- package/dest/block-factory/index.d.ts +0 -2
- package/dest/block-factory/index.d.ts.map +0 -1
- package/dest/block-factory/index.js +0 -1
- package/dest/block-factory/light.d.ts +0 -38
- package/dest/block-factory/light.d.ts.map +0 -1
- package/dest/block-factory/light.js +0 -106
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
- package/src/block-factory/index.ts +0 -1
- package/src/block-factory/light.ts +0 -136
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
|
@@ -51,7 +51,8 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
51
51
|
*/ epochHeight;
|
|
52
52
|
maxEpochsToKeepResultsFor;
|
|
53
53
|
started;
|
|
54
|
-
|
|
54
|
+
debugReplayEnabled;
|
|
55
|
+
constructor(database, { proverBrokerJobTimeoutMs, proverBrokerPollIntervalMs, proverBrokerJobMaxRetries, proverBrokerMaxEpochsToKeepResultsFor, proverBrokerDebugReplayEnabled } = defaultProverBrokerConfig, client = getTelemetryClient(), logger = createLogger('prover-client:proving-broker')){
|
|
55
56
|
this.database = database;
|
|
56
57
|
this.logger = logger;
|
|
57
58
|
this.queues = {
|
|
@@ -104,6 +105,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
104
105
|
this.jobTimeoutMs = proverBrokerJobTimeoutMs;
|
|
105
106
|
this.maxRetries = proverBrokerJobMaxRetries;
|
|
106
107
|
this.maxEpochsToKeepResultsFor = proverBrokerMaxEpochsToKeepResultsFor;
|
|
108
|
+
this.debugReplayEnabled = proverBrokerDebugReplayEnabled ?? false;
|
|
107
109
|
}
|
|
108
110
|
measureQueueDepth;
|
|
109
111
|
countActiveJobs;
|
|
@@ -163,6 +165,32 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
163
165
|
reportProvingJobProgress(id, startedAt, filter) {
|
|
164
166
|
return Promise.resolve(this.#reportProvingJobProgress(id, startedAt, filter));
|
|
165
167
|
}
|
|
168
|
+
async replayProvingJob(jobId, type, epochNumber, inputsUri) {
|
|
169
|
+
if (!this.debugReplayEnabled) {
|
|
170
|
+
throw new Error('Debug replay not enabled. Set PROVER_BROKER_DEBUG_REPLAY_ENABLED=true');
|
|
171
|
+
}
|
|
172
|
+
this.logger.info(`Replaying proving job`, {
|
|
173
|
+
provingJobId: jobId,
|
|
174
|
+
epochNumber,
|
|
175
|
+
inputsUri
|
|
176
|
+
});
|
|
177
|
+
// Clear existing state and enqueue
|
|
178
|
+
this.cleanUpProvingJobState([
|
|
179
|
+
jobId
|
|
180
|
+
]);
|
|
181
|
+
const job = {
|
|
182
|
+
id: jobId,
|
|
183
|
+
type,
|
|
184
|
+
epochNumber,
|
|
185
|
+
inputsUri
|
|
186
|
+
};
|
|
187
|
+
this.jobsCache.set(jobId, job);
|
|
188
|
+
await this.database.addProvingJob(job);
|
|
189
|
+
this.enqueueJobInternal(job);
|
|
190
|
+
return {
|
|
191
|
+
status: 'in-queue'
|
|
192
|
+
};
|
|
193
|
+
}
|
|
166
194
|
async #enqueueProvingJob(job) {
|
|
167
195
|
// We return the job status at the start of this call
|
|
168
196
|
const jobStatus = this.#getProvingJobStatus(job.id);
|
|
@@ -211,18 +239,27 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
211
239
|
this.logger.info(`Cancelling job id=${id}`, {
|
|
212
240
|
provingJobId: id
|
|
213
241
|
});
|
|
214
|
-
await this.#reportProvingJobError(id, 'Aborted', false);
|
|
242
|
+
await this.#reportProvingJobError(id, 'Aborted', false, undefined, true);
|
|
215
243
|
}
|
|
216
244
|
}
|
|
217
245
|
cleanUpProvingJobState(ids) {
|
|
246
|
+
const idsToClean = new Set(ids);
|
|
218
247
|
for (const id of ids){
|
|
219
248
|
this.jobsCache.delete(id);
|
|
249
|
+
const deferred = this.promises.get(id);
|
|
250
|
+
if (deferred) {
|
|
251
|
+
deferred.resolve({
|
|
252
|
+
status: 'rejected',
|
|
253
|
+
reason: 'Proving job cleaned up'
|
|
254
|
+
});
|
|
255
|
+
}
|
|
220
256
|
this.promises.delete(id);
|
|
221
257
|
this.resultsCache.delete(id);
|
|
222
258
|
this.inProgress.delete(id);
|
|
223
259
|
this.retries.delete(id);
|
|
224
260
|
this.enqueuedAt.delete(id);
|
|
225
261
|
}
|
|
262
|
+
this.completedJobNotifications = this.completedJobNotifications.filter((id)=>!idsToClean.has(id));
|
|
226
263
|
}
|
|
227
264
|
#getProvingJobStatus(id) {
|
|
228
265
|
const result = this.resultsCache.get(id);
|
|
@@ -285,7 +322,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
285
322
|
}
|
|
286
323
|
return undefined;
|
|
287
324
|
}
|
|
288
|
-
async #reportProvingJobError(id, err, retry = false, filter) {
|
|
325
|
+
async #reportProvingJobError(id, err, retry = false, filter, aborted = false) {
|
|
289
326
|
const info = this.inProgress.get(id);
|
|
290
327
|
const item = this.jobsCache.get(id);
|
|
291
328
|
const retries = this.retries.get(id) ?? 0;
|
|
@@ -332,7 +369,11 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
332
369
|
this.resultsCache.set(id, result);
|
|
333
370
|
this.promises.get(id).resolve(result);
|
|
334
371
|
this.completedJobNotifications.push(id);
|
|
335
|
-
|
|
372
|
+
if (aborted) {
|
|
373
|
+
this.instrumentation.incAbortedJobs(item.type);
|
|
374
|
+
} else {
|
|
375
|
+
this.instrumentation.incRejectedJobs(item.type);
|
|
376
|
+
}
|
|
336
377
|
if (info) {
|
|
337
378
|
const duration = this.msTimeSource() - info.startedAt;
|
|
338
379
|
this.instrumentation.recordJobDuration(item.type, duration);
|
|
@@ -447,20 +488,20 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
447
488
|
return this.#getProvingJob(filter);
|
|
448
489
|
}
|
|
449
490
|
async cleanupPass() {
|
|
450
|
-
this.cleanupStaleJobs();
|
|
451
491
|
this.reEnqueueExpiredJobs();
|
|
452
492
|
const oldestEpochToKeep = this.oldestEpochToKeep();
|
|
453
493
|
if (oldestEpochToKeep > 0) {
|
|
494
|
+
this.cleanupJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
|
|
454
495
|
await this.database.deleteAllProvingJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
|
|
455
496
|
this.logger.trace(`Deleted all epochs older than ${oldestEpochToKeep}`);
|
|
456
497
|
}
|
|
457
498
|
}
|
|
458
|
-
|
|
499
|
+
cleanupJobsOlderThanEpoch(epochNumber) {
|
|
459
500
|
const jobIds = Array.from(this.jobsCache.keys());
|
|
460
501
|
const jobsToClean = [];
|
|
461
502
|
for (const id of jobIds){
|
|
462
503
|
const job = this.jobsCache.get(id);
|
|
463
|
-
if (
|
|
504
|
+
if (job.epochNumber < epochNumber) {
|
|
464
505
|
jobsToClean.push(id);
|
|
465
506
|
}
|
|
466
507
|
}
|
|
@@ -483,12 +524,28 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
483
524
|
const now = this.msTimeSource();
|
|
484
525
|
const msSinceLastUpdate = now - metadata.lastUpdatedAt;
|
|
485
526
|
if (msSinceLastUpdate >= this.jobTimeoutMs) {
|
|
486
|
-
this.logger.warn(`Proving job id=${id} timed out. Adding it back to the queue.`, {
|
|
487
|
-
provingJobId: id
|
|
488
|
-
});
|
|
489
527
|
this.inProgress.delete(id);
|
|
490
|
-
this.enqueueJobInternal(item);
|
|
491
528
|
this.instrumentation.incTimedOutJobs(item.type);
|
|
529
|
+
const retries = this.retries.get(id) ?? 0;
|
|
530
|
+
if (retries + 1 < this.maxRetries && !this.isJobStale(item)) {
|
|
531
|
+
this.logger.warn(`Proving job id=${id} timed out. Re-enqueueing (retry ${retries + 1}/${this.maxRetries}).`, {
|
|
532
|
+
provingJobId: id
|
|
533
|
+
});
|
|
534
|
+
this.retries.set(id, retries + 1);
|
|
535
|
+
this.enqueueJobInternal(item);
|
|
536
|
+
} else {
|
|
537
|
+
this.logger.error(`Proving job id=${id} timed out after ${retries + 1} attempts. Marking as failed.`, {
|
|
538
|
+
provingJobId: id
|
|
539
|
+
});
|
|
540
|
+
const result = {
|
|
541
|
+
status: 'rejected',
|
|
542
|
+
reason: 'Timed out'
|
|
543
|
+
};
|
|
544
|
+
this.resultsCache.set(id, result);
|
|
545
|
+
this.promises.get(id)?.resolve(result);
|
|
546
|
+
this.completedJobNotifications.push(id);
|
|
547
|
+
this.instrumentation.incRejectedJobs(item.type);
|
|
548
|
+
}
|
|
492
549
|
}
|
|
493
550
|
}
|
|
494
551
|
}
|
|
@@ -499,7 +499,7 @@ export class KVBrokerDatabase {
|
|
|
499
499
|
continue;
|
|
500
500
|
}
|
|
501
501
|
logger.info(`Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKb}KB`);
|
|
502
|
-
const db = await openVersionedStoreAt(fullDirectory, SingleEpochDatabase.SCHEMA_VERSION, config.
|
|
502
|
+
const db = await openVersionedStoreAt(fullDirectory, SingleEpochDatabase.SCHEMA_VERSION, config.rollupAddress, config.dataStoreMapSizeKb);
|
|
503
503
|
const epochDb = new SingleEpochDatabase(db);
|
|
504
504
|
epochs.set(epochNumber, epochDb);
|
|
505
505
|
}
|
|
@@ -563,7 +563,7 @@ export class KVBrokerDatabase {
|
|
|
563
563
|
recursive: true
|
|
564
564
|
});
|
|
565
565
|
this.logger.info(`Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKb}`);
|
|
566
|
-
const db = await openVersionedStoreAt(newEpochDirectory, SingleEpochDatabase.SCHEMA_VERSION, this.config.
|
|
566
|
+
const db = await openVersionedStoreAt(newEpochDirectory, SingleEpochDatabase.SCHEMA_VERSION, this.config.rollupAddress, this.config.dataStoreMapSizeKb);
|
|
567
567
|
epochDb = new SingleEpochDatabase(db);
|
|
568
568
|
this.epochs.set(epochNumber, epochDb);
|
|
569
569
|
}
|
|
@@ -7,6 +7,7 @@ export declare class ProvingBrokerInstrumentation {
|
|
|
7
7
|
private activeJobs;
|
|
8
8
|
private resolvedJobs;
|
|
9
9
|
private rejectedJobs;
|
|
10
|
+
private abortedJobs;
|
|
10
11
|
private timedOutJobs;
|
|
11
12
|
private cachedJobs;
|
|
12
13
|
private totalJobs;
|
|
@@ -18,6 +19,7 @@ export declare class ProvingBrokerInstrumentation {
|
|
|
18
19
|
monitorActiveJobs(fn: MonitorCallback): void;
|
|
19
20
|
incResolvedJobs(proofType: ProvingRequestType): void;
|
|
20
21
|
incRejectedJobs(proofType: ProvingRequestType): void;
|
|
22
|
+
incAbortedJobs(proofType: ProvingRequestType): void;
|
|
21
23
|
incRetriedJobs(proofType: ProvingRequestType): void;
|
|
22
24
|
incTimedOutJobs(proofType: ProvingRequestType): void;
|
|
23
25
|
incCachedJobs(proofType: ProvingRequestType): void;
|
|
@@ -26,4 +28,4 @@ export declare class ProvingBrokerInstrumentation {
|
|
|
26
28
|
recordJobDuration(proofType: ProvingRequestType, msOrTimer: Timer | number): void;
|
|
27
29
|
private observe;
|
|
28
30
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19icm9rZXJfaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19icm9rZXJfaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFNTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxNQUFNLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLGtCQUFrQixLQUFLLE1BQU0sQ0FBQztBQUV4RSxxQkFBYSw0QkFBNEI7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBa0I7SUFDbkMsT0FBTyxDQUFDLFVBQVUsQ0FBa0I7SUFDcEMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFdBQVcsQ0FBZ0I7SUFDbkMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFVBQVUsQ0FBZ0I7SUFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBZ0I7SUFDakMsT0FBTyxDQUFDLE9BQU8sQ0FBWTtJQUMzQixPQUFPLENBQUMsV0FBVyxDQUFZO0lBQy9CLE9BQU8sQ0FBQyxXQUFXLENBQWdCO0lBRW5DLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLFNBQWtCLEVBMkIxRDtJQUVELGlCQUFpQixDQUFDLEVBQUUsRUFBRSxlQUFlLFFBRXBDO0lBRUQsaUJBQWlCLENBQUMsRUFBRSxFQUFFLGVBQWUsUUFFcEM7SUFFRCxlQUFlLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUk1QztJQUVELGVBQWUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLFFBSTVDO0lBRUQsY0FBYyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsUUFJM0M7SUFFRCxjQUFjLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUkzQztJQUVELGVBQWUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLFFBSTVDO0lBRUQsYUFBYSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsUUFJMUM7SUFFRCxZQUFZLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUl6QztJQUVELGFBQWEsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLEtBQUssR0FBRyxNQUFNLFFBS3JFO0lBRUQsaUJBQWlCLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQUt6RTtJQUVELE9BQU8sQ0FBQyxPQUFPO0NBV2hCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAML,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"proving_broker_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAML,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;AAExE,qBAAa,4BAA4B;IACvC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,WAAW,CAAgB;IAEnC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAkB,EA2B1D;IAED,iBAAiB,CAAC,EAAE,EAAE,eAAe,QAEpC;IAED,iBAAiB,CAAC,EAAE,EAAE,eAAe,QAEpC;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,cAAc,CAAC,SAAS,EAAE,kBAAkB,QAI3C;IAED,cAAc,CAAC,SAAS,EAAE,kBAAkB,QAI3C;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,aAAa,CAAC,SAAS,EAAE,kBAAkB,QAI1C;IAED,YAAY,CAAC,SAAS,EAAE,kBAAkB,QAIzC;IAED,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKrE;IAED,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKzE;IAED,OAAO,CAAC,OAAO;CAWhB"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
|
-
import { Attributes, Metrics } from '@aztec/telemetry-client';
|
|
2
|
+
import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
|
|
3
3
|
export class ProvingBrokerInstrumentation {
|
|
4
4
|
queueSize;
|
|
5
5
|
activeJobs;
|
|
6
6
|
resolvedJobs;
|
|
7
7
|
rejectedJobs;
|
|
8
|
+
abortedJobs;
|
|
8
9
|
timedOutJobs;
|
|
9
10
|
cachedJobs;
|
|
10
11
|
totalJobs;
|
|
@@ -15,12 +16,17 @@ export class ProvingBrokerInstrumentation {
|
|
|
15
16
|
const meter = client.getMeter(name);
|
|
16
17
|
this.queueSize = meter.createObservableGauge(Metrics.PROVING_QUEUE_SIZE);
|
|
17
18
|
this.activeJobs = meter.createObservableGauge(Metrics.PROVING_QUEUE_ACTIVE_JOBS);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
19
|
+
const provingJobTypes = Object.values(ProvingRequestType).filter((v)=>typeof v === 'string');
|
|
20
|
+
const provingJobAttrs = {
|
|
21
|
+
[Attributes.PROVING_JOB_TYPE]: provingJobTypes
|
|
22
|
+
};
|
|
23
|
+
this.resolvedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RESOLVED_JOBS, provingJobAttrs);
|
|
24
|
+
this.rejectedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_REJECTED_JOBS, provingJobAttrs);
|
|
25
|
+
this.abortedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_ABORTED_JOBS, provingJobAttrs);
|
|
26
|
+
this.retriedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RETRIED_JOBS, provingJobAttrs);
|
|
27
|
+
this.timedOutJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_TIMED_OUT_JOBS, provingJobAttrs);
|
|
28
|
+
this.cachedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_CACHED_JOBS, provingJobAttrs);
|
|
29
|
+
this.totalJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_TOTAL_JOBS, provingJobAttrs);
|
|
24
30
|
this.jobWait = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_WAIT);
|
|
25
31
|
this.jobDuration = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_DURATION);
|
|
26
32
|
}
|
|
@@ -40,6 +46,11 @@ export class ProvingBrokerInstrumentation {
|
|
|
40
46
|
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
41
47
|
});
|
|
42
48
|
}
|
|
49
|
+
incAbortedJobs(proofType) {
|
|
50
|
+
this.abortedJobs.add(1, {
|
|
51
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
52
|
+
});
|
|
53
|
+
}
|
|
43
54
|
incRetriedJobs(proofType) {
|
|
44
55
|
this.retriedJobs.add(1, {
|
|
45
56
|
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
2
3
|
import type { ProvingJobId, ProvingJobInputs, ProvingJobResultsMap, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
4
5
|
export declare enum ProvingJobControllerStatus {
|
|
@@ -13,12 +14,12 @@ export declare class ProvingJobController {
|
|
|
13
14
|
private startedAt;
|
|
14
15
|
private circuitProver;
|
|
15
16
|
private onComplete;
|
|
16
|
-
private log;
|
|
17
17
|
private status;
|
|
18
18
|
private promise?;
|
|
19
19
|
private abortController;
|
|
20
20
|
private result?;
|
|
21
|
-
|
|
21
|
+
private log;
|
|
22
|
+
constructor(jobId: ProvingJobId, inputs: ProvingJobInputs, epochNumber: EpochNumber, startedAt: number, circuitProver: ServerCircuitProver, onComplete: () => void, bindings?: LoggerBindings);
|
|
22
23
|
start(): void;
|
|
23
24
|
getStatus(): ProvingJobControllerStatus;
|
|
24
25
|
getResult(): ProvingJobResultsMap[ProvingRequestType] | Error | undefined;
|
|
@@ -30,4 +31,4 @@ export declare class ProvingJobController {
|
|
|
30
31
|
private run;
|
|
31
32
|
private generateProof;
|
|
32
33
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19qb2JfY29udHJvbGxlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL3Byb3Zpbmdfam9iX2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzlELE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFDVixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDcEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxvQkFBWSwwQkFBMEI7SUFDcEMsSUFBSSxTQUFTO0lBQ2IsT0FBTyxZQUFZO0lBQ25CLElBQUksU0FBUztDQUNkO0FBRUQscUJBQWEsb0JBQW9CO0lBUTdCLE9BQU8sQ0FBQyxLQUFLO0lBQ2IsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsV0FBVztJQUNuQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsVUFBVTtJQVpwQixPQUFPLENBQUMsTUFBTSxDQUErRDtJQUM3RSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQWdCO0lBQ2hDLE9BQU8sQ0FBQyxlQUFlLENBQXlCO0lBQ2hELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBbUQ7SUFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUVwQixZQUNVLEtBQUssRUFBRSxZQUFZLEVBQ25CLE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsU0FBUyxFQUFFLE1BQU0sRUFDakIsYUFBYSxFQUFFLG1CQUFtQixFQUNsQyxVQUFVLEVBQUUsTUFBTSxJQUFJLEVBQzlCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFNMUI7SUFFTSxLQUFLLElBQUksSUFBSSxDQWlCbkI7SUFFTSxTQUFTLElBQUksMEJBQTBCLENBRTdDO0lBRU0sU0FBUyxJQUFJLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxHQUFHLFNBQVMsQ0FFL0U7SUFFTSxLQUFLLElBQUksSUFBSSxDQWFuQjtJQUVNLFFBQVEsSUFBSSxZQUFZLENBRTlCO0lBRU0sWUFBWSxJQUFJLGtCQUFrQixDQUV4QztJQUVNLFlBQVksSUFBSSxNQUFNLENBRTVCO0lBRU0sZ0JBQWdCLElBQUksTUFBTSxDQUVoQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBNEJUO1lBRVksYUFBYTtDQWtGNUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_job_controller.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_job_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"proving_job_controller.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_job_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,oBAAY,0BAA0B;IACpC,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;IAZpB,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,MAAM,CAAC,CAAmD;IAClE,OAAO,CAAC,GAAG,CAAS;IAEpB,YACU,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,IAAI,EAC9B,QAAQ,CAAC,EAAE,cAAc,EAM1B;IAEM,KAAK,IAAI,IAAI,CAiBnB;IAEM,SAAS,IAAI,0BAA0B,CAE7C;IAEM,SAAS,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,KAAK,GAAG,SAAS,CAE/E;IAEM,KAAK,IAAI,IAAI,CAanB;IAEM,QAAQ,IAAI,YAAY,CAE9B;IAEM,YAAY,IAAI,kBAAkB,CAExC;IAEM,YAAY,IAAI,MAAM,CAE5B;IAEM,gBAAgB,IAAI,MAAM,CAEhC;IAED,OAAO,CAAC,GAAG,CA4BT;YAEY,aAAa;CAkF5B"}
|
|
@@ -15,19 +15,18 @@ export class ProvingJobController {
|
|
|
15
15
|
startedAt;
|
|
16
16
|
circuitProver;
|
|
17
17
|
onComplete;
|
|
18
|
-
log;
|
|
19
18
|
status;
|
|
20
19
|
promise;
|
|
21
20
|
abortController;
|
|
22
21
|
result;
|
|
23
|
-
|
|
22
|
+
log;
|
|
23
|
+
constructor(jobId, inputs, epochNumber, startedAt, circuitProver, onComplete, bindings){
|
|
24
24
|
this.jobId = jobId;
|
|
25
25
|
this.inputs = inputs;
|
|
26
26
|
this.epochNumber = epochNumber;
|
|
27
27
|
this.startedAt = startedAt;
|
|
28
28
|
this.circuitProver = circuitProver;
|
|
29
29
|
this.onComplete = onComplete;
|
|
30
|
-
this.log = log;
|
|
31
30
|
this.status = "idle";
|
|
32
31
|
this.abortController = new AbortController();
|
|
33
32
|
this.run = async ()=>{
|
|
@@ -61,6 +60,10 @@ export class ProvingJobController {
|
|
|
61
60
|
});
|
|
62
61
|
}
|
|
63
62
|
};
|
|
63
|
+
this.log = createLogger('prover-client:proving-agent:job-controller', {
|
|
64
|
+
instanceId: randomBytes(4).toString('hex'),
|
|
65
|
+
...bindings
|
|
66
|
+
});
|
|
64
67
|
}
|
|
65
68
|
start() {
|
|
66
69
|
if (this.status !== "idle") {
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { type ProvingJobBroker, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
1
|
+
import { type ProvingJobBroker, type ProvingJobBrokerDebug, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
2
2
|
import { type ApiSchemaFor } from '@aztec/stdlib/schemas';
|
|
3
3
|
import { type ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
4
|
+
/** Indefinite backoff for broker communication: 1, 1, 1, 2, 4, 4, 4, ... seconds. */
|
|
5
|
+
export declare function proverBrokerBackoff(): Generator<number, void, unknown>;
|
|
4
6
|
export declare const ProvingJobProducerSchema: ApiSchemaFor<ProvingJobProducer>;
|
|
5
7
|
export declare const ProvingJobConsumerSchema: ApiSchemaFor<ProvingJobConsumer>;
|
|
6
8
|
export declare const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker>;
|
|
9
|
+
export declare const ProvingJobBrokerDebugSchema: ApiSchemaFor<ProvingJobBrokerDebug>;
|
|
10
|
+
export declare const ProvingJobBrokerSchemaWithDebug: ApiSchemaFor<ProvingJobBroker & ProvingJobBrokerDebug>;
|
|
7
11
|
export declare function createProvingJobBrokerClient(url: string, versions: Partial<ComponentsVersions>, fetch?: (host: string, body: unknown, extraHeaders?: Record<string, string> | undefined, noRetry?: boolean | undefined) => Promise<{
|
|
8
12
|
response: any;
|
|
9
13
|
headers: {
|
|
@@ -22,4 +26,4 @@ export declare function createProvingJobConsumerClient(url: string, versions: Pa
|
|
|
22
26
|
get: (header: string) => string | null | undefined;
|
|
23
27
|
};
|
|
24
28
|
}>): ProvingJobConsumer;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFJTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLHFCQUFxQixFQUMxQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLGtCQUFrQixFQUV4QixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFnQyxNQUFNLDBCQUEwQixDQUFDO0FBS2pHLHFGQUFxRjtBQUNyRix3QkFBaUIsbUJBQW1CLHFDQU1uQztBQVdELGVBQU8sTUFBTSx3QkFBd0IsRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBS3JFLENBQUM7QUFFRixlQUFPLE1BQU0sd0JBQXdCLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQWlCckUsQ0FBQztBQUVGLGVBQU8sTUFBTSxzQkFBc0IsRUFBRSxZQUFZLENBQUMsZ0JBQWdCLENBR2pFLENBQUM7QUFFRixlQUFPLE1BQU0sMkJBQTJCLEVBQUUsWUFBWSxDQUFDLHFCQUFxQixDQUszRSxDQUFDO0FBRUYsZUFBTyxNQUFNLCtCQUErQixFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FHbEcsQ0FBQztBQUVGLHdCQUFnQiw0QkFBNEIsQ0FDMUMsR0FBRyxFQUFFLE1BQU0sRUFDWCxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQ3JDLEtBQUs7Ozs7O0VBQThDLEdBQ2xELGdCQUFnQixDQU1sQjtBQUVELHdCQUFnQiw4QkFBOEIsQ0FDNUMsR0FBRyxFQUFFLE1BQU0sRUFDWCxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQ3JDLEtBQUs7Ozs7O0VBQThDLEdBQ2xELGtCQUFrQixDQU1wQjtBQUVELHdCQUFnQiw4QkFBOEIsQ0FDNUMsR0FBRyxFQUFFLE1BQU0sRUFDWCxRQUFRLEVBQUUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQ3JDLEtBQUs7Ozs7O0VBQThDLEdBQ2xELGtCQUFrQixDQU1wQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EAExB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,YAAY,EAAY,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,0BAA0B,CAAC;AAKjG,qFAAqF;AACrF,wBAAiB,mBAAmB,qCAMnC;AAWD,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAKrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAiBrE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,gBAAgB,CAGjE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,qBAAqB,CAK3E,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,YAAY,CAAC,gBAAgB,GAAG,qBAAqB,CAGlG,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAA8C,GAClD,gBAAgB,CAMlB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAA8C,GAClD,kBAAkB,CAMpB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAA8C,GAClD,kBAAkB,CAMpB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EpochNumberSchema } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
|
|
2
3
|
import { ProofUri, ProvingJob, ProvingJobId, ProvingJobStatus } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
@@ -5,6 +6,19 @@ import { optional } from '@aztec/stdlib/schemas';
|
|
|
5
6
|
import { getVersioningResponseHandler } from '@aztec/stdlib/versioning';
|
|
6
7
|
import { makeTracedFetch } from '@aztec/telemetry-client';
|
|
7
8
|
import { z } from 'zod';
|
|
9
|
+
/** Indefinite backoff for broker communication: 1, 1, 1, 2, 4, 4, 4, ... seconds. */ export function* proverBrokerBackoff() {
|
|
10
|
+
const v = [
|
|
11
|
+
1,
|
|
12
|
+
1,
|
|
13
|
+
1,
|
|
14
|
+
2,
|
|
15
|
+
4
|
|
16
|
+
];
|
|
17
|
+
let i = 0;
|
|
18
|
+
while(true){
|
|
19
|
+
yield v[Math.min(i++, v.length - 1)];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
8
22
|
const ProvingJobFilterSchema = z.object({
|
|
9
23
|
allowList: z.array(z.nativeEnum(ProvingRequestType))
|
|
10
24
|
});
|
|
@@ -13,48 +27,98 @@ const GetProvingJobResponse = z.object({
|
|
|
13
27
|
time: z.number()
|
|
14
28
|
});
|
|
15
29
|
export const ProvingJobProducerSchema = {
|
|
16
|
-
enqueueProvingJob: z.function(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
30
|
+
enqueueProvingJob: z.function({
|
|
31
|
+
input: z.tuple([
|
|
32
|
+
ProvingJob
|
|
33
|
+
]),
|
|
34
|
+
output: ProvingJobStatus
|
|
35
|
+
}),
|
|
36
|
+
getProvingJobStatus: z.function({
|
|
37
|
+
input: z.tuple([
|
|
38
|
+
ProvingJobId
|
|
39
|
+
]),
|
|
40
|
+
output: ProvingJobStatus
|
|
41
|
+
}),
|
|
42
|
+
cancelProvingJob: z.function({
|
|
43
|
+
input: z.tuple([
|
|
44
|
+
ProvingJobId
|
|
45
|
+
]),
|
|
46
|
+
output: z.void()
|
|
47
|
+
}),
|
|
48
|
+
getCompletedJobs: z.function({
|
|
49
|
+
input: z.tuple([
|
|
50
|
+
z.array(ProvingJobId)
|
|
51
|
+
]),
|
|
52
|
+
output: z.array(ProvingJobId)
|
|
53
|
+
})
|
|
20
54
|
};
|
|
21
55
|
export const ProvingJobConsumerSchema = {
|
|
22
|
-
getProvingJob: z.function(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
56
|
+
getProvingJob: z.function({
|
|
57
|
+
input: z.tuple([
|
|
58
|
+
optional(ProvingJobFilterSchema)
|
|
59
|
+
]),
|
|
60
|
+
output: GetProvingJobResponse.optional()
|
|
61
|
+
}),
|
|
62
|
+
reportProvingJobError: z.function({
|
|
63
|
+
input: z.tuple([
|
|
64
|
+
ProvingJobId,
|
|
65
|
+
z.string(),
|
|
66
|
+
optional(z.boolean()),
|
|
67
|
+
optional(ProvingJobFilterSchema)
|
|
68
|
+
]),
|
|
69
|
+
output: GetProvingJobResponse.optional()
|
|
70
|
+
}),
|
|
71
|
+
reportProvingJobProgress: z.function({
|
|
72
|
+
input: z.tuple([
|
|
73
|
+
ProvingJobId,
|
|
74
|
+
z.number(),
|
|
75
|
+
optional(ProvingJobFilterSchema)
|
|
76
|
+
]),
|
|
77
|
+
output: GetProvingJobResponse.optional()
|
|
78
|
+
}),
|
|
79
|
+
reportProvingJobSuccess: z.function({
|
|
80
|
+
input: z.tuple([
|
|
81
|
+
ProvingJobId,
|
|
82
|
+
ProofUri,
|
|
83
|
+
optional(ProvingJobFilterSchema)
|
|
84
|
+
]),
|
|
85
|
+
output: GetProvingJobResponse.optional()
|
|
86
|
+
})
|
|
26
87
|
};
|
|
27
88
|
export const ProvingJobBrokerSchema = {
|
|
28
89
|
...ProvingJobConsumerSchema,
|
|
29
90
|
...ProvingJobProducerSchema
|
|
30
91
|
};
|
|
31
|
-
export
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
92
|
+
export const ProvingJobBrokerDebugSchema = {
|
|
93
|
+
replayProvingJob: z.function({
|
|
94
|
+
input: z.tuple([
|
|
95
|
+
ProvingJobId,
|
|
96
|
+
z.nativeEnum(ProvingRequestType),
|
|
97
|
+
EpochNumberSchema,
|
|
98
|
+
ProofUri
|
|
99
|
+
]),
|
|
100
|
+
output: ProvingJobStatus
|
|
101
|
+
})
|
|
102
|
+
};
|
|
103
|
+
export const ProvingJobBrokerSchemaWithDebug = {
|
|
104
|
+
...ProvingJobBrokerSchema,
|
|
105
|
+
...ProvingJobBrokerDebugSchema
|
|
106
|
+
};
|
|
107
|
+
export function createProvingJobBrokerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
|
|
36
108
|
return createSafeJsonRpcClient(url, ProvingJobBrokerSchema, {
|
|
37
109
|
namespaceMethods: 'proverBroker',
|
|
38
110
|
fetch,
|
|
39
111
|
onResponse: getVersioningResponseHandler(versions)
|
|
40
112
|
});
|
|
41
113
|
}
|
|
42
|
-
export function createProvingJobProducerClient(url, versions, fetch = makeTracedFetch(
|
|
43
|
-
1,
|
|
44
|
-
2,
|
|
45
|
-
3
|
|
46
|
-
], false)) {
|
|
114
|
+
export function createProvingJobProducerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
|
|
47
115
|
return createSafeJsonRpcClient(url, ProvingJobProducerSchema, {
|
|
48
116
|
namespaceMethods: 'provingJobProducer',
|
|
49
117
|
fetch,
|
|
50
118
|
onResponse: getVersioningResponseHandler(versions)
|
|
51
119
|
});
|
|
52
120
|
}
|
|
53
|
-
export function createProvingJobConsumerClient(url, versions, fetch = makeTracedFetch(
|
|
54
|
-
1,
|
|
55
|
-
2,
|
|
56
|
-
3
|
|
57
|
-
], false)) {
|
|
121
|
+
export function createProvingJobConsumerClient(url, versions, fetch = makeTracedFetch(proverBrokerBackoff, false)) {
|
|
58
122
|
return createSafeJsonRpcClient(url, ProvingJobConsumerSchema, {
|
|
59
123
|
namespaceMethods: 'provingJobConsumer',
|
|
60
124
|
fetch,
|
|
@@ -2,8 +2,8 @@ import type { ProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
|
2
2
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
3
|
export declare class MockProofStore {
|
|
4
4
|
private mockCounter;
|
|
5
|
-
private readonly bucketName
|
|
6
|
-
private readonly basePath
|
|
5
|
+
private readonly bucketName;
|
|
6
|
+
private readonly basePath;
|
|
7
7
|
saveProofInput(jobId: ProvingJobId, type: ProvingRequestType): Promise<string>;
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19wcm9vZl9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19wcm9vZl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxxQkFBYSxjQUFjO0lBQ3pCLE9BQU8sQ0FBQyxXQUFXLENBQUs7SUFDeEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQThCO0lBQ3pELE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFrQjtJQUUzQyxjQUFjLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUc3RTtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_proof_store.d.ts","sourceRoot":"","sources":["../../src/test/mock_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"mock_proof_store.d.ts","sourceRoot":"","sources":["../../src/test/mock_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7E;CACF"}
|
|
@@ -19,9 +19,9 @@ export declare class TestBroker implements ProvingJobProducer {
|
|
|
19
19
|
}
|
|
20
20
|
export declare class MockProver implements ServerCircuitProver {
|
|
21
21
|
constructor();
|
|
22
|
-
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<
|
|
23
|
-
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs,
|
|
24
|
-
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs,
|
|
22
|
+
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<16400>>;
|
|
23
|
+
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 410>>;
|
|
24
|
+
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 410>>;
|
|
25
25
|
getPublicChonkVerifierProof(_inputs: PublicChonkVerifierPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
26
26
|
getPrivateTxBaseRollupProof(_baseRollupInput: PrivateTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
27
27
|
getPublicTxBaseRollupProof(_inputs: PublicTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
@@ -31,7 +31,7 @@ export declare class MockProver implements ServerCircuitProver {
|
|
|
31
31
|
getBlockRootEmptyTxFirstRollupProof(_input: BlockRootEmptyTxFirstRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
32
32
|
getBlockRootRollupProof(_input: BlockRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
33
33
|
getBlockRootSingleTxRollupProof(_input: BlockRootSingleTxRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
34
|
-
getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs,
|
|
34
|
+
getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, 480>>;
|
|
35
35
|
getCheckpointRootRollupProof(_input: CheckpointRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
36
36
|
getCheckpointRootSingleBlockRollupProof(_input: CheckpointRootSingleBlockRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
37
37
|
getCheckpointMergeRollupProof(_input: CheckpointMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.993d240",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
|
-
"./block-factory": "./dest/block-factory/index.js",
|
|
8
7
|
"./broker": "./dest/proving_broker/index.js",
|
|
9
8
|
"./broker/config": "./dest/proving_broker/config.js",
|
|
10
9
|
"./orchestrator": "./dest/orchestrator/index.js",
|
|
@@ -28,8 +27,8 @@
|
|
|
28
27
|
"build:dev": "../scripts/tsc.sh --watch",
|
|
29
28
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
30
29
|
"bb": "node --no-warnings ./dest/bb/index.js",
|
|
31
|
-
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=3500000
|
|
32
|
-
"test:debug": "LOG_LEVEL
|
|
30
|
+
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=3500000",
|
|
31
|
+
"test:debug": "LOG_LEVEL=\"debug; info: json-rpc, simulator\" NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=1500000 --testNamePattern prover/bb_prover/parity"
|
|
33
32
|
},
|
|
34
33
|
"jest": {
|
|
35
34
|
"moduleNameMapper": {
|
|
@@ -69,34 +68,33 @@
|
|
|
69
68
|
]
|
|
70
69
|
},
|
|
71
70
|
"dependencies": {
|
|
72
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
73
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
74
|
-
"@aztec/constants": "0.0.1-commit.
|
|
75
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
76
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
77
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
78
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
79
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
80
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
81
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
82
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
83
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
84
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
85
|
-
"@google-cloud/storage": "^7.15.0",
|
|
71
|
+
"@aztec/bb-prover": "0.0.1-commit.993d240",
|
|
72
|
+
"@aztec/blob-lib": "0.0.1-commit.993d240",
|
|
73
|
+
"@aztec/constants": "0.0.1-commit.993d240",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.993d240",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.993d240",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.993d240",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.993d240",
|
|
78
|
+
"@aztec/noir-types": "0.0.1-commit.993d240",
|
|
79
|
+
"@aztec/protocol-contracts": "0.0.1-commit.993d240",
|
|
80
|
+
"@aztec/simulator": "0.0.1-commit.993d240",
|
|
81
|
+
"@aztec/stdlib": "0.0.1-commit.993d240",
|
|
82
|
+
"@aztec/telemetry-client": "0.0.1-commit.993d240",
|
|
83
|
+
"@aztec/world-state": "0.0.1-commit.993d240",
|
|
86
84
|
"@iarna/toml": "^2.2.5",
|
|
87
85
|
"commander": "^12.1.0",
|
|
88
86
|
"lodash.chunk": "^4.2.0",
|
|
89
87
|
"source-map-support": "^0.5.21",
|
|
90
88
|
"tslib": "^2.4.0",
|
|
91
|
-
"zod": "^
|
|
89
|
+
"zod": "^4"
|
|
92
90
|
},
|
|
93
91
|
"devDependencies": {
|
|
94
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
92
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.993d240",
|
|
95
93
|
"@jest/globals": "^30.0.0",
|
|
96
94
|
"@types/jest": "^30.0.0",
|
|
97
95
|
"@types/node": "^22.15.17",
|
|
98
96
|
"@types/source-map-support": "^0.5.10",
|
|
99
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
97
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
100
98
|
"get-port": "^7.1.0",
|
|
101
99
|
"jest": "^30.0.0",
|
|
102
100
|
"jest-mock-extended": "^4.0.0",
|