@aztec/prover-client 0.65.1 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/block_builder/index.d.ts +6 -0
- package/dest/block_builder/index.d.ts.map +1 -0
- package/dest/block_builder/index.js +2 -0
- package/dest/block_builder/light.d.ts +32 -0
- package/dest/block_builder/light.d.ts.map +1 -0
- package/dest/block_builder/light.js +71 -0
- package/dest/config.d.ts +4 -10
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +8 -7
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -3
- package/dest/mocks/fixtures.d.ts +1 -2
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +3 -7
- package/dest/mocks/test_context.d.ts +28 -10
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +59 -21
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +10 -18
- package/dest/orchestrator/block-proving-state.js +2 -2
- package/dest/orchestrator/epoch-proving-state.d.ts +5 -6
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +10 -12
- package/dest/orchestrator/orchestrator.d.ts +8 -6
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +83 -72
- package/dest/orchestrator/tx-proving-state.d.ts +0 -1
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +2 -34
- package/dest/prover-agent/memory-proving-queue.d.ts +10 -8
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +35 -35
- package/dest/prover-agent/prover-agent.d.ts +1 -0
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +12 -9
- package/dest/prover-client/factory.d.ts +6 -0
- package/dest/prover-client/factory.d.ts.map +1 -0
- package/dest/prover-client/factory.js +6 -0
- package/dest/prover-client/index.d.ts +3 -0
- package/dest/prover-client/index.d.ts.map +1 -0
- package/dest/prover-client/index.js +3 -0
- package/dest/prover-client/prover-client.d.ts +41 -0
- package/dest/prover-client/prover-client.d.ts.map +1 -0
- package/dest/prover-client/prover-client.js +107 -0
- package/dest/proving_broker/caching_broker_facade.d.ts +30 -0
- package/dest/proving_broker/caching_broker_facade.d.ts.map +1 -0
- package/dest/proving_broker/caching_broker_facade.js +150 -0
- package/dest/proving_broker/factory.d.ts +5 -0
- package/dest/proving_broker/factory.d.ts.map +1 -0
- package/dest/proving_broker/factory.js +17 -0
- package/dest/proving_broker/index.d.ts +9 -0
- package/dest/proving_broker/index.d.ts.map +1 -0
- package/dest/proving_broker/index.js +9 -0
- package/dest/proving_broker/proof_store.d.ts +46 -0
- package/dest/proving_broker/proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store.js +37 -0
- package/dest/proving_broker/prover_cache/memory.d.ts +9 -0
- package/dest/proving_broker/prover_cache/memory.d.ts.map +1 -0
- package/dest/proving_broker/prover_cache/memory.js +16 -0
- package/dest/proving_broker/proving_agent.d.ts +16 -6
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +59 -20
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +8 -0
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -0
- package/dest/proving_broker/proving_agent_instrumentation.js +16 -0
- package/dest/proving_broker/proving_broker.d.ts +22 -16
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +79 -25
- package/dest/proving_broker/proving_broker_database/memory.d.ts +14 -0
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_database/memory.js +35 -0
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +17 -0
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_database/persisted.js +43 -0
- package/dest/proving_broker/{proving_job_database.d.ts → proving_broker_database.d.ts} +8 -8
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_database.js +2 -0
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +25 -0
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_instrumentation.js +91 -0
- package/dest/proving_broker/proving_job_controller.d.ts +13 -8
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +43 -43
- package/dest/proving_broker/rpc.d.ts +11 -0
- package/dest/proving_broker/rpc.d.ts.map +1 -0
- package/dest/proving_broker/rpc.js +44 -0
- package/dest/test/mock_prover.d.ts +16 -2
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +37 -1
- package/package.json +17 -14
- package/src/block_builder/index.ts +6 -0
- package/src/block_builder/light.ts +117 -0
- package/src/config.ts +17 -16
- package/src/index.ts +2 -2
- package/src/mocks/fixtures.ts +2 -14
- package/src/mocks/test_context.ts +81 -25
- package/src/orchestrator/block-building-helpers.ts +22 -33
- package/src/orchestrator/block-proving-state.ts +1 -1
- package/src/orchestrator/epoch-proving-state.ts +10 -13
- package/src/orchestrator/orchestrator.ts +97 -77
- package/src/orchestrator/tx-proving-state.ts +1 -56
- package/src/prover-agent/memory-proving-queue.ts +43 -44
- package/src/prover-agent/prover-agent.ts +16 -20
- package/src/prover-client/factory.ts +15 -0
- package/src/prover-client/index.ts +2 -0
- package/src/prover-client/prover-client.ts +172 -0
- package/src/proving_broker/caching_broker_facade.ts +312 -0
- package/src/proving_broker/factory.ts +25 -0
- package/src/proving_broker/index.ts +8 -0
- package/src/proving_broker/proof_store.ts +106 -0
- package/src/proving_broker/prover_cache/memory.ts +20 -0
- package/src/proving_broker/proving_agent.ts +90 -20
- package/src/proving_broker/proving_agent_instrumentation.ts +21 -0
- package/src/proving_broker/proving_broker.ts +143 -67
- package/src/proving_broker/proving_broker_database/memory.ts +43 -0
- package/src/proving_broker/proving_broker_database/persisted.ts +60 -0
- package/src/proving_broker/{proving_job_database.ts → proving_broker_database.ts} +7 -12
- package/src/proving_broker/proving_broker_instrumentation.ts +130 -0
- package/src/proving_broker/proving_job_controller.ts +54 -46
- package/src/proving_broker/rpc.ts +64 -0
- package/src/test/mock_prover.ts +52 -0
- package/dest/proving_broker/proving_broker_interface.d.ts +0 -61
- package/dest/proving_broker/proving_broker_interface.d.ts.map +0 -1
- package/dest/proving_broker/proving_broker_interface.js +0 -2
- package/dest/proving_broker/proving_job_database/memory.d.ts +0 -14
- package/dest/proving_broker/proving_job_database/memory.d.ts.map +0 -1
- package/dest/proving_broker/proving_job_database/memory.js +0 -35
- package/dest/proving_broker/proving_job_database/persisted.d.ts +0 -15
- package/dest/proving_broker/proving_job_database/persisted.d.ts.map +0 -1
- package/dest/proving_broker/proving_job_database/persisted.js +0 -35
- package/dest/proving_broker/proving_job_database.d.ts.map +0 -1
- package/dest/proving_broker/proving_job_database.js +0 -2
- package/dest/tx-prover/factory.d.ts +0 -5
- package/dest/tx-prover/factory.d.ts.map +0 -1
- package/dest/tx-prover/factory.js +0 -6
- package/dest/tx-prover/tx-prover.d.ts +0 -38
- package/dest/tx-prover/tx-prover.d.ts.map +0 -1
- package/dest/tx-prover/tx-prover.js +0 -93
- package/src/proving_broker/proving_broker_interface.ts +0 -74
- package/src/proving_broker/proving_job_database/memory.ts +0 -43
- package/src/proving_broker/proving_job_database/persisted.ts +0 -45
- package/src/tx-prover/factory.ts +0 -9
- package/src/tx-prover/tx-prover.ts +0 -130
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { BBNativeRollupProver, TestCircuitProver } from '@aztec/bb-prover';
|
|
2
|
-
import { Fr } from '@aztec/circuits.js';
|
|
3
|
-
import { NativeACVMSimulator } from '@aztec/simulator';
|
|
4
|
-
import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
|
|
5
|
-
import { MemoryProvingQueue } from '../prover-agent/memory-proving-queue.js';
|
|
6
|
-
import { ProverAgent } from '../prover-agent/prover-agent.js';
|
|
7
|
-
/**
|
|
8
|
-
* A prover factory.
|
|
9
|
-
* TODO(palla/prover-node): Rename this class
|
|
10
|
-
*/
|
|
11
|
-
export class TxProver {
|
|
12
|
-
constructor(config, telemetry, agent) {
|
|
13
|
-
this.config = config;
|
|
14
|
-
this.telemetry = telemetry;
|
|
15
|
-
this.agent = agent;
|
|
16
|
-
this.running = false;
|
|
17
|
-
// TODO(palla/prover-node): Cache the paddingTx here, and not in each proving orchestrator,
|
|
18
|
-
// so it can be reused across multiple ones and not recomputed every time.
|
|
19
|
-
this.queue = new MemoryProvingQueue(telemetry, config.proverJobTimeoutMs, config.proverJobPollIntervalMs);
|
|
20
|
-
}
|
|
21
|
-
createEpochProver(db) {
|
|
22
|
-
return new ProvingOrchestrator(db, this.queue, this.telemetry, this.config.proverId);
|
|
23
|
-
}
|
|
24
|
-
getProverId() {
|
|
25
|
-
return this.config.proverId ?? Fr.ZERO;
|
|
26
|
-
}
|
|
27
|
-
async updateProverConfig(config) {
|
|
28
|
-
const newConfig = { ...this.config, ...config };
|
|
29
|
-
if (newConfig.realProofs !== this.config.realProofs && this.agent) {
|
|
30
|
-
const circuitProver = await TxProver.buildCircuitProver(newConfig, this.telemetry);
|
|
31
|
-
this.agent.setCircuitProver(circuitProver);
|
|
32
|
-
}
|
|
33
|
-
if (this.config.proverAgentConcurrency !== newConfig.proverAgentConcurrency) {
|
|
34
|
-
await this.agent?.setMaxConcurrency(newConfig.proverAgentConcurrency);
|
|
35
|
-
}
|
|
36
|
-
if (!this.config.realProofs && newConfig.realProofs) {
|
|
37
|
-
// TODO(palla/prover-node): Reset padding tx here once we cache it at this class
|
|
38
|
-
}
|
|
39
|
-
this.config = newConfig;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Starts the prover instance
|
|
43
|
-
*/
|
|
44
|
-
start() {
|
|
45
|
-
if (this.running) {
|
|
46
|
-
return Promise.resolve();
|
|
47
|
-
}
|
|
48
|
-
this.running = true;
|
|
49
|
-
this.queue.start();
|
|
50
|
-
this.agent?.start(this.queue);
|
|
51
|
-
return Promise.resolve();
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Stops the prover instance
|
|
55
|
-
*/
|
|
56
|
-
async stop() {
|
|
57
|
-
if (!this.running) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
this.running = false;
|
|
61
|
-
// TODO(palla/prover-node): Keep a reference to all proving orchestrators that are alive and stop them?
|
|
62
|
-
await this.agent?.stop();
|
|
63
|
-
await this.queue.stop();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Creates a new prover client and starts it
|
|
67
|
-
* @param config - The prover configuration.
|
|
68
|
-
* @param vks - The verification keys for the prover
|
|
69
|
-
* @param worldStateSynchronizer - An instance of the world state
|
|
70
|
-
* @returns An instance of the prover, constructed and started.
|
|
71
|
-
*/
|
|
72
|
-
static async new(config, telemetry) {
|
|
73
|
-
const agent = config.proverAgentEnabled
|
|
74
|
-
? new ProverAgent(await TxProver.buildCircuitProver(config, telemetry), config.proverAgentConcurrency, config.proverAgentPollInterval)
|
|
75
|
-
: undefined;
|
|
76
|
-
const prover = new TxProver(config, telemetry, agent);
|
|
77
|
-
await prover.start();
|
|
78
|
-
return prover;
|
|
79
|
-
}
|
|
80
|
-
static async buildCircuitProver(config, telemetry) {
|
|
81
|
-
if (config.realProofs) {
|
|
82
|
-
return await BBNativeRollupProver.new(config, telemetry);
|
|
83
|
-
}
|
|
84
|
-
const simulationProvider = config.acvmBinaryPath
|
|
85
|
-
? new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath)
|
|
86
|
-
: undefined;
|
|
87
|
-
return new TestCircuitProver(telemetry, simulationProvider, config);
|
|
88
|
-
}
|
|
89
|
-
getProvingJobSource() {
|
|
90
|
-
return this.queue;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4LXByb3Zlci90eC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFRM0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSXZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUluQixZQUNVLE1BQTBCLEVBQzFCLFNBQTBCLEVBQzFCLEtBQW1CO1FBRm5CLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFMckIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQU90QiwyRkFBMkY7UUFDM0YsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUE2QjtRQUNwRCxPQUFPLElBQUksbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0s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
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type ProvingRequestType,
|
|
3
|
-
type V2ProofOutput,
|
|
4
|
-
type V2ProvingJob,
|
|
5
|
-
type V2ProvingJobId,
|
|
6
|
-
type V2ProvingJobStatus,
|
|
7
|
-
} from '@aztec/circuit-types';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* An interface for the proving orchestrator. The producer uses this to enqueue jobs for agents
|
|
11
|
-
*/
|
|
12
|
-
export interface ProvingJobProducer {
|
|
13
|
-
/**
|
|
14
|
-
* Enqueues a proving job
|
|
15
|
-
* @param job - The job to enqueue
|
|
16
|
-
*/
|
|
17
|
-
enqueueProvingJob(job: V2ProvingJob): Promise<void>;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Cancels a proving job and clears all of its
|
|
21
|
-
* @param id - The ID of the job to cancel
|
|
22
|
-
*/
|
|
23
|
-
removeAndCancelProvingJob(id: V2ProvingJobId): Promise<void>;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Returns the current status fof the proving job
|
|
27
|
-
* @param id - The ID of the job to get the status of
|
|
28
|
-
*/
|
|
29
|
-
getProvingJobStatus(id: V2ProvingJobId): Promise<V2ProvingJobStatus>;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface ProvingJobFilter<T extends ProvingRequestType[]> {
|
|
33
|
-
allowList?: T;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* An interface for proving agents to request jobs and report results
|
|
38
|
-
*/
|
|
39
|
-
export interface ProvingJobConsumer {
|
|
40
|
-
/**
|
|
41
|
-
* Gets a proving job to work on
|
|
42
|
-
* @param filter - Optional filter for the type of job to get
|
|
43
|
-
*/
|
|
44
|
-
getProvingJob<T extends ProvingRequestType[]>(
|
|
45
|
-
filter?: ProvingJobFilter<T>,
|
|
46
|
-
): Promise<{ job: V2ProvingJob; time: number } | undefined>;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Marks a proving job as successful
|
|
50
|
-
* @param id - The ID of the job to report success for
|
|
51
|
-
* @param result - The result of the job
|
|
52
|
-
*/
|
|
53
|
-
reportProvingJobSuccess(id: V2ProvingJobId, result: V2ProofOutput): Promise<void>;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Marks a proving job as errored
|
|
57
|
-
* @param id - The ID of the job to report an error for
|
|
58
|
-
* @param err - The error that occurred while processing the job
|
|
59
|
-
* @param retry - Whether to retry the job
|
|
60
|
-
*/
|
|
61
|
-
reportProvingJobError(id: V2ProvingJobId, err: Error, retry?: boolean): Promise<void>;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Sends a heartbeat to the broker to indicate that the agent is still working on the given proving job
|
|
65
|
-
* @param id - The ID of the job to report progress for
|
|
66
|
-
* @param startedAt - The unix epoch when the job was started
|
|
67
|
-
* @param filter - Optional filter for the type of job to get
|
|
68
|
-
*/
|
|
69
|
-
reportProvingJobProgress<F extends ProvingRequestType[]>(
|
|
70
|
-
id: V2ProvingJobId,
|
|
71
|
-
startedAt: number,
|
|
72
|
-
filter?: ProvingJobFilter<F>,
|
|
73
|
-
): Promise<{ job: V2ProvingJob; time: number } | undefined>;
|
|
74
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { V2ProofOutput, V2ProvingJob, V2ProvingJobId, V2ProvingJobResult } from '@aztec/circuit-types';
|
|
2
|
-
|
|
3
|
-
import { type ProvingJobDatabase } from '../proving_job_database.js';
|
|
4
|
-
|
|
5
|
-
export class InMemoryDatabase implements ProvingJobDatabase {
|
|
6
|
-
private jobs = new Map<V2ProvingJobId, V2ProvingJob>();
|
|
7
|
-
private results = new Map<V2ProvingJobId, V2ProvingJobResult>();
|
|
8
|
-
|
|
9
|
-
getProvingJob(id: V2ProvingJobId): V2ProvingJob | undefined {
|
|
10
|
-
return this.jobs.get(id);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
getProvingJobResult(id: V2ProvingJobId): V2ProvingJobResult | undefined {
|
|
14
|
-
return this.results.get(id);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
addProvingJob(request: V2ProvingJob): Promise<void> {
|
|
18
|
-
this.jobs.set(request.id, request);
|
|
19
|
-
return Promise.resolve();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
setProvingJobResult(id: V2ProvingJobId, value: V2ProofOutput): Promise<void> {
|
|
23
|
-
this.results.set(id, { value });
|
|
24
|
-
return Promise.resolve();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
setProvingJobError(id: V2ProvingJobId, error: Error): Promise<void> {
|
|
28
|
-
this.results.set(id, { error: String(error) });
|
|
29
|
-
return Promise.resolve();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
deleteProvingJobAndResult(id: V2ProvingJobId): Promise<void> {
|
|
33
|
-
this.jobs.delete(id);
|
|
34
|
-
this.results.delete(id);
|
|
35
|
-
return Promise.resolve();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
*allProvingJobs(): Iterable<[V2ProvingJob, V2ProvingJobResult | undefined]> {
|
|
39
|
-
for (const item of this.jobs.values()) {
|
|
40
|
-
yield [item, this.results.get(item.id)] as const;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { type V2ProofOutput, V2ProvingJob, type V2ProvingJobId, V2ProvingJobResult } from '@aztec/circuit-types';
|
|
2
|
-
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
3
|
-
import { type AztecKVStore, type AztecMap } from '@aztec/kv-store';
|
|
4
|
-
|
|
5
|
-
import { type ProvingJobDatabase } from '../proving_job_database.js';
|
|
6
|
-
|
|
7
|
-
export class PersistedProvingJobDatabase implements ProvingJobDatabase {
|
|
8
|
-
private jobs: AztecMap<V2ProvingJobId, string>;
|
|
9
|
-
private jobResults: AztecMap<V2ProvingJobId, string>;
|
|
10
|
-
|
|
11
|
-
constructor(private store: AztecKVStore) {
|
|
12
|
-
this.jobs = store.openMap('proving_jobs');
|
|
13
|
-
this.jobResults = store.openMap('proving_job_results');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async addProvingJob(job: V2ProvingJob): Promise<void> {
|
|
17
|
-
await this.jobs.set(job.id, jsonStringify(job));
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
*allProvingJobs(): Iterable<[V2ProvingJob, V2ProvingJobResult | undefined]> {
|
|
21
|
-
for (const jobStr of this.jobs.values()) {
|
|
22
|
-
const job = jsonParseWithSchema(jobStr, V2ProvingJob);
|
|
23
|
-
const resultStr = this.jobResults.get(job.id);
|
|
24
|
-
const result = resultStr ? jsonParseWithSchema(resultStr, V2ProvingJobResult) : undefined;
|
|
25
|
-
yield [job, result];
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
deleteProvingJobAndResult(id: V2ProvingJobId): Promise<void> {
|
|
30
|
-
return this.store.transaction(() => {
|
|
31
|
-
void this.jobs.delete(id);
|
|
32
|
-
void this.jobResults.delete(id);
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async setProvingJobError(id: V2ProvingJobId, err: Error): Promise<void> {
|
|
37
|
-
const res: V2ProvingJobResult = { error: err.message };
|
|
38
|
-
await this.jobResults.set(id, jsonStringify(res));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async setProvingJobResult(id: V2ProvingJobId, value: V2ProofOutput): Promise<void> {
|
|
42
|
-
const res: V2ProvingJobResult = { value };
|
|
43
|
-
await this.jobResults.set(id, jsonStringify(res));
|
|
44
|
-
}
|
|
45
|
-
}
|
package/src/tx-prover/factory.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
2
|
-
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
3
|
-
|
|
4
|
-
import { type ProverClientConfig } from '../config.js';
|
|
5
|
-
import { TxProver } from './tx-prover.js';
|
|
6
|
-
|
|
7
|
-
export function createProverClient(config: ProverClientConfig, telemetry: TelemetryClient = new NoopTelemetryClient()) {
|
|
8
|
-
return TxProver.new(config, telemetry);
|
|
9
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { BBNativeRollupProver, TestCircuitProver } from '@aztec/bb-prover';
|
|
2
|
-
import {
|
|
3
|
-
type EpochProver,
|
|
4
|
-
type EpochProverManager,
|
|
5
|
-
type MerkleTreeWriteOperations,
|
|
6
|
-
type ProvingJobSource,
|
|
7
|
-
type ServerCircuitProver,
|
|
8
|
-
} from '@aztec/circuit-types/interfaces';
|
|
9
|
-
import { Fr } from '@aztec/circuits.js';
|
|
10
|
-
import { NativeACVMSimulator } from '@aztec/simulator';
|
|
11
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
12
|
-
|
|
13
|
-
import { type ProverClientConfig } from '../config.js';
|
|
14
|
-
import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
|
|
15
|
-
import { MemoryProvingQueue } from '../prover-agent/memory-proving-queue.js';
|
|
16
|
-
import { ProverAgent } from '../prover-agent/prover-agent.js';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* A prover factory.
|
|
20
|
-
* TODO(palla/prover-node): Rename this class
|
|
21
|
-
*/
|
|
22
|
-
export class TxProver implements EpochProverManager {
|
|
23
|
-
private queue: MemoryProvingQueue;
|
|
24
|
-
private running = false;
|
|
25
|
-
|
|
26
|
-
private constructor(
|
|
27
|
-
private config: ProverClientConfig,
|
|
28
|
-
private telemetry: TelemetryClient,
|
|
29
|
-
private agent?: ProverAgent,
|
|
30
|
-
) {
|
|
31
|
-
// TODO(palla/prover-node): Cache the paddingTx here, and not in each proving orchestrator,
|
|
32
|
-
// so it can be reused across multiple ones and not recomputed every time.
|
|
33
|
-
this.queue = new MemoryProvingQueue(telemetry, config.proverJobTimeoutMs, config.proverJobPollIntervalMs);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public createEpochProver(db: MerkleTreeWriteOperations): EpochProver {
|
|
37
|
-
return new ProvingOrchestrator(db, this.queue, this.telemetry, this.config.proverId);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public getProverId(): Fr {
|
|
41
|
-
return this.config.proverId ?? Fr.ZERO;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async updateProverConfig(config: Partial<ProverClientConfig>): Promise<void> {
|
|
45
|
-
const newConfig = { ...this.config, ...config };
|
|
46
|
-
|
|
47
|
-
if (newConfig.realProofs !== this.config.realProofs && this.agent) {
|
|
48
|
-
const circuitProver = await TxProver.buildCircuitProver(newConfig, this.telemetry);
|
|
49
|
-
this.agent.setCircuitProver(circuitProver);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (this.config.proverAgentConcurrency !== newConfig.proverAgentConcurrency) {
|
|
53
|
-
await this.agent?.setMaxConcurrency(newConfig.proverAgentConcurrency);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (!this.config.realProofs && newConfig.realProofs) {
|
|
57
|
-
// TODO(palla/prover-node): Reset padding tx here once we cache it at this class
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
this.config = newConfig;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Starts the prover instance
|
|
65
|
-
*/
|
|
66
|
-
public start() {
|
|
67
|
-
if (this.running) {
|
|
68
|
-
return Promise.resolve();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
this.running = true;
|
|
72
|
-
this.queue.start();
|
|
73
|
-
this.agent?.start(this.queue);
|
|
74
|
-
return Promise.resolve();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Stops the prover instance
|
|
79
|
-
*/
|
|
80
|
-
public async stop() {
|
|
81
|
-
if (!this.running) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
this.running = false;
|
|
85
|
-
|
|
86
|
-
// TODO(palla/prover-node): Keep a reference to all proving orchestrators that are alive and stop them?
|
|
87
|
-
await this.agent?.stop();
|
|
88
|
-
await this.queue.stop();
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Creates a new prover client and starts it
|
|
93
|
-
* @param config - The prover configuration.
|
|
94
|
-
* @param vks - The verification keys for the prover
|
|
95
|
-
* @param worldStateSynchronizer - An instance of the world state
|
|
96
|
-
* @returns An instance of the prover, constructed and started.
|
|
97
|
-
*/
|
|
98
|
-
public static async new(config: ProverClientConfig, telemetry: TelemetryClient) {
|
|
99
|
-
const agent = config.proverAgentEnabled
|
|
100
|
-
? new ProverAgent(
|
|
101
|
-
await TxProver.buildCircuitProver(config, telemetry),
|
|
102
|
-
config.proverAgentConcurrency,
|
|
103
|
-
config.proverAgentPollInterval,
|
|
104
|
-
)
|
|
105
|
-
: undefined;
|
|
106
|
-
|
|
107
|
-
const prover = new TxProver(config, telemetry, agent);
|
|
108
|
-
await prover.start();
|
|
109
|
-
return prover;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
private static async buildCircuitProver(
|
|
113
|
-
config: ProverClientConfig,
|
|
114
|
-
telemetry: TelemetryClient,
|
|
115
|
-
): Promise<ServerCircuitProver> {
|
|
116
|
-
if (config.realProofs) {
|
|
117
|
-
return await BBNativeRollupProver.new(config, telemetry);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const simulationProvider = config.acvmBinaryPath
|
|
121
|
-
? new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath)
|
|
122
|
-
: undefined;
|
|
123
|
-
|
|
124
|
-
return new TestCircuitProver(telemetry, simulationProvider, config);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
public getProvingJobSource(): ProvingJobSource {
|
|
128
|
-
return this.queue;
|
|
129
|
-
}
|
|
130
|
-
}
|