@aztec/prover-client 0.0.0-test.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/README.md +1 -0
- package/dest/bin/get-proof-inputs.d.ts +2 -0
- package/dest/bin/get-proof-inputs.d.ts.map +1 -0
- package/dest/bin/get-proof-inputs.js +51 -0
- 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 +1 -0
- package/dest/block_builder/light.d.ts +33 -0
- package/dest/block_builder/light.d.ts.map +1 -0
- package/dest/block_builder/light.js +82 -0
- package/dest/config.d.ts +17 -0
- package/dest/config.d.ts.map +1 -0
- package/dest/config.js +39 -0
- package/dest/index.d.ts +4 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +2 -0
- package/dest/mocks/fixtures.d.ts +20 -0
- package/dest/mocks/fixtures.d.ts.map +1 -0
- package/dest/mocks/fixtures.js +77 -0
- package/dest/mocks/test_context.d.ts +55 -0
- package/dest/mocks/test_context.d.ts.map +1 -0
- package/dest/mocks/test_context.js +193 -0
- package/dest/orchestrator/block-building-helpers.d.ts +55 -0
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -0
- package/dest/orchestrator/block-building-helpers.js +285 -0
- package/dest/orchestrator/block-proving-state.d.ts +76 -0
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/block-proving-state.js +269 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +60 -0
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/epoch-proving-state.js +163 -0
- package/dest/orchestrator/index.d.ts +2 -0
- package/dest/orchestrator/index.d.ts.map +1 -0
- package/dest/orchestrator/index.js +1 -0
- package/dest/orchestrator/orchestrator.d.ts +110 -0
- package/dest/orchestrator/orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/orchestrator.js +690 -0
- package/dest/orchestrator/orchestrator_metrics.d.ts +8 -0
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -0
- package/dest/orchestrator/orchestrator_metrics.js +17 -0
- package/dest/orchestrator/tx-proving-state.d.ts +34 -0
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/tx-proving-state.js +94 -0
- 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 +5 -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 +2 -0
- package/dest/prover-client/prover-client.d.ts +42 -0
- package/dest/prover-client/prover-client.d.ts.map +1 -0
- package/dest/prover-client/prover-client.js +110 -0
- package/dest/prover-client/server-epoch-prover.d.ts +28 -0
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -0
- package/dest/prover-client/server-epoch-prover.js +40 -0
- package/dest/proving_broker/broker_prover_facade.d.ts +46 -0
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -0
- package/dest/proving_broker/broker_prover_facade.js +344 -0
- package/dest/proving_broker/config.d.ts +83 -0
- package/dest/proving_broker/config.d.ts.map +1 -0
- package/dest/proving_broker/config.js +104 -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 +9 -0
- package/dest/proving_broker/fixtures.d.ts +5 -0
- package/dest/proving_broker/fixtures.d.ts.map +1 -0
- package/dest/proving_broker/fixtures.js +12 -0
- package/dest/proving_broker/index.d.ts +10 -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/factory.d.ts +6 -0
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/factory.js +36 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +14 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.js +51 -0
- package/dest/proving_broker/proof_store/index.d.ts +4 -0
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/index.js +3 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +15 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/inline_proof_store.js +41 -0
- package/dest/proving_broker/proof_store/proof_store.d.ts +36 -0
- package/dest/proving_broker/proof_store/proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/proof_store.js +3 -0
- package/dest/proving_broker/proving_agent.d.ts +46 -0
- package/dest/proving_broker/proving_agent.d.ts.map +1 -0
- package/dest/proving_broker/proving_agent.js +134 -0
- 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 +64 -0
- package/dest/proving_broker/proving_broker.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker.js +570 -0
- package/dest/proving_broker/proving_broker_database/memory.d.ts +16 -0
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_database/memory.js +54 -0
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +25 -0
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_database/persisted.js +182 -0
- package/dest/proving_broker/proving_broker_database.d.ts +39 -0
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_database.js +3 -0
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +29 -0
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -0
- package/dest/proving_broker/proving_broker_instrumentation.js +110 -0
- package/dest/proving_broker/proving_job_controller.d.ts +33 -0
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -0
- package/dest/proving_broker/proving_job_controller.js +166 -0
- package/dest/proving_broker/rpc.d.ts +27 -0
- package/dest/proving_broker/rpc.d.ts.map +1 -0
- package/dest/proving_broker/rpc.js +66 -0
- package/dest/test/mock_prover.d.ts +35 -0
- package/dest/test/mock_prover.d.ts.map +1 -0
- package/dest/test/mock_prover.js +82 -0
- package/package.json +112 -0
- package/src/bin/get-proof-inputs.ts +59 -0
- package/src/block_builder/index.ts +6 -0
- package/src/block_builder/light.ts +101 -0
- package/src/config.ts +55 -0
- package/src/index.ts +4 -0
- package/src/mocks/fixtures.ts +117 -0
- package/src/mocks/test_context.ts +257 -0
- package/src/orchestrator/block-building-helpers.ts +553 -0
- package/src/orchestrator/block-proving-state.ts +379 -0
- package/src/orchestrator/epoch-proving-state.ts +252 -0
- package/src/orchestrator/index.ts +1 -0
- package/src/orchestrator/orchestrator.ts +971 -0
- package/src/orchestrator/orchestrator_metrics.ts +22 -0
- package/src/orchestrator/tx-proving-state.ts +139 -0
- package/src/prover-client/factory.ts +14 -0
- package/src/prover-client/index.ts +2 -0
- package/src/prover-client/prover-client.ts +162 -0
- package/src/prover-client/server-epoch-prover.ts +51 -0
- package/src/proving_broker/broker_prover_facade.ts +585 -0
- package/src/proving_broker/config.ts +138 -0
- package/src/proving_broker/factory.ts +18 -0
- package/src/proving_broker/fixtures.ts +15 -0
- package/src/proving_broker/index.ts +9 -0
- package/src/proving_broker/proof_store/factory.ts +42 -0
- package/src/proving_broker/proof_store/gcs_proof_store.ts +72 -0
- package/src/proving_broker/proof_store/index.ts +3 -0
- package/src/proving_broker/proof_store/inline_proof_store.ts +63 -0
- package/src/proving_broker/proof_store/proof_store.ts +54 -0
- package/src/proving_broker/proving_agent.ts +181 -0
- package/src/proving_broker/proving_agent_instrumentation.ts +21 -0
- package/src/proving_broker/proving_broker.ts +687 -0
- package/src/proving_broker/proving_broker_database/memory.ts +63 -0
- package/src/proving_broker/proving_broker_database/persisted.ts +218 -0
- package/src/proving_broker/proving_broker_database.ts +44 -0
- package/src/proving_broker/proving_broker_instrumentation.ts +145 -0
- package/src/proving_broker/proving_job_controller.ts +194 -0
- package/src/proving_broker/rpc.ts +95 -0
- package/src/test/mock_prover.ts +253 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { BatchQueue } from '@aztec/foundation/queue';
|
|
4
|
+
import { openVersionedStoreAt } from '@aztec/kv-store/lmdb-v2';
|
|
5
|
+
import { ProvingJob, ProvingJobSettledResult, getEpochFromProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import { Attributes, LmdbMetrics, getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
|
+
import { mkdir, readdir } from 'fs/promises';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
class SingleEpochDatabase {
|
|
10
|
+
store;
|
|
11
|
+
static SCHEMA_VERSION = 1;
|
|
12
|
+
jobs;
|
|
13
|
+
jobResults;
|
|
14
|
+
constructor(store){
|
|
15
|
+
this.store = store;
|
|
16
|
+
this.jobs = store.openMap('proving_jobs');
|
|
17
|
+
this.jobResults = store.openMap('proving_job_results');
|
|
18
|
+
}
|
|
19
|
+
estimateSize() {
|
|
20
|
+
return this.store.estimateSize();
|
|
21
|
+
}
|
|
22
|
+
async batchWrite(jobs, results) {
|
|
23
|
+
await this.store.transactionAsync(async ()=>{
|
|
24
|
+
for (const job of jobs){
|
|
25
|
+
await this.jobs.set(job.id, jsonStringify(job));
|
|
26
|
+
}
|
|
27
|
+
for (const [id, result] of results){
|
|
28
|
+
await this.jobResults.set(id, jsonStringify(result));
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async *allProvingJobs() {
|
|
33
|
+
for await (const jobStr of this.jobs.valuesAsync()){
|
|
34
|
+
const job = await jsonParseWithSchema(jobStr, ProvingJob);
|
|
35
|
+
const resultStr = await this.jobResults.getAsync(job.id);
|
|
36
|
+
const result = resultStr ? await jsonParseWithSchema(resultStr, ProvingJobSettledResult) : undefined;
|
|
37
|
+
yield [
|
|
38
|
+
job,
|
|
39
|
+
result
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async setProvingJobError(id, reason) {
|
|
44
|
+
const result = {
|
|
45
|
+
status: 'rejected',
|
|
46
|
+
reason
|
|
47
|
+
};
|
|
48
|
+
await this.jobResults.set(id, jsonStringify(result));
|
|
49
|
+
}
|
|
50
|
+
async setProvingJobResult(id, value) {
|
|
51
|
+
const result = {
|
|
52
|
+
status: 'fulfilled',
|
|
53
|
+
value
|
|
54
|
+
};
|
|
55
|
+
await this.jobResults.set(id, jsonStringify(result));
|
|
56
|
+
}
|
|
57
|
+
delete() {
|
|
58
|
+
return this.store.delete();
|
|
59
|
+
}
|
|
60
|
+
close() {
|
|
61
|
+
return this.store.close();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export class KVBrokerDatabase {
|
|
65
|
+
epochs;
|
|
66
|
+
config;
|
|
67
|
+
logger;
|
|
68
|
+
metrics;
|
|
69
|
+
batchQueue;
|
|
70
|
+
constructor(epochs, config, client = getTelemetryClient(), logger){
|
|
71
|
+
this.epochs = epochs;
|
|
72
|
+
this.config = config;
|
|
73
|
+
this.logger = logger;
|
|
74
|
+
this.metrics = new LmdbMetrics(client.getMeter('KVBrokerDatabase'), {
|
|
75
|
+
[Attributes.DB_DATA_TYPE]: 'prover-broker'
|
|
76
|
+
}, ()=>this.estimateSize());
|
|
77
|
+
this.batchQueue = new BatchQueue((items, key)=>this.commitWrites(items, key), config.proverBrokerBatchSize, config.proverBrokerBatchIntervalMs, createLogger('proving-client:proving-broker-database:batch-queue'));
|
|
78
|
+
}
|
|
79
|
+
// exposed for testing
|
|
80
|
+
async commitWrites(items, epochNumber) {
|
|
81
|
+
const jobsToAdd = items.filter((item)=>'id' in item);
|
|
82
|
+
const resultsToAdd = items.filter((item)=>Array.isArray(item));
|
|
83
|
+
const db = await this.getEpochDatabase(epochNumber);
|
|
84
|
+
await db.batchWrite(jobsToAdd, resultsToAdd);
|
|
85
|
+
}
|
|
86
|
+
async estimateSize() {
|
|
87
|
+
const sizes = await Promise.all(Array.from(this.epochs.values()).map((x)=>x.estimateSize()));
|
|
88
|
+
return {
|
|
89
|
+
mappingSize: this.config.dataStoreMapSizeKB,
|
|
90
|
+
numItems: sizes.reduce((prev, curr)=>prev + curr.numItems, 0),
|
|
91
|
+
actualSize: sizes.reduce((prev, curr)=>prev + curr.actualSize, 0)
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
static async new(config, client = getTelemetryClient(), logger = createLogger('prover-client:proving-broker-database')) {
|
|
95
|
+
const epochs = new Map();
|
|
96
|
+
const files = await readdir(config.dataDirectory, {
|
|
97
|
+
recursive: false,
|
|
98
|
+
withFileTypes: true
|
|
99
|
+
});
|
|
100
|
+
for (const file of files){
|
|
101
|
+
if (!file.isDirectory()) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
const fullDirectory = join(config.dataDirectory, file.name);
|
|
105
|
+
const epochDirectory = file.name;
|
|
106
|
+
const epochNumber = parseInt(epochDirectory, 10);
|
|
107
|
+
if (!Number.isSafeInteger(epochNumber) || epochNumber < 0) {
|
|
108
|
+
logger.warn(`Found invalid epoch directory ${fullDirectory} when loading epoch databases, ignoring`);
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
logger.info(`Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKB}KB`);
|
|
112
|
+
const db = await openVersionedStoreAt(fullDirectory, SingleEpochDatabase.SCHEMA_VERSION, config.l1Contracts.rollupAddress, config.dataStoreMapSizeKB);
|
|
113
|
+
const epochDb = new SingleEpochDatabase(db);
|
|
114
|
+
epochs.set(epochNumber, epochDb);
|
|
115
|
+
}
|
|
116
|
+
const db = new KVBrokerDatabase(epochs, config, client, logger);
|
|
117
|
+
db.start();
|
|
118
|
+
return db;
|
|
119
|
+
}
|
|
120
|
+
start() {
|
|
121
|
+
this.batchQueue.start();
|
|
122
|
+
}
|
|
123
|
+
async close() {
|
|
124
|
+
await this.batchQueue.stop();
|
|
125
|
+
for (const [_, v] of this.epochs){
|
|
126
|
+
await v.close();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async deleteAllProvingJobsOlderThanEpoch(epochNumber) {
|
|
130
|
+
const oldEpochs = Array.from(this.epochs.keys()).filter((e)=>e < epochNumber);
|
|
131
|
+
for (const old of oldEpochs){
|
|
132
|
+
const db = this.epochs.get(old);
|
|
133
|
+
if (!db) {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
this.logger.info(`Deleting broker database for epoch ${old}`);
|
|
137
|
+
await db.delete();
|
|
138
|
+
this.epochs.delete(old);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
addProvingJob(job) {
|
|
142
|
+
return this.batchQueue.put(job, job.epochNumber);
|
|
143
|
+
}
|
|
144
|
+
async *allProvingJobs() {
|
|
145
|
+
const iterators = Array.from(this.epochs.values()).map((x)=>x.allProvingJobs());
|
|
146
|
+
for (const it of iterators){
|
|
147
|
+
yield* it;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
setProvingJobError(id, reason) {
|
|
151
|
+
return this.batchQueue.put([
|
|
152
|
+
id,
|
|
153
|
+
{
|
|
154
|
+
status: 'rejected',
|
|
155
|
+
reason
|
|
156
|
+
}
|
|
157
|
+
], getEpochFromProvingJobId(id));
|
|
158
|
+
}
|
|
159
|
+
setProvingJobResult(id, value) {
|
|
160
|
+
return this.batchQueue.put([
|
|
161
|
+
id,
|
|
162
|
+
{
|
|
163
|
+
status: 'fulfilled',
|
|
164
|
+
value
|
|
165
|
+
}
|
|
166
|
+
], getEpochFromProvingJobId(id));
|
|
167
|
+
}
|
|
168
|
+
async getEpochDatabase(epochNumber) {
|
|
169
|
+
let epochDb = this.epochs.get(epochNumber);
|
|
170
|
+
if (!epochDb) {
|
|
171
|
+
const newEpochDirectory = join(this.config.dataDirectory, epochNumber.toString());
|
|
172
|
+
await mkdir(newEpochDirectory, {
|
|
173
|
+
recursive: true
|
|
174
|
+
});
|
|
175
|
+
this.logger.info(`Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKB}`);
|
|
176
|
+
const db = await openVersionedStoreAt(newEpochDirectory, SingleEpochDatabase.SCHEMA_VERSION, this.config.l1Contracts.rollupAddress, this.config.dataStoreMapSizeKB);
|
|
177
|
+
epochDb = new SingleEpochDatabase(db);
|
|
178
|
+
this.epochs.set(epochNumber, epochDb);
|
|
179
|
+
}
|
|
180
|
+
return epochDb;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ProofUri, ProvingJob, ProvingJobId, ProvingJobSettledResult } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
/**
|
|
3
|
+
* A database for storing proof requests and their results
|
|
4
|
+
*/
|
|
5
|
+
export interface ProvingBrokerDatabase {
|
|
6
|
+
/**
|
|
7
|
+
* Saves a proof request so it can be retrieved later
|
|
8
|
+
* @param job - The proof request to save
|
|
9
|
+
*/
|
|
10
|
+
addProvingJob(job: ProvingJob): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Deletes all proving jobs belonging to epochs older than the given epoch
|
|
13
|
+
* @param epochNumber - The epoch number beyond which jobs should be deleted
|
|
14
|
+
*/
|
|
15
|
+
deleteAllProvingJobsOlderThanEpoch(epochNumber: number): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Returns an iterator over all saved proving jobs
|
|
18
|
+
*/
|
|
19
|
+
allProvingJobs(): AsyncIterableIterator<[ProvingJob, ProvingJobSettledResult | undefined]>;
|
|
20
|
+
/**
|
|
21
|
+
* Saves the result of a proof request
|
|
22
|
+
* @param id - The ID of the proof request to save the result for
|
|
23
|
+
* @param ProvingRequestType - The type of proof that was requested
|
|
24
|
+
* @param value - The result of the proof request
|
|
25
|
+
*/
|
|
26
|
+
setProvingJobResult(id: ProvingJobId, value: ProofUri): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Saves an error that occurred while processing a proof request
|
|
29
|
+
* @param id - The ID of the proof request to save the error for
|
|
30
|
+
* @param ProvingRequestType - The type of proof that was requested
|
|
31
|
+
* @param err - The error that occurred while processing the proof request
|
|
32
|
+
*/
|
|
33
|
+
setProvingJobError(id: ProvingJobId, err: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Closes the database
|
|
36
|
+
*/
|
|
37
|
+
close(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=proving_broker_database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proving_broker_database.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAEnH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;;OAGG;IACH,kCAAkC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvE;;OAEG;IACH,cAAc,IAAI,qBAAqB,CAAC,CAAC,UAAU,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC,CAAC;IAE3F;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Timer } from '@aztec/foundation/timer';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
+
export type MonitorCallback = (proofType: ProvingRequestType) => number;
|
|
5
|
+
export declare class ProvingBrokerInstrumentation {
|
|
6
|
+
private queueSize;
|
|
7
|
+
private activeJobs;
|
|
8
|
+
private resolvedJobs;
|
|
9
|
+
private rejectedJobs;
|
|
10
|
+
private timedOutJobs;
|
|
11
|
+
private cachedJobs;
|
|
12
|
+
private totalJobs;
|
|
13
|
+
private jobWait;
|
|
14
|
+
private jobDuration;
|
|
15
|
+
private retriedJobs;
|
|
16
|
+
constructor(client: TelemetryClient, name?: string);
|
|
17
|
+
monitorQueueDepth(fn: MonitorCallback): void;
|
|
18
|
+
monitorActiveJobs(fn: MonitorCallback): void;
|
|
19
|
+
incResolvedJobs(proofType: ProvingRequestType): void;
|
|
20
|
+
incRejectedJobs(proofType: ProvingRequestType): void;
|
|
21
|
+
incRetriedJobs(proofType: ProvingRequestType): void;
|
|
22
|
+
incTimedOutJobs(proofType: ProvingRequestType): void;
|
|
23
|
+
incCachedJobs(proofType: ProvingRequestType): void;
|
|
24
|
+
incTotalJobs(proofType: ProvingRequestType): void;
|
|
25
|
+
recordJobWait(proofType: ProvingRequestType, msOrTimer: Timer | number): void;
|
|
26
|
+
recordJobDuration(proofType: ProvingRequestType, msOrTimer: Timer | number): void;
|
|
27
|
+
private observe;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=proving_broker_instrumentation.d.ts.map
|
|
@@ -0,0 +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,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,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;gBAEvB,MAAM,EAAE,eAAe,EAAE,IAAI,SAAkB;IAgD3D,iBAAiB,CAAC,EAAE,EAAE,eAAe;IAIrC,iBAAiB,CAAC,EAAE,EAAE,eAAe;IAIrC,eAAe,CAAC,SAAS,EAAE,kBAAkB;IAM7C,eAAe,CAAC,SAAS,EAAE,kBAAkB;IAM7C,cAAc,CAAC,SAAS,EAAE,kBAAkB;IAM5C,eAAe,CAAC,SAAS,EAAE,kBAAkB;IAM7C,aAAa,CAAC,SAAS,EAAE,kBAAkB;IAM3C,YAAY,CAAC,SAAS,EAAE,kBAAkB;IAM1C,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM;IAOtE,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM;IAO1E,OAAO,CAAC,OAAO;CAWhB"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
|
+
import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
|
|
3
|
+
export class ProvingBrokerInstrumentation {
|
|
4
|
+
queueSize;
|
|
5
|
+
activeJobs;
|
|
6
|
+
resolvedJobs;
|
|
7
|
+
rejectedJobs;
|
|
8
|
+
timedOutJobs;
|
|
9
|
+
cachedJobs;
|
|
10
|
+
totalJobs;
|
|
11
|
+
jobWait;
|
|
12
|
+
jobDuration;
|
|
13
|
+
retriedJobs;
|
|
14
|
+
constructor(client, name = 'ProvingBroker'){
|
|
15
|
+
const meter = client.getMeter(name);
|
|
16
|
+
this.queueSize = meter.createObservableGauge(Metrics.PROVING_QUEUE_SIZE, {
|
|
17
|
+
valueType: ValueType.INT
|
|
18
|
+
});
|
|
19
|
+
this.activeJobs = meter.createObservableGauge(Metrics.PROVING_QUEUE_ACTIVE_JOBS, {
|
|
20
|
+
valueType: ValueType.INT
|
|
21
|
+
});
|
|
22
|
+
this.resolvedJobs = meter.createUpDownCounter(Metrics.PROVING_QUEUE_RESOLVED_JOBS, {
|
|
23
|
+
valueType: ValueType.INT
|
|
24
|
+
});
|
|
25
|
+
this.rejectedJobs = meter.createUpDownCounter(Metrics.PROVING_QUEUE_REJECTED_JOBS, {
|
|
26
|
+
valueType: ValueType.INT
|
|
27
|
+
});
|
|
28
|
+
this.retriedJobs = meter.createUpDownCounter(Metrics.PROVING_QUEUE_RETRIED_JOBS, {
|
|
29
|
+
valueType: ValueType.INT
|
|
30
|
+
});
|
|
31
|
+
this.timedOutJobs = meter.createUpDownCounter(Metrics.PROVING_QUEUE_TIMED_OUT_JOBS, {
|
|
32
|
+
valueType: ValueType.INT
|
|
33
|
+
});
|
|
34
|
+
this.cachedJobs = meter.createUpDownCounter(Metrics.PROVING_QUEUE_CACHED_JOBS, {
|
|
35
|
+
valueType: ValueType.INT
|
|
36
|
+
});
|
|
37
|
+
this.totalJobs = meter.createUpDownCounter(Metrics.PROVING_QUEUE_TOTAL_JOBS, {
|
|
38
|
+
valueType: ValueType.INT
|
|
39
|
+
});
|
|
40
|
+
this.jobWait = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_WAIT, {
|
|
41
|
+
description: 'Records how long a job sits in the queue',
|
|
42
|
+
unit: 'ms',
|
|
43
|
+
valueType: ValueType.INT
|
|
44
|
+
});
|
|
45
|
+
this.jobDuration = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_DURATION, {
|
|
46
|
+
description: 'Records how long a job takes to complete',
|
|
47
|
+
unit: 'ms',
|
|
48
|
+
valueType: ValueType.INT
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
monitorQueueDepth(fn) {
|
|
52
|
+
this.queueSize.addCallback((obs)=>this.observe(obs, fn));
|
|
53
|
+
}
|
|
54
|
+
monitorActiveJobs(fn) {
|
|
55
|
+
this.activeJobs.addCallback((obs)=>this.observe(obs, fn));
|
|
56
|
+
}
|
|
57
|
+
incResolvedJobs(proofType) {
|
|
58
|
+
this.resolvedJobs.add(1, {
|
|
59
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
incRejectedJobs(proofType) {
|
|
63
|
+
this.rejectedJobs.add(1, {
|
|
64
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
incRetriedJobs(proofType) {
|
|
68
|
+
this.retriedJobs.add(1, {
|
|
69
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
incTimedOutJobs(proofType) {
|
|
73
|
+
this.timedOutJobs.add(1, {
|
|
74
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
incCachedJobs(proofType) {
|
|
78
|
+
this.cachedJobs.add(1, {
|
|
79
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
incTotalJobs(proofType) {
|
|
83
|
+
this.totalJobs.add(1, {
|
|
84
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
recordJobWait(proofType, msOrTimer) {
|
|
88
|
+
const duration = typeof msOrTimer === 'number' ? msOrTimer : Math.floor(msOrTimer.ms());
|
|
89
|
+
this.jobWait.record(duration, {
|
|
90
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
recordJobDuration(proofType, msOrTimer) {
|
|
94
|
+
const duration = typeof msOrTimer === 'number' ? msOrTimer : Math.floor(msOrTimer.ms());
|
|
95
|
+
this.jobDuration.record(duration, {
|
|
96
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
observe(obs, fn) {
|
|
100
|
+
for (const proofType of Object.values(ProvingRequestType)){
|
|
101
|
+
// a type predicate for TypeScript to recognize that we're only iterating over enum values
|
|
102
|
+
if (typeof proofType !== 'number') {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
obs.observe(fn(proofType), {
|
|
106
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[proofType]
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ProvingJobId, ProvingJobInputs, ProvingJobResultsMap, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
|
+
export declare enum ProvingJobControllerStatus {
|
|
4
|
+
IDLE = "idle",
|
|
5
|
+
PROVING = "proving",
|
|
6
|
+
DONE = "done",
|
|
7
|
+
ABORTED = "aborted"
|
|
8
|
+
}
|
|
9
|
+
interface ProvingJobCompletionCallback<T extends ProvingRequestType = ProvingRequestType> {
|
|
10
|
+
(jobId: ProvingJobId, type: T, error: Error | undefined, result: ProvingJobResultsMap[T] | undefined): void | Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare class ProvingJobController {
|
|
13
|
+
private jobId;
|
|
14
|
+
private inputs;
|
|
15
|
+
private epochNumber;
|
|
16
|
+
private startedAt;
|
|
17
|
+
private circuitProver;
|
|
18
|
+
private onComplete;
|
|
19
|
+
private log;
|
|
20
|
+
private status;
|
|
21
|
+
private promise?;
|
|
22
|
+
private abortController;
|
|
23
|
+
constructor(jobId: ProvingJobId, inputs: ProvingJobInputs, epochNumber: number, startedAt: number, circuitProver: ServerCircuitProver, onComplete: ProvingJobCompletionCallback, log?: import("@aztec/foundation/log").Logger);
|
|
24
|
+
start(): void;
|
|
25
|
+
getStatus(): ProvingJobControllerStatus;
|
|
26
|
+
abort(): void;
|
|
27
|
+
getJobId(): ProvingJobId;
|
|
28
|
+
getStartedAt(): number;
|
|
29
|
+
getProofTypeName(): string;
|
|
30
|
+
private generateProof;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=proving_job_controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proving_job_controller.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_job_controller.ts"],"names":[],"mappings":"AACA,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;IACb,OAAO,YAAY;CACpB;AAED,UAAU,4BAA4B,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB;IACtF,CACE,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,GAC1C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,qBAAa,oBAAoB;IAM7B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IAXb,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,eAAe,CAAyB;gBAGtC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,4BAA4B,EACxC,GAAG,yCAA6D;IAGnE,KAAK,IAAI,IAAI;IA+Db,SAAS,IAAI,0BAA0B;IAIvC,KAAK,IAAI,IAAI;IAgBb,QAAQ,IAAI,YAAY;IAIxB,YAAY,IAAI,MAAM;IAItB,gBAAgB,IAAI,MAAM;YAInB,aAAa;CA0D5B"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
|
+
export var ProvingJobControllerStatus = /*#__PURE__*/ function(ProvingJobControllerStatus) {
|
|
4
|
+
ProvingJobControllerStatus["IDLE"] = "idle";
|
|
5
|
+
ProvingJobControllerStatus["PROVING"] = "proving";
|
|
6
|
+
ProvingJobControllerStatus["DONE"] = "done";
|
|
7
|
+
ProvingJobControllerStatus["ABORTED"] = "aborted";
|
|
8
|
+
return ProvingJobControllerStatus;
|
|
9
|
+
}({});
|
|
10
|
+
export class ProvingJobController {
|
|
11
|
+
jobId;
|
|
12
|
+
inputs;
|
|
13
|
+
epochNumber;
|
|
14
|
+
startedAt;
|
|
15
|
+
circuitProver;
|
|
16
|
+
onComplete;
|
|
17
|
+
log;
|
|
18
|
+
status;
|
|
19
|
+
promise;
|
|
20
|
+
abortController;
|
|
21
|
+
constructor(jobId, inputs, epochNumber, startedAt, circuitProver, onComplete, log = createLogger('prover-client:proving-agent:job-controller')){
|
|
22
|
+
this.jobId = jobId;
|
|
23
|
+
this.inputs = inputs;
|
|
24
|
+
this.epochNumber = epochNumber;
|
|
25
|
+
this.startedAt = startedAt;
|
|
26
|
+
this.circuitProver = circuitProver;
|
|
27
|
+
this.onComplete = onComplete;
|
|
28
|
+
this.log = log;
|
|
29
|
+
this.status = "idle";
|
|
30
|
+
this.abortController = new AbortController();
|
|
31
|
+
}
|
|
32
|
+
start() {
|
|
33
|
+
if (this.status !== "idle") {
|
|
34
|
+
this.log.verbose(`Job controller for jobId=${this.jobId} not starting because it is not idle currentStatus=${this.status}`, {
|
|
35
|
+
currentStatus: this.status,
|
|
36
|
+
jobId: this.jobId
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.status = "proving";
|
|
41
|
+
this.log.verbose(`Job controller started jobId=${this.jobId}`, {
|
|
42
|
+
jobId: this.jobId
|
|
43
|
+
});
|
|
44
|
+
this.promise = this.generateProof().then((result)=>{
|
|
45
|
+
if (this.status === "aborted") {
|
|
46
|
+
this.log.warn(`Job controller for jobId=${this.jobId} completed successfully but job was aborted`, {
|
|
47
|
+
currentStatus: this.status,
|
|
48
|
+
jobId: this.jobId
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this.status = "done";
|
|
53
|
+
this.log.verbose(`Job controller for jobId=${this.jobId} completed successfully`, {
|
|
54
|
+
jobId: this.jobId
|
|
55
|
+
});
|
|
56
|
+
return this.onComplete(this.jobId, this.inputs.type, undefined, result);
|
|
57
|
+
}, (error)=>{
|
|
58
|
+
if (this.status === "aborted") {
|
|
59
|
+
this.log.warn(`Job controller for jobId=${this.jobId} finished with an error but job was aborted`, {
|
|
60
|
+
currentStatus: this.status,
|
|
61
|
+
jobId: this.jobId
|
|
62
|
+
});
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (error.name === 'AbortError') {
|
|
66
|
+
// Ignore abort errors
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
this.log.verbose(`Job controller for jobId=${this.jobId} finished with an error`, {
|
|
70
|
+
jobId: this.jobId,
|
|
71
|
+
err: error
|
|
72
|
+
});
|
|
73
|
+
this.status = "done";
|
|
74
|
+
return this.onComplete(this.jobId, this.inputs.type, error, undefined);
|
|
75
|
+
}).catch((err)=>{
|
|
76
|
+
this.log.error(`Job constroller failed to send result for jobId=${this.jobId}: ${err}`, err, {
|
|
77
|
+
jobId: this.jobId
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
getStatus() {
|
|
82
|
+
return this.status;
|
|
83
|
+
}
|
|
84
|
+
abort() {
|
|
85
|
+
if (this.status !== "proving") {
|
|
86
|
+
this.log.warn(`Tried to abort job controller for jobId=${this.jobId} but it is not running`, {
|
|
87
|
+
currentStatus: this.status,
|
|
88
|
+
jobId: this.jobId
|
|
89
|
+
});
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this.status = "aborted";
|
|
93
|
+
this.abortController.abort();
|
|
94
|
+
this.log.verbose(`Aborted job controller for jobId=${this.jobId}`, {
|
|
95
|
+
jobId: this.jobId
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
getJobId() {
|
|
99
|
+
return this.jobId;
|
|
100
|
+
}
|
|
101
|
+
getStartedAt() {
|
|
102
|
+
return this.startedAt;
|
|
103
|
+
}
|
|
104
|
+
getProofTypeName() {
|
|
105
|
+
return ProvingRequestType[this.inputs.type];
|
|
106
|
+
}
|
|
107
|
+
async generateProof() {
|
|
108
|
+
const { type, inputs } = this.inputs;
|
|
109
|
+
const signal = this.abortController.signal;
|
|
110
|
+
switch(type){
|
|
111
|
+
case ProvingRequestType.PUBLIC_VM:
|
|
112
|
+
{
|
|
113
|
+
return await this.circuitProver.getAvmProof(inputs, signal, this.epochNumber);
|
|
114
|
+
}
|
|
115
|
+
case ProvingRequestType.PRIVATE_BASE_ROLLUP:
|
|
116
|
+
{
|
|
117
|
+
return await this.circuitProver.getPrivateBaseRollupProof(inputs, signal, this.epochNumber);
|
|
118
|
+
}
|
|
119
|
+
case ProvingRequestType.PUBLIC_BASE_ROLLUP:
|
|
120
|
+
{
|
|
121
|
+
return await this.circuitProver.getPublicBaseRollupProof(inputs, signal, this.epochNumber);
|
|
122
|
+
}
|
|
123
|
+
case ProvingRequestType.MERGE_ROLLUP:
|
|
124
|
+
{
|
|
125
|
+
return await this.circuitProver.getMergeRollupProof(inputs, signal, this.epochNumber);
|
|
126
|
+
}
|
|
127
|
+
case ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP:
|
|
128
|
+
{
|
|
129
|
+
return await this.circuitProver.getEmptyBlockRootRollupProof(inputs, signal, this.epochNumber);
|
|
130
|
+
}
|
|
131
|
+
case ProvingRequestType.BLOCK_ROOT_ROLLUP:
|
|
132
|
+
{
|
|
133
|
+
return await this.circuitProver.getBlockRootRollupProof(inputs, signal, this.epochNumber);
|
|
134
|
+
}
|
|
135
|
+
case ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP:
|
|
136
|
+
{
|
|
137
|
+
return await this.circuitProver.getSingleTxBlockRootRollupProof(inputs, signal, this.epochNumber);
|
|
138
|
+
}
|
|
139
|
+
case ProvingRequestType.BLOCK_MERGE_ROLLUP:
|
|
140
|
+
{
|
|
141
|
+
return await this.circuitProver.getBlockMergeRollupProof(inputs, signal, this.epochNumber);
|
|
142
|
+
}
|
|
143
|
+
case ProvingRequestType.ROOT_ROLLUP:
|
|
144
|
+
{
|
|
145
|
+
return await this.circuitProver.getRootRollupProof(inputs, signal, this.epochNumber);
|
|
146
|
+
}
|
|
147
|
+
case ProvingRequestType.BASE_PARITY:
|
|
148
|
+
{
|
|
149
|
+
return await this.circuitProver.getBaseParityProof(inputs, signal, this.epochNumber);
|
|
150
|
+
}
|
|
151
|
+
case ProvingRequestType.ROOT_PARITY:
|
|
152
|
+
{
|
|
153
|
+
return await this.circuitProver.getRootParityProof(inputs, signal, this.epochNumber);
|
|
154
|
+
}
|
|
155
|
+
case ProvingRequestType.TUBE_PROOF:
|
|
156
|
+
{
|
|
157
|
+
return await this.circuitProver.getTubeProof(inputs, signal, this.epochNumber);
|
|
158
|
+
}
|
|
159
|
+
default:
|
|
160
|
+
{
|
|
161
|
+
const _exhaustive = type;
|
|
162
|
+
return Promise.reject(new Error(`Invalid proof request type: ${type}`));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
2
|
+
import { type ProvingJobBroker, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import { type ApiSchemaFor } from '@aztec/stdlib/schemas';
|
|
4
|
+
import { type ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
5
|
+
export declare const ProvingJobProducerSchema: ApiSchemaFor<ProvingJobProducer>;
|
|
6
|
+
export declare const ProvingJobConsumerSchema: ApiSchemaFor<ProvingJobConsumer>;
|
|
7
|
+
export declare const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker>;
|
|
8
|
+
export declare function createProvingBrokerServer(broker: ProvingJobBroker): SafeJsonRpcServer;
|
|
9
|
+
export declare function createProvingJobBrokerClient(url: string, versions: Partial<ComponentsVersions>, fetch?: (host: string, rpcMethod: string, body: any, useApiEndpoints: boolean, extraHeaders?: Record<string, string> | undefined, noRetry?: boolean | undefined) => Promise<{
|
|
10
|
+
response: any;
|
|
11
|
+
headers: {
|
|
12
|
+
get: (header: string) => string | null | undefined;
|
|
13
|
+
};
|
|
14
|
+
}>): ProvingJobBroker;
|
|
15
|
+
export declare function createProvingJobProducerClient(url: string, versions: Partial<ComponentsVersions>, fetch?: (host: string, rpcMethod: string, body: any, useApiEndpoints: boolean, extraHeaders?: Record<string, string> | undefined, noRetry?: boolean | undefined) => Promise<{
|
|
16
|
+
response: any;
|
|
17
|
+
headers: {
|
|
18
|
+
get: (header: string) => string | null | undefined;
|
|
19
|
+
};
|
|
20
|
+
}>): ProvingJobProducer;
|
|
21
|
+
export declare function createProvingJobConsumerClient(url: string, versions: Partial<ComponentsVersions>, fetch?: (host: string, rpcMethod: string, body: any, useApiEndpoints: boolean, extraHeaders?: Record<string, string> | undefined, noRetry?: boolean | undefined) => Promise<{
|
|
22
|
+
response: any;
|
|
23
|
+
headers: {
|
|
24
|
+
get: (header: string) => string | null | undefined;
|
|
25
|
+
};
|
|
26
|
+
}>): ProvingJobConsumer;
|
|
27
|
+
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAIL,KAAK,gBAAgB,EACrB,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;AAcjG,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAKrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAcrE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,gBAAgB,CAGjE,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,CAErF;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,gBAAgB,CAMlB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,kBAAkB,CAMpB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,kBAAkB,CAMpB"}
|