@aztec/prover-client 0.65.0 → 0.65.2

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.
Files changed (102) hide show
  1. package/dest/config.d.ts +4 -10
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +8 -7
  4. package/dest/index.d.ts +1 -0
  5. package/dest/index.d.ts.map +1 -1
  6. package/dest/index.js +2 -1
  7. package/dest/mocks/test_context.js +3 -2
  8. package/dest/orchestrator/block-building-helpers.d.ts +5 -2
  9. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  10. package/dest/orchestrator/block-building-helpers.js +18 -22
  11. package/dest/orchestrator/block-proving-state.js +2 -2
  12. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  13. package/dest/orchestrator/orchestrator.js +5 -8
  14. package/dest/prover-agent/memory-proving-queue.d.ts +10 -8
  15. package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
  16. package/dest/prover-agent/memory-proving-queue.js +35 -35
  17. package/dest/prover-agent/prover-agent.d.ts +1 -0
  18. package/dest/prover-agent/prover-agent.d.ts.map +1 -1
  19. package/dest/prover-agent/prover-agent.js +12 -9
  20. package/dest/proving_broker/caching_broker_facade.d.ts +30 -0
  21. package/dest/proving_broker/caching_broker_facade.d.ts.map +1 -0
  22. package/dest/proving_broker/caching_broker_facade.js +150 -0
  23. package/dest/proving_broker/factory.d.ts +4 -0
  24. package/dest/proving_broker/factory.d.ts.map +1 -0
  25. package/dest/proving_broker/factory.js +17 -0
  26. package/dest/proving_broker/index.d.ts +9 -0
  27. package/dest/proving_broker/index.d.ts.map +1 -0
  28. package/dest/proving_broker/index.js +9 -0
  29. package/dest/proving_broker/proof_store.d.ts +46 -0
  30. package/dest/proving_broker/proof_store.d.ts.map +1 -0
  31. package/dest/proving_broker/proof_store.js +37 -0
  32. package/dest/proving_broker/prover_cache/memory.d.ts +9 -0
  33. package/dest/proving_broker/prover_cache/memory.d.ts.map +1 -0
  34. package/dest/proving_broker/prover_cache/memory.js +16 -0
  35. package/dest/proving_broker/proving_agent.d.ts +11 -6
  36. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  37. package/dest/proving_broker/proving_agent.js +48 -20
  38. package/dest/proving_broker/proving_broker.d.ts +17 -16
  39. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  40. package/dest/proving_broker/proving_broker.js +44 -23
  41. package/dest/proving_broker/proving_broker_database/memory.d.ts +14 -0
  42. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -0
  43. package/dest/proving_broker/proving_broker_database/memory.js +35 -0
  44. package/dest/proving_broker/proving_broker_database/persisted.d.ts +15 -0
  45. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -0
  46. package/dest/proving_broker/proving_broker_database/persisted.js +35 -0
  47. package/dest/proving_broker/{proving_job_database.d.ts → proving_broker_database.d.ts} +8 -8
  48. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -0
  49. package/dest/proving_broker/proving_broker_database.js +2 -0
  50. package/dest/proving_broker/proving_job_controller.d.ts +13 -8
  51. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  52. package/dest/proving_broker/proving_job_controller.js +43 -43
  53. package/dest/proving_broker/rpc.d.ts +11 -0
  54. package/dest/proving_broker/rpc.d.ts.map +1 -0
  55. package/dest/proving_broker/rpc.js +44 -0
  56. package/dest/test/mock_prover.d.ts +15 -1
  57. package/dest/test/mock_prover.d.ts.map +1 -1
  58. package/dest/test/mock_prover.js +36 -1
  59. package/dest/tx-prover/factory.d.ts +2 -1
  60. package/dest/tx-prover/factory.d.ts.map +1 -1
  61. package/dest/tx-prover/factory.js +3 -3
  62. package/dest/tx-prover/tx-prover.d.ts +13 -7
  63. package/dest/tx-prover/tx-prover.d.ts.map +1 -1
  64. package/dest/tx-prover/tx-prover.js +52 -35
  65. package/package.json +14 -12
  66. package/src/config.ts +17 -16
  67. package/src/index.ts +1 -0
  68. package/src/mocks/test_context.ts +2 -2
  69. package/src/orchestrator/block-building-helpers.ts +34 -37
  70. package/src/orchestrator/block-proving-state.ts +1 -1
  71. package/src/orchestrator/orchestrator.ts +4 -9
  72. package/src/prover-agent/memory-proving-queue.ts +43 -44
  73. package/src/prover-agent/prover-agent.ts +16 -20
  74. package/src/proving_broker/caching_broker_facade.ts +312 -0
  75. package/src/proving_broker/factory.ts +21 -0
  76. package/src/proving_broker/index.ts +8 -0
  77. package/src/proving_broker/proof_store.ts +106 -0
  78. package/src/proving_broker/prover_cache/memory.ts +20 -0
  79. package/src/proving_broker/proving_agent.ts +75 -20
  80. package/src/proving_broker/proving_broker.ts +98 -65
  81. package/src/proving_broker/proving_broker_database/memory.ts +43 -0
  82. package/src/proving_broker/proving_broker_database/persisted.ts +45 -0
  83. package/src/proving_broker/{proving_job_database.ts → proving_broker_database.ts} +7 -12
  84. package/src/proving_broker/proving_job_controller.ts +54 -46
  85. package/src/proving_broker/rpc.ts +64 -0
  86. package/src/test/mock_prover.ts +51 -0
  87. package/src/tx-prover/factory.ts +7 -2
  88. package/src/tx-prover/tx-prover.ts +78 -46
  89. package/dest/proving_broker/proving_broker_interface.d.ts +0 -61
  90. package/dest/proving_broker/proving_broker_interface.d.ts.map +0 -1
  91. package/dest/proving_broker/proving_broker_interface.js +0 -2
  92. package/dest/proving_broker/proving_job_database/memory.d.ts +0 -14
  93. package/dest/proving_broker/proving_job_database/memory.d.ts.map +0 -1
  94. package/dest/proving_broker/proving_job_database/memory.js +0 -35
  95. package/dest/proving_broker/proving_job_database/persisted.d.ts +0 -15
  96. package/dest/proving_broker/proving_job_database/persisted.d.ts.map +0 -1
  97. package/dest/proving_broker/proving_job_database/persisted.js +0 -34
  98. package/dest/proving_broker/proving_job_database.d.ts.map +0 -1
  99. package/dest/proving_broker/proving_job_database.js +0 -2
  100. package/src/proving_broker/proving_broker_interface.ts +0 -74
  101. package/src/proving_broker/proving_job_database/memory.ts +0 -43
  102. package/src/proving_broker/proving_job_database/persisted.ts +0 -44
@@ -4,6 +4,7 @@ import { ProvingRequestType, makeProvingRequestResult, } from '@aztec/circuit-ty
4
4
  import { createDebugLogger } from '@aztec/foundation/log';
5
5
  import { RunningPromise } from '@aztec/foundation/running-promise';
6
6
  import { elapsed } from '@aztec/foundation/timer';
7
+ import { InlineProofStore } from '../proving_broker/proof_store.js';
7
8
  const PRINT_THRESHOLD_NS = 6e10; // 60 seconds
8
9
  /**
9
10
  * A helper class that encapsulates a circuit prover and connects it to a job source.
@@ -22,6 +23,7 @@ export class ProverAgent {
22
23
  this.pollIntervalMs = pollIntervalMs;
23
24
  this.log = log;
24
25
  this.inFlightPromises = new Map();
26
+ this.proofInputsDatabase = new InlineProofStore();
25
27
  }
26
28
  setMaxConcurrency(maxConcurrency) {
27
29
  if (maxConcurrency < 1) {
@@ -70,12 +72,12 @@ export class ProverAgent {
70
72
  const promise = this.work(jobSource, job).finally(() => this.inFlightPromises.delete(job.id));
71
73
  this.inFlightPromises.set(job.id, {
72
74
  id: job.id,
73
- type: job.request.type,
75
+ type: job.type,
74
76
  promise,
75
77
  });
76
78
  }
77
79
  catch (err) {
78
- this.log.warn(`Error processing job! type=${ProvingRequestType[job.request.type]}: ${err}. ${err.stack}`);
80
+ this.log.warn(`Error processing job! type=${ProvingRequestType[job.type]}: ${err}. ${err.stack}`);
79
81
  }
80
82
  }
81
83
  catch (err) {
@@ -96,21 +98,22 @@ export class ProverAgent {
96
98
  }
97
99
  async work(jobSource, job) {
98
100
  try {
99
- this.log.debug(`Picked up proving job id=${job.id} type=${ProvingRequestType[job.request.type]}`);
100
- const type = job.request.type;
101
- const [time, result] = await elapsed(this.getProof(job.request));
101
+ this.log.debug(`Picked up proving job id=${job.id} type=${ProvingRequestType[job.type]}`);
102
+ const type = job.type;
103
+ const inputs = await this.proofInputsDatabase.getProofInput(job.inputsUri);
104
+ const [time, result] = await elapsed(this.getProof(inputs));
102
105
  if (__classPrivateFieldGet(this, _ProverAgent_instances, "m", _ProverAgent_isRunning).call(this)) {
103
106
  this.log.verbose(`Processed proving job id=${job.id} type=${ProvingRequestType[type]} duration=${time}ms`);
104
107
  await jobSource.resolveProvingJob(job.id, makeProvingRequestResult(type, result));
105
108
  }
106
109
  else {
107
- this.log.verbose(`Dropping proving job id=${job.id} type=${ProvingRequestType[job.request.type]} duration=${time}ms: agent stopped`);
110
+ this.log.verbose(`Dropping proving job id=${job.id} type=${ProvingRequestType[job.type]} duration=${time}ms: agent stopped`);
108
111
  }
109
112
  }
110
113
  catch (err) {
111
- const type = ProvingRequestType[job.request.type];
114
+ const type = ProvingRequestType[job.type];
112
115
  if (__classPrivateFieldGet(this, _ProverAgent_instances, "m", _ProverAgent_isRunning).call(this)) {
113
- if (job.request.type === ProvingRequestType.PUBLIC_VM && !process.env.AVM_PROVING_STRICT) {
116
+ if (job.type === ProvingRequestType.PUBLIC_VM && !process.env.AVM_PROVING_STRICT) {
114
117
  this.log.warn(`Expected error processing VM proving job id=${job.id} type=${type}: ${err}`);
115
118
  }
116
119
  else {
@@ -173,4 +176,4 @@ export class ProverAgent {
173
176
  _ProverAgent_instances = new WeakSet(), _ProverAgent_isRunning = function _ProverAgent_isRunning() {
174
177
  return this.runningPromise?.isRunning() ?? false;
175
178
  };
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1hZ2VudC9wcm92ZXItYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBTUwsa0JBQWtCLEVBRWxCLHdCQUF3QixHQUN6QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0FBRTlDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFXdEI7SUFDRSxpREFBaUQ7SUFDekMsYUFBa0M7SUFDMUMsOERBQThEO0lBQ3RELGlCQUFpQixDQUFDO0lBQzFCLG9DQUFvQztJQUM1QixpQkFBaUIsR0FBRyxFQUNwQixNQUFNLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDOztRQUwzRCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFFbEMsbUJBQWMsR0FBZCxjQUFjLENBQUk7UUFFbEIsbUJBQWMsR0FBZCxjQUFjLENBQU07UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBd0Q7UUFqQjdELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQU8vQixDQUFDO0lBV0QsQ0FBQztJQUVKLGlCQUFpQixDQUFDLGNBQXNCO1FBQ3RDLElBQUksY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLGFBQWtD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
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1hZ2VudC9wcm92ZXItYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBTUwsa0JBQWtCLEVBRWxCLHdCQUF3QixHQUN6QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFcEUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0FBRTlDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFZdEI7SUFDRSxpREFBaUQ7SUFDekMsYUFBa0M7SUFDMUMsOERBQThEO0lBQ3RELGlCQUFpQixDQUFDO0lBQzFCLG9DQUFvQztJQUM1QixpQkFBaUIsR0FBRyxFQUNwQixNQUFNLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDOztRQUwzRCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFFbEMsbUJBQWMsR0FBZCxjQUFjLENBQUk7UUFFbEIsbUJBQWMsR0FBZCxjQUFjLENBQU07UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBd0Q7UUFsQjdELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQU8vQixDQUFDO1FBRUksd0JBQW1CLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBVWxELENBQUM7SUFFSixpQkFBaUIsQ0FBQyxjQUFzQjtRQUN0QyxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFj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
@@ -0,0 +1,30 @@
1
+ import { type ProofAndVerificationKey, type ProverCache, type ProvingJobProducer, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/circuit-types';
2
+ import { type AVM_PROOF_LENGTH_IN_FIELDS, type AvmCircuitInputs, type BaseOrMergeRollupPublicInputs, type BaseParityInputs, type BlockMergeRollupInputs, type BlockRootOrBlockMergePublicInputs, type BlockRootRollupInputs, type EmptyBlockRootRollupInputs, type KernelCircuitPublicInputs, type MergeRollupInputs, type NESTED_RECURSIVE_PROOF_LENGTH, type ParityPublicInputs, type PrivateBaseRollupInputs, type PrivateKernelEmptyInputData, type PublicBaseRollupInputs, type RECURSIVE_PROOF_LENGTH, type RootParityInputs, type RootRollupInputs, type RootRollupPublicInputs, type TUBE_PROOF_LENGTH, type TubeInputs } from '@aztec/circuits.js';
3
+ import { type ProofStore } from './proof_store.js';
4
+ /**
5
+ * A facade around a job broker that generates stable job ids and caches results
6
+ */
7
+ export declare class CachingBrokerFacade implements ServerCircuitProver {
8
+ private broker;
9
+ private cache;
10
+ private proofStore;
11
+ private waitTimeoutMs;
12
+ private pollIntervalMs;
13
+ private log;
14
+ constructor(broker: ProvingJobProducer, cache?: ProverCache, proofStore?: ProofStore, waitTimeoutMs?: number, pollIntervalMs?: number, log?: import("@aztec/foundation/log").Logger);
15
+ private enqueueAndWaitForJob;
16
+ getAvmProof(inputs: AvmCircuitInputs, signal?: AbortSignal, _blockNumber?: number): Promise<ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>>;
17
+ getBaseParityProof(inputs: BaseParityInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
18
+ getBlockMergeRollupProof(input: BlockMergeRollupInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
19
+ getBlockRootRollupProof(input: BlockRootRollupInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
20
+ getEmptyBlockRootRollupProof(input: EmptyBlockRootRollupInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>>;
21
+ getEmptyPrivateKernelProof(inputs: PrivateKernelEmptyInputData, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
22
+ getMergeRollupProof(input: MergeRollupInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
23
+ getPrivateBaseRollupProof(baseRollupInput: PrivateBaseRollupInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
24
+ getPublicBaseRollupProof(inputs: PublicBaseRollupInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
25
+ getRootParityProof(inputs: RootParityInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>>;
26
+ getRootRollupProof(input: RootRollupInputs, signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
27
+ getTubeProof(tubeInput: TubeInputs, signal?: AbortSignal, _epochNumber?: number): Promise<ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>>;
28
+ private generateId;
29
+ }
30
+ //# sourceMappingURL=caching_broker_facade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caching_broker_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/caching_broker_facade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { ProvingRequestType, } from '@aztec/circuit-types';
2
+ import { sha256 } from '@aztec/foundation/crypto';
3
+ import { createDebugLogger } from '@aztec/foundation/log';
4
+ import { retryUntil } from '@aztec/foundation/retry';
5
+ import { InlineProofStore } from './proof_store.js';
6
+ import { InMemoryProverCache } from './prover_cache/memory.js';
7
+ // 20 minutes, roughly the length of an Aztec epoch. If a proof isn't ready in this amount of time then we've failed to prove the whole epoch
8
+ const MAX_WAIT_MS = 1200000;
9
+ /**
10
+ * A facade around a job broker that generates stable job ids and caches results
11
+ */
12
+ export class CachingBrokerFacade {
13
+ constructor(broker, cache = new InMemoryProverCache(), proofStore = new InlineProofStore(), waitTimeoutMs = MAX_WAIT_MS, pollIntervalMs = 1000, log = createDebugLogger('aztec:prover-client:caching-prover-broker')) {
14
+ this.broker = broker;
15
+ this.cache = cache;
16
+ this.proofStore = proofStore;
17
+ this.waitTimeoutMs = waitTimeoutMs;
18
+ this.pollIntervalMs = pollIntervalMs;
19
+ this.log = log;
20
+ }
21
+ async enqueueAndWaitForJob(id, type, inputs, signal) {
22
+ // first try the cache
23
+ let jobEnqueued = false;
24
+ try {
25
+ const cachedResult = await this.cache.getProvingJobStatus(id);
26
+ if (cachedResult.status !== 'not-found') {
27
+ this.log.debug(`Found cached result for job=${id}: status=${cachedResult.status}`);
28
+ }
29
+ if (cachedResult.status === 'fulfilled') {
30
+ const output = await this.proofStore.getProofOutput(cachedResult.value);
31
+ if (output.type === type) {
32
+ return output.result;
33
+ }
34
+ else {
35
+ this.log.warn(`Cached result type mismatch for job=${id}. Expected=${type} but got=${output.type}`);
36
+ }
37
+ }
38
+ else if (cachedResult.status === 'rejected') {
39
+ // prefer returning a rejected promises so that we don't trigger the catch block below
40
+ return Promise.reject(new Error(cachedResult.reason));
41
+ }
42
+ else if (cachedResult.status === 'in-progress' || cachedResult.status === 'in-queue') {
43
+ jobEnqueued = true;
44
+ }
45
+ else {
46
+ jobEnqueued = false;
47
+ }
48
+ }
49
+ catch (err) {
50
+ this.log.warn(`Failed to get cached proving job id=${id}: ${err}. Re-running job`);
51
+ }
52
+ if (!jobEnqueued) {
53
+ try {
54
+ const inputsUri = await this.proofStore.saveProofInput(id, type, inputs);
55
+ await this.broker.enqueueProvingJob({
56
+ id,
57
+ type,
58
+ inputsUri,
59
+ });
60
+ await this.cache.setProvingJobStatus(id, { status: 'in-queue' });
61
+ }
62
+ catch (err) {
63
+ this.log.error(`Failed to enqueue proving job id=${id}: ${err}`);
64
+ await this.cache.setProvingJobStatus(id, { status: 'not-found' });
65
+ throw err;
66
+ }
67
+ }
68
+ // notify broker of cancelled job
69
+ const abortFn = async () => {
70
+ signal?.removeEventListener('abort', abortFn);
71
+ await this.broker.removeAndCancelProvingJob(id);
72
+ };
73
+ signal?.addEventListener('abort', abortFn);
74
+ try {
75
+ // loop here until the job settles
76
+ // NOTE: this could also terminate because the job was cancelled through event listener above
77
+ const result = await retryUntil(async () => {
78
+ try {
79
+ return await this.broker.waitForJobToSettle(id);
80
+ }
81
+ catch (err) {
82
+ // waitForJobToSettle can only fail for network errors
83
+ // keep retrying until we time out
84
+ }
85
+ }, `Proving job=${id} type=${ProvingRequestType[type]}`, this.waitTimeoutMs / 1000, this.pollIntervalMs / 1000);
86
+ try {
87
+ await this.cache.setProvingJobStatus(id, result);
88
+ }
89
+ catch (err) {
90
+ this.log.warn(`Failed to cache proving job id=${id} resultStatus=${result.status}: ${err}`);
91
+ }
92
+ if (result.status === 'fulfilled') {
93
+ const output = await this.proofStore.getProofOutput(result.value);
94
+ if (output.type === type) {
95
+ return output.result;
96
+ }
97
+ else {
98
+ return Promise.reject(new Error(`Unexpected proof type: ${output.type}. Expected: ${type}`));
99
+ }
100
+ }
101
+ else {
102
+ return Promise.reject(new Error(result.reason));
103
+ }
104
+ }
105
+ finally {
106
+ signal?.removeEventListener('abort', abortFn);
107
+ }
108
+ }
109
+ getAvmProof(inputs, signal, _blockNumber) {
110
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_VM, inputs), ProvingRequestType.PUBLIC_VM, inputs, signal);
111
+ }
112
+ getBaseParityProof(inputs, signal, _epochNumber) {
113
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BASE_PARITY, inputs), ProvingRequestType.BASE_PARITY, inputs, signal);
114
+ }
115
+ getBlockMergeRollupProof(input, signal, _epochNumber) {
116
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input), ProvingRequestType.BLOCK_MERGE_ROLLUP, input, signal);
117
+ }
118
+ getBlockRootRollupProof(input, signal, _epochNumber) {
119
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input), ProvingRequestType.BLOCK_ROOT_ROLLUP, input, signal);
120
+ }
121
+ getEmptyBlockRootRollupProof(input, signal, _epochNumber) {
122
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input), ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, signal);
123
+ }
124
+ getEmptyPrivateKernelProof(inputs, signal, _epochNumber) {
125
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs), ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs, signal);
126
+ }
127
+ getMergeRollupProof(input, signal, _epochNumber) {
128
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.MERGE_ROLLUP, input), ProvingRequestType.MERGE_ROLLUP, input, signal);
129
+ }
130
+ getPrivateBaseRollupProof(baseRollupInput, signal, _epochNumber) {
131
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput), ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, signal);
132
+ }
133
+ getPublicBaseRollupProof(inputs, signal, _epochNumber) {
134
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs), ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, signal);
135
+ }
136
+ getRootParityProof(inputs, signal, _epochNumber) {
137
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_PARITY, inputs), ProvingRequestType.ROOT_PARITY, inputs, signal);
138
+ }
139
+ getRootRollupProof(input, signal, _epochNumber) {
140
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_ROLLUP, input), ProvingRequestType.ROOT_ROLLUP, input, signal);
141
+ }
142
+ getTubeProof(tubeInput, signal, _epochNumber) {
143
+ return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput), ProvingRequestType.TUBE_PROOF, tubeInput, signal);
144
+ }
145
+ generateId(type, inputs) {
146
+ const inputsHash = sha256(inputs.toBuffer());
147
+ return `${ProvingRequestType[type]}:${inputsHash.toString('hex')}`;
148
+ }
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZ19icm9rZXJfZmFjYWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL2NhY2hpbmdfYnJva2VyX2ZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBT0wsa0JBQWtCLEdBR25CLE1BQU0sc0JBQXNCLENBQUM7QUF3QjlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRS9ELDZJQUE2STtBQUM3SSxNQUFNLFdBQVcsR0FBRyxPQUFTLENBQUM7QUFFOUI7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ1UsTUFBMEIsRUFDMUIsUUFBcUIsSUFBSSxtQkFBbUIsRUFBRSxFQUM5QyxhQUF5QixJQUFJLGdCQUFnQixFQUFFLEVBQy9DLGdCQUFnQixXQUFXLEVBQzNCLGlCQUFpQixJQUFJLEVBQ3JCLE1BQU0saUJBQWlCLENBQUMsMkNBQTJDLENBQUM7UUFMcEUsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBeUM7UUFDOUMsZUFBVSxHQUFWLFVBQVUsQ0FBcUM7UUFDL0Msa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQU87UUFDckIsUUFBRyxHQUFILEdBQUcsQ0FBaUU7SUFDM0UsQ0FBQztJQUVJLEtBQUssQ0FBQyxvQkFBb0IsQ0FDaEMsRUFBZ0IsRUFDaEIsSUFBTyxFQUNQLE1BQThCLEVBQzlCLE1BQW9CO1FBRXBCLHNCQUFzQjtRQUN0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
@@ -0,0 +1,4 @@
1
+ import { type ProverBrokerConfig } from '@aztec/circuit-types';
2
+ import { ProvingBroker } from './proving_broker.js';
3
+ export declare function createAndStartProvingBroker(config: ProverBrokerConfig): Promise<ProvingBroker>;
4
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/proving_broker/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAapG"}
@@ -0,0 +1,17 @@
1
+ import { AztecLmdbStore } from '@aztec/kv-store/lmdb';
2
+ import { ProvingBroker } from './proving_broker.js';
3
+ import { InMemoryBrokerDatabase } from './proving_broker_database/memory.js';
4
+ import { KVBrokerDatabase } from './proving_broker_database/persisted.js';
5
+ export async function createAndStartProvingBroker(config) {
6
+ const database = config.proverBrokerDataDirectory
7
+ ? new KVBrokerDatabase(AztecLmdbStore.open(config.proverBrokerDataDirectory))
8
+ : new InMemoryBrokerDatabase();
9
+ const broker = new ProvingBroker(database, {
10
+ jobTimeoutMs: config.proverBrokerJobTimeoutMs,
11
+ maxRetries: config.proverBrokerJobMaxRetries,
12
+ timeoutIntervalMs: config.proverBrokerPollIntervalMs,
13
+ });
14
+ await broker.start();
15
+ return broker;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFMUUsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxNQUEwQjtJQUMxRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMseUJBQXlCO1FBQy9DLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7UUFDekMsWUFBWSxFQUFFLE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7UUFDNUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLDBCQUEwQjtLQUNyRCxDQUFDLENBQUM7SUFFSCxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIn0=
@@ -0,0 +1,9 @@
1
+ export * from './proving_agent.js';
2
+ export * from './proving_broker.js';
3
+ export * from './rpc.js';
4
+ export * from './proving_broker_database.js';
5
+ export * from './proving_broker_database/memory.js';
6
+ export * from './proving_broker_database/persisted.js';
7
+ export * from './proof_store.js';
8
+ export * from './factory.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proving_broker/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './proving_agent.js';
2
+ export * from './proving_broker.js';
3
+ export * from './rpc.js';
4
+ export * from './proving_broker_database.js';
5
+ export * from './proving_broker_database/memory.js';
6
+ export * from './proving_broker_database/persisted.js';
7
+ export * from './proof_store.js';
8
+ export * from './factory.js';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUMifQ==
@@ -0,0 +1,46 @@
1
+ import { type ProofUri, type ProvingJobId, ProvingJobInputs, type ProvingJobInputsMap, ProvingJobResult, type ProvingJobResultsMap, type ProvingRequestType } from '@aztec/circuit-types';
2
+ /**
3
+ * A database for storing proof inputs and outputs.
4
+ */
5
+ export interface ProofStore {
6
+ /**
7
+ * Save a proof input to the database.
8
+ * @param jobId - The ID of the job the proof input is associated with.
9
+ * @param type - The type of the proving request.
10
+ * @param inputs - The proof input to save.
11
+ * @returns The URI of the saved proof input.
12
+ */
13
+ saveProofInput<T extends ProvingRequestType>(jobId: ProvingJobId, type: T, inputs: ProvingJobInputsMap[T]): Promise<ProofUri>;
14
+ /**
15
+ * Save a proof output to the database.
16
+ * @param jobId - The ID of the job the proof input is associated with.
17
+ * @param type - The type of the proving request.
18
+ * @param result - The proof output to save.
19
+ * @returns The URI of the saved proof output.
20
+ */
21
+ saveProofOutput<T extends ProvingRequestType>(id: ProvingJobId, type: T, result: ProvingJobResultsMap[T]): Promise<ProofUri>;
22
+ /**
23
+ * Retrieve a proof input from the database.
24
+ * @param uri - The URI of the proof input to retrieve.
25
+ * @returns The proof input.
26
+ */
27
+ getProofInput(uri: ProofUri): Promise<ProvingJobInputs>;
28
+ /**
29
+ * Retrieve a proof output from the database.
30
+ * @param uri - The URI of the proof output to retrieve.
31
+ * @returns The proof output.
32
+ */
33
+ getProofOutput(uri: ProofUri): Promise<ProvingJobResult>;
34
+ }
35
+ /**
36
+ * An implementation of a proof input/output database that stores data inline in the URI.
37
+ */
38
+ export declare class InlineProofStore implements ProofStore {
39
+ saveProofInput<T extends ProvingRequestType>(_id: ProvingJobId, type: T, inputs: ProvingJobInputsMap[T]): Promise<ProofUri>;
40
+ saveProofOutput<T extends ProvingRequestType>(_id: ProvingJobId, type: T, result: ProvingJobResultsMap[T]): Promise<ProofUri>;
41
+ getProofInput(uri: ProofUri): Promise<ProvingJobInputs>;
42
+ getProofOutput(uri: ProofUri): Promise<ProvingJobResult>;
43
+ private encode;
44
+ private decode;
45
+ }
46
+ //# sourceMappingURL=proof_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof_store.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,gBAAgB,EAChB,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAI9B;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,SAAS,kBAAkB,EACzC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,SAAS,kBAAkB,EAC1C,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1D;AAOD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,cAAc,CAAC,CAAC,SAAS,kBAAkB,EACzC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAKpB,eAAe,CAAC,CAAC,SAAS,kBAAkB,EAC1C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAKpB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIvD,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIxD,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,MAAM;CAQf"}
@@ -0,0 +1,37 @@
1
+ import { ProvingJobInputs, ProvingJobResult, } from '@aztec/circuit-types';
2
+ import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
3
+ // use an ASCII encoded data uri https://datatracker.ietf.org/doc/html/rfc2397#section-2
4
+ // we do this to avoid double encoding to base64 (since the inputs already serialize to a base64 string)
5
+ const PREFIX = 'data:application/json;charset=utf-8';
6
+ const SEPARATOR = ',';
7
+ /**
8
+ * An implementation of a proof input/output database that stores data inline in the URI.
9
+ */
10
+ export class InlineProofStore {
11
+ saveProofInput(_id, type, inputs) {
12
+ const jobInputs = { type, inputs };
13
+ return Promise.resolve(this.encode(jobInputs));
14
+ }
15
+ saveProofOutput(_id, type, result) {
16
+ const jobResult = { type, result };
17
+ return Promise.resolve(this.encode(jobResult));
18
+ }
19
+ getProofInput(uri) {
20
+ return Promise.resolve(this.decode(uri, ProvingJobInputs));
21
+ }
22
+ getProofOutput(uri) {
23
+ return Promise.resolve(this.decode(uri, ProvingJobResult));
24
+ }
25
+ encode(obj) {
26
+ const encoded = encodeURIComponent(jsonStringify(obj));
27
+ return (PREFIX + SEPARATOR + encoded);
28
+ }
29
+ decode(uri, schema) {
30
+ const [prefix, data] = uri.split(SEPARATOR);
31
+ if (prefix !== PREFIX) {
32
+ throw new Error('Invalid proof input URI: ' + prefix);
33
+ }
34
+ return jsonParseWithSchema(decodeURIComponent(data), schema);
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvb2Zfc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvb2Zfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLGdCQUFnQixFQUVoQixnQkFBZ0IsR0FHakIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFnRGhGLHdGQUF3RjtBQUN4Rix3R0FBd0c7QUFDeEcsTUFBTSxNQUFNLEdBQUcscUNBQXFDLENBQUM7QUFDckQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBRXRCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixjQUFjLENBQ1osR0FBaUIsRUFDakIsSUFBTyxFQUNQLE1BQThCO1FBRTlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBc0IsQ0FBQztRQUN2RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlLENBQ2IsR0FBaUIsRUFDakIsSUFBTyxFQUNQLE1BQStCO1FBRS9CLE1BQU0sU0FBUyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBc0IsQ0FBQztRQUN2RCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxhQUFhLENBQUMsR0FBYTtRQUN6QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxjQUFjLENBQUMsR0FBYTtRQUMxQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTyxNQUFNLENBQUMsR0FBVztRQUN4QixNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxPQUFPLENBQUMsTUFBTSxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQWEsQ0FBQztJQUNwRCxDQUFDO0lBRU8sTUFBTSxDQUFJLEdBQWEsRUFBRSxNQUFpQjtRQUNoRCxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,9 @@
1
+ import type { ProverCache, ProvingJobStatus } from '@aztec/circuit-types';
2
+ export declare class InMemoryProverCache implements ProverCache {
3
+ private proofs;
4
+ constructor();
5
+ setProvingJobStatus(jobId: string, status: ProvingJobStatus): Promise<void>;
6
+ getProvingJobStatus(jobId: string): Promise<ProvingJobStatus>;
7
+ close(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/prover_cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,MAAM,CAAwC;;IAItD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3E,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAI7D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
@@ -0,0 +1,16 @@
1
+ export class InMemoryProverCache {
2
+ constructor() {
3
+ this.proofs = {};
4
+ }
5
+ setProvingJobStatus(jobId, status) {
6
+ this.proofs[jobId] = status;
7
+ return Promise.resolve();
8
+ }
9
+ getProvingJobStatus(jobId) {
10
+ return Promise.resolve(this.proofs[jobId] ?? { status: 'not-found' });
11
+ }
12
+ close() {
13
+ return Promise.resolve();
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL3Byb3Zlcl9jYWNoZS9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QjtRQUZRLFdBQU0sR0FBcUMsRUFBRSxDQUFDO0lBRXZDLENBQUM7SUFFaEIsbUJBQW1CLENBQUMsS0FBYSxFQUFFLE1BQXdCO1FBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFhO1FBQy9CLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YifQ==
@@ -1,15 +1,17 @@
1
- import { type ProvingRequestType, type ServerCircuitProver } from '@aztec/circuit-types';
2
- import { type ProvingJobConsumer } from './proving_broker_interface.js';
1
+ import { type ProvingJobConsumer, type ProvingJobId, type ProvingJobResultsMap, ProvingRequestType, type ServerCircuitProver } from '@aztec/circuit-types';
2
+ import { type ProofStore } from './proof_store.js';
3
3
  /**
4
4
  * A helper class that encapsulates a circuit prover and connects it to a job source.
5
5
  */
6
6
  export declare class ProvingAgent {
7
7
  /** The source of proving jobs */
8
- private jobSource;
8
+ private broker;
9
+ /** Database holding proof inputs and outputs */
10
+ private proofStore;
9
11
  /** The prover implementation to defer jobs to */
10
12
  private circuitProver;
11
13
  /** Optional list of allowed proof types to build */
12
- private proofAllowList?;
14
+ private proofAllowList;
13
15
  /** How long to wait between jobs */
14
16
  private pollIntervalMs;
15
17
  private log;
@@ -17,11 +19,13 @@ export declare class ProvingAgent {
17
19
  private runningPromise;
18
20
  constructor(
19
21
  /** The source of proving jobs */
20
- jobSource: ProvingJobConsumer,
22
+ broker: ProvingJobConsumer,
23
+ /** Database holding proof inputs and outputs */
24
+ proofStore: ProofStore,
21
25
  /** The prover implementation to defer jobs to */
22
26
  circuitProver: ServerCircuitProver,
23
27
  /** Optional list of allowed proof types to build */
24
- proofAllowList?: ProvingRequestType[] | undefined,
28
+ proofAllowList?: Array<ProvingRequestType>,
25
29
  /** How long to wait between jobs */
26
30
  pollIntervalMs?: number, log?: import("@aztec/foundation/log").Logger);
27
31
  setCircuitProver(circuitProver: ServerCircuitProver): void;
@@ -29,5 +33,6 @@ export declare class ProvingAgent {
29
33
  start(): void;
30
34
  stop(): Promise<void>;
31
35
  private safeWork;
36
+ handleJobResult: <T extends ProvingRequestType>(jobId: ProvingJobId, type: T, err: Error | undefined, result: ProvingJobResultsMap[T] | undefined) => Promise<void>;
32
37
  }
33
38
  //# sourceMappingURL=proving_agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proving_agent.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxE;;GAEG;AACH,qBAAa,YAAY;IAKrB,iCAAiC;IACjC,OAAO,CAAC,SAAS;IACjB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IACrB,oDAAoD;IACpD,OAAO,CAAC,cAAc,CAAC;IACvB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IAZb,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,cAAc,CAAiB;;IAGrC,iCAAiC;IACzB,SAAS,EAAE,kBAAkB;IACrC,iDAAiD;IACzC,aAAa,EAAE,mBAAmB;IAC1C,oDAAoD;IAC5C,cAAc,CAAC,kCAA2B;IAClD,oCAAoC;IAC5B,cAAc,SAAO,EACrB,GAAG,yCAA0D;IAKhE,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAI1D,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAIP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,CAAC,QAAQ,CAsCd;CACH"}
1
+ {"version":3,"file":"proving_agent.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EACzB,kBAAkB,EAClB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;GAEG;AACH,qBAAa,YAAY;IAKrB,iCAAiC;IACjC,OAAO,CAAC,MAAM;IACd,gDAAgD;IAChD,OAAO,CAAC,UAAU;IAClB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IACrB,oDAAoD;IACpD,OAAO,CAAC,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IAdb,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,cAAc,CAAiB;;IAGrC,iCAAiC;IACzB,MAAM,EAAE,kBAAkB;IAClC,gDAAgD;IACxC,UAAU,EAAE,UAAU;IAC9B,iDAAiD;IACzC,aAAa,EAAE,mBAAmB;IAC1C,oDAAoD;IAC5C,cAAc,GAAE,KAAK,CAAC,kBAAkB,CAAM;IACtD,oCAAoC;IAC5B,cAAc,SAAO,EACrB,GAAG,yCAAyD;IAK/D,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAI1D,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAIP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,CAAC,QAAQ,CAgEd;IAEF,eAAe,wCACN,YAAY,QACb,CAAC,OACF,KAAK,GAAG,SAAS,UACd,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,mBAa3C;CACH"}