@aztec/prover-client 0.65.2 → 0.67.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 +75 -0
- package/dest/index.d.ts +1 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -3
- package/dest/mocks/fixtures.d.ts +4 -5
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +4 -8
- package/dest/mocks/test_context.d.ts +30 -12
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +61 -24
- package/dest/orchestrator/block-building-helpers.d.ts +5 -5
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +10 -11
- 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 +85 -74
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +2 -5
- 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.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +5 -4
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +3 -3
- 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/{tx-prover/tx-prover.d.ts → prover-client/prover-client.d.ts} +8 -11
- 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 +12 -12
- package/dest/proving_broker/caching_broker_facade.d.ts.map +1 -1
- package/dest/proving_broker/caching_broker_facade.js +32 -29
- package/dest/proving_broker/factory.d.ts +2 -1
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +4 -4
- package/dest/proving_broker/proving_agent.d.ts +5 -0
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +15 -4
- 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 +29 -5
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +142 -41
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +6 -2
- 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 +85 -0
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +3 -2
- package/dest/test/mock_prover.d.ts +3 -2
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +9 -5
- package/package.json +18 -13
- package/src/block_builder/index.ts +6 -0
- package/src/block_builder/light.ts +120 -0
- package/src/index.ts +1 -2
- package/src/mocks/fixtures.ts +6 -18
- package/src/mocks/test_context.ts +85 -29
- package/src/orchestrator/block-building-helpers.ts +13 -14
- package/src/orchestrator/epoch-proving-state.ts +10 -13
- package/src/orchestrator/orchestrator.ts +101 -81
- package/src/orchestrator/orchestrator_metrics.ts +1 -11
- package/src/orchestrator/tx-proving-state.ts +1 -56
- package/src/prover-agent/memory-proving-queue.ts +4 -3
- package/src/prover-agent/prover-agent.ts +2 -2
- package/src/{tx-prover → prover-client}/factory.ts +4 -3
- package/src/prover-client/index.ts +2 -0
- package/src/{tx-prover/tx-prover.ts → prover-client/prover-client.ts} +25 -15
- package/src/proving_broker/caching_broker_facade.ts +31 -15
- package/src/proving_broker/factory.ts +7 -3
- package/src/proving_broker/proving_agent.ts +18 -3
- package/src/proving_broker/proving_agent_instrumentation.ts +21 -0
- package/src/proving_broker/proving_broker.ts +182 -50
- package/src/proving_broker/proving_broker_database/persisted.ts +11 -2
- package/src/proving_broker/proving_broker_instrumentation.ts +123 -0
- package/src/proving_broker/rpc.ts +2 -1
- package/src/test/mock_prover.ts +8 -4
- package/dest/tx-prover/factory.d.ts +0 -6
- 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.map +0 -1
- package/dest/tx-prover/tx-prover.js +0 -110
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ProvingRequestType, } from '@aztec/circuit-types';
|
|
2
2
|
import { sha256 } from '@aztec/foundation/crypto';
|
|
3
|
-
import {
|
|
3
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
5
5
|
import { InlineProofStore } from './proof_store.js';
|
|
6
6
|
import { InMemoryProverCache } from './prover_cache/memory.js';
|
|
@@ -10,7 +10,7 @@ const MAX_WAIT_MS = 1200000;
|
|
|
10
10
|
* A facade around a job broker that generates stable job ids and caches results
|
|
11
11
|
*/
|
|
12
12
|
export class CachingBrokerFacade {
|
|
13
|
-
constructor(broker, cache = new InMemoryProverCache(), proofStore = new InlineProofStore(), waitTimeoutMs = MAX_WAIT_MS, pollIntervalMs = 1000, log =
|
|
13
|
+
constructor(broker, cache = new InMemoryProverCache(), proofStore = new InlineProofStore(), waitTimeoutMs = MAX_WAIT_MS, pollIntervalMs = 1000, log = createLogger('prover-client:caching-prover-broker')) {
|
|
14
14
|
this.broker = broker;
|
|
15
15
|
this.cache = cache;
|
|
16
16
|
this.proofStore = proofStore;
|
|
@@ -18,7 +18,7 @@ export class CachingBrokerFacade {
|
|
|
18
18
|
this.pollIntervalMs = pollIntervalMs;
|
|
19
19
|
this.log = log;
|
|
20
20
|
}
|
|
21
|
-
async enqueueAndWaitForJob(id, type, inputs, signal) {
|
|
21
|
+
async enqueueAndWaitForJob(id, type, inputs, epochNumber = 0, signal) {
|
|
22
22
|
// first try the cache
|
|
23
23
|
let jobEnqueued = false;
|
|
24
24
|
try {
|
|
@@ -56,6 +56,7 @@ export class CachingBrokerFacade {
|
|
|
56
56
|
id,
|
|
57
57
|
type,
|
|
58
58
|
inputsUri,
|
|
59
|
+
epochNumber,
|
|
59
60
|
});
|
|
60
61
|
await this.cache.setProvingJobStatus(id, { status: 'in-queue' });
|
|
61
62
|
}
|
|
@@ -68,7 +69,7 @@ export class CachingBrokerFacade {
|
|
|
68
69
|
// notify broker of cancelled job
|
|
69
70
|
const abortFn = async () => {
|
|
70
71
|
signal?.removeEventListener('abort', abortFn);
|
|
71
|
-
await this.broker.
|
|
72
|
+
await this.broker.cancelProvingJob(id);
|
|
72
73
|
};
|
|
73
74
|
signal?.addEventListener('abort', abortFn);
|
|
74
75
|
try {
|
|
@@ -104,47 +105,49 @@ export class CachingBrokerFacade {
|
|
|
104
105
|
}
|
|
105
106
|
finally {
|
|
106
107
|
signal?.removeEventListener('abort', abortFn);
|
|
108
|
+
// we've saved the result in our cache. We can tell the broker to clear its state
|
|
109
|
+
await this.broker.cleanUpProvingJobState(id);
|
|
107
110
|
}
|
|
108
111
|
}
|
|
109
|
-
getAvmProof(inputs, signal,
|
|
110
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_VM, inputs), ProvingRequestType.PUBLIC_VM, inputs, signal);
|
|
112
|
+
getAvmProof(inputs, signal, epochNumber) {
|
|
113
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_VM, inputs), ProvingRequestType.PUBLIC_VM, inputs, epochNumber, signal);
|
|
111
114
|
}
|
|
112
|
-
getBaseParityProof(inputs, signal,
|
|
113
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BASE_PARITY, inputs), ProvingRequestType.BASE_PARITY, inputs, signal);
|
|
115
|
+
getBaseParityProof(inputs, signal, epochNumber) {
|
|
116
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BASE_PARITY, inputs), ProvingRequestType.BASE_PARITY, inputs, epochNumber, signal);
|
|
114
117
|
}
|
|
115
|
-
getBlockMergeRollupProof(input, signal,
|
|
116
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input), ProvingRequestType.BLOCK_MERGE_ROLLUP, input, signal);
|
|
118
|
+
getBlockMergeRollupProof(input, signal, epochNumber) {
|
|
119
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input), ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber, signal);
|
|
117
120
|
}
|
|
118
|
-
getBlockRootRollupProof(input, signal,
|
|
119
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input), ProvingRequestType.BLOCK_ROOT_ROLLUP, input, signal);
|
|
121
|
+
getBlockRootRollupProof(input, signal, epochNumber) {
|
|
122
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input), ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber, signal);
|
|
120
123
|
}
|
|
121
|
-
getEmptyBlockRootRollupProof(input, signal,
|
|
122
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input), ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, signal);
|
|
124
|
+
getEmptyBlockRootRollupProof(input, signal, epochNumber) {
|
|
125
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input), ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, epochNumber, signal);
|
|
123
126
|
}
|
|
124
|
-
getEmptyPrivateKernelProof(inputs, signal,
|
|
125
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs), ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs, signal);
|
|
127
|
+
getEmptyPrivateKernelProof(inputs, signal, epochNumber) {
|
|
128
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs), ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs, epochNumber, signal);
|
|
126
129
|
}
|
|
127
|
-
getMergeRollupProof(input, signal,
|
|
128
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.MERGE_ROLLUP, input), ProvingRequestType.MERGE_ROLLUP, input, signal);
|
|
130
|
+
getMergeRollupProof(input, signal, epochNumber) {
|
|
131
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.MERGE_ROLLUP, input), ProvingRequestType.MERGE_ROLLUP, input, epochNumber, signal);
|
|
129
132
|
}
|
|
130
|
-
getPrivateBaseRollupProof(baseRollupInput, signal,
|
|
131
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput), ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, signal);
|
|
133
|
+
getPrivateBaseRollupProof(baseRollupInput, signal, epochNumber) {
|
|
134
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput), ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, epochNumber, signal);
|
|
132
135
|
}
|
|
133
|
-
getPublicBaseRollupProof(inputs, signal,
|
|
134
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs), ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, signal);
|
|
136
|
+
getPublicBaseRollupProof(inputs, signal, epochNumber) {
|
|
137
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs), ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, epochNumber, signal);
|
|
135
138
|
}
|
|
136
|
-
getRootParityProof(inputs, signal,
|
|
137
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_PARITY, inputs), ProvingRequestType.ROOT_PARITY, inputs, signal);
|
|
139
|
+
getRootParityProof(inputs, signal, epochNumber) {
|
|
140
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_PARITY, inputs), ProvingRequestType.ROOT_PARITY, inputs, epochNumber, signal);
|
|
138
141
|
}
|
|
139
|
-
getRootRollupProof(input, signal,
|
|
140
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_ROLLUP, input), ProvingRequestType.ROOT_ROLLUP, input, signal);
|
|
142
|
+
getRootRollupProof(input, signal, epochNumber) {
|
|
143
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.ROOT_ROLLUP, input), ProvingRequestType.ROOT_ROLLUP, input, epochNumber, signal);
|
|
141
144
|
}
|
|
142
|
-
getTubeProof(tubeInput, signal,
|
|
143
|
-
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput), ProvingRequestType.TUBE_PROOF, tubeInput, signal);
|
|
145
|
+
getTubeProof(tubeInput, signal, epochNumber) {
|
|
146
|
+
return this.enqueueAndWaitForJob(this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput), ProvingRequestType.TUBE_PROOF, tubeInput, epochNumber, signal);
|
|
144
147
|
}
|
|
145
148
|
generateId(type, inputs) {
|
|
146
149
|
const inputsHash = sha256(inputs.toBuffer());
|
|
147
150
|
return `${ProvingRequestType[type]}:${inputsHash.toString('hex')}`;
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZ19icm9rZXJfZmFjYWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL2NhY2hpbmdfYnJva2VyX2ZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBT0wsa0JBQWtCLEdBR25CLE1BQU0sc0JBQXNCLENBQUM7QUF3QjlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJELE9BQU8sRUFBRSxnQkFBZ0IsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCw2SUFBNkk7QUFDN0ksTUFBTSxXQUFXLEdBQUcsT0FBUyxDQUFDO0FBRTlCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUNVLE1BQTBCLEVBQzFCLFFBQXFCLElBQUksbUJBQW1CLEVBQUUsRUFDOUMsYUFBeUIsSUFBSSxnQkFBZ0IsRUFBRSxFQUMvQyxnQkFBZ0IsV0FBVyxFQUMzQixpQkFBaUIsSUFBSSxFQUNyQixNQUFNLFlBQVksQ0FBQyxxQ0FBcUMsQ0FBQztRQUx6RCxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixVQUFLLEdBQUwsS0FBSyxDQUF5QztRQUM5QyxlQUFVLEdBQVYsVUFBVSxDQUFxQztRQUMvQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUMzQixtQkFBYyxHQUFkLGNBQWMsQ0FBTztRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFzRDtJQUNoRSxDQUFDO0lBRUksS0FBSyxDQUFDLG9CQUFvQixDQUNoQyxFQUFnQixFQUNoQixJQUFPLEVBQ1AsTUFBOEIsRUFDOUIsV0FBVyxHQUFHLENBQUMsRUFDZixNQUFvQjtR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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ProverBrokerConfig } from '@aztec/circuit-types';
|
|
2
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
2
3
|
import { ProvingBroker } from './proving_broker.js';
|
|
3
|
-
export declare function createAndStartProvingBroker(config: ProverBrokerConfig): Promise<ProvingBroker>;
|
|
4
|
+
export declare function createAndStartProvingBroker(config: ProverBrokerConfig, client: TelemetryClient): Promise<ProvingBroker>;
|
|
4
5
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAE/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,aAAa,CAAC,CAaxB"}
|
|
@@ -2,11 +2,11 @@ import { AztecLmdbStore } from '@aztec/kv-store/lmdb';
|
|
|
2
2
|
import { ProvingBroker } from './proving_broker.js';
|
|
3
3
|
import { InMemoryBrokerDatabase } from './proving_broker_database/memory.js';
|
|
4
4
|
import { KVBrokerDatabase } from './proving_broker_database/persisted.js';
|
|
5
|
-
export async function createAndStartProvingBroker(config) {
|
|
5
|
+
export async function createAndStartProvingBroker(config, client) {
|
|
6
6
|
const database = config.proverBrokerDataDirectory
|
|
7
|
-
? new KVBrokerDatabase(AztecLmdbStore.open(config.proverBrokerDataDirectory))
|
|
7
|
+
? new KVBrokerDatabase(AztecLmdbStore.open(config.proverBrokerDataDirectory), client)
|
|
8
8
|
: new InMemoryBrokerDatabase();
|
|
9
|
-
const broker = new ProvingBroker(database, {
|
|
9
|
+
const broker = new ProvingBroker(database, client, {
|
|
10
10
|
jobTimeoutMs: config.proverBrokerJobTimeoutMs,
|
|
11
11
|
maxRetries: config.proverBrokerJobMaxRetries,
|
|
12
12
|
timeoutIntervalMs: config.proverBrokerPollIntervalMs,
|
|
@@ -14,4 +14,4 @@ export async function createAndStartProvingBroker(config) {
|
|
|
14
14
|
await broker.start();
|
|
15
15
|
return broker;
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFMUUsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsTUFBMEIsRUFDMUIsTUFBdUI7SUFFdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLHlCQUF5QjtRQUMvQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNyRixDQUFDLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBRWpDLE1BQU0sTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7UUFDakQsWUFBWSxFQUFFLE1BQU0sQ0FBQyx3QkFBd0I7UUFDN0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUI7UUFDNUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLDBCQUEwQjtLQUNyRCxDQUFDLENBQUM7SUFFSCxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIn0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ProvingJobConsumer, type ProvingJobId, type ProvingJobResultsMap, ProvingRequestType, type ServerCircuitProver } from '@aztec/circuit-types';
|
|
2
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
2
3
|
import { type ProofStore } from './proof_store.js';
|
|
3
4
|
/**
|
|
4
5
|
* A helper class that encapsulates a circuit prover and connects it to a job source.
|
|
@@ -17,6 +18,8 @@ export declare class ProvingAgent {
|
|
|
17
18
|
private log;
|
|
18
19
|
private currentJobController?;
|
|
19
20
|
private runningPromise;
|
|
21
|
+
private instrumentation;
|
|
22
|
+
private idleTimer;
|
|
20
23
|
constructor(
|
|
21
24
|
/** The source of proving jobs */
|
|
22
25
|
broker: ProvingJobConsumer,
|
|
@@ -24,6 +27,8 @@ export declare class ProvingAgent {
|
|
|
24
27
|
proofStore: ProofStore,
|
|
25
28
|
/** The prover implementation to defer jobs to */
|
|
26
29
|
circuitProver: ServerCircuitProver,
|
|
30
|
+
/** A telemetry client through which to emit metrics */
|
|
31
|
+
client: TelemetryClient,
|
|
27
32
|
/** Optional list of allowed proof types to build */
|
|
28
33
|
proofAllowList?: Array<ProvingRequestType>,
|
|
29
34
|
/** How long to wait between jobs */
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD;;GAEG;AACH,qBAAa,YAAY;IAOrB,iCAAiC;IACjC,OAAO,CAAC,MAAM;IACd,gDAAgD;IAChD,OAAO,CAAC,UAAU;IAClB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IAGrB,oDAAoD;IACpD,OAAO,CAAC,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,GAAG;IAlBb,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,SAAS,CAAoB;;IAGnC,iCAAiC;IACzB,MAAM,EAAE,kBAAkB;IAClC,gDAAgD;IACxC,UAAU,EAAE,UAAU;IAC9B,iDAAiD;IACzC,aAAa,EAAE,mBAAmB;IAC1C,uDAAuD;IACvD,MAAM,EAAE,eAAe;IACvB,oDAAoD;IAC5C,cAAc,GAAE,KAAK,CAAC,kBAAkB,CAAM;IACtD,oCAAoC;IAC5B,cAAc,SAAO,EACrB,GAAG,yCAA8C;IAMpD,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAI1D,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAKP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,CAAC,QAAQ,CAqEd;IAEF,eAAe,wCACN,YAAY,QACb,CAAC,OACF,KAAK,GAAG,SAAS,UACd,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,mBAc3C;CACH"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ProvingError, ProvingRequestType, } from '@aztec/circuit-types';
|
|
2
|
-
import {
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
4
|
+
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
+
import { ProvingAgentInstrumentation } from './proving_agent_instrumentation.js';
|
|
4
6
|
import { ProvingJobController, ProvingJobControllerStatus } from './proving_job_controller.js';
|
|
5
7
|
/**
|
|
6
8
|
* A helper class that encapsulates a circuit prover and connects it to a job source.
|
|
@@ -13,10 +15,12 @@ export class ProvingAgent {
|
|
|
13
15
|
proofStore,
|
|
14
16
|
/** The prover implementation to defer jobs to */
|
|
15
17
|
circuitProver,
|
|
18
|
+
/** A telemetry client through which to emit metrics */
|
|
19
|
+
client,
|
|
16
20
|
/** Optional list of allowed proof types to build */
|
|
17
21
|
proofAllowList = [],
|
|
18
22
|
/** How long to wait between jobs */
|
|
19
|
-
pollIntervalMs = 1000, log =
|
|
23
|
+
pollIntervalMs = 1000, log = createLogger('prover-client:proving-agent')) {
|
|
20
24
|
this.broker = broker;
|
|
21
25
|
this.proofStore = proofStore;
|
|
22
26
|
this.circuitProver = circuitProver;
|
|
@@ -62,6 +66,10 @@ export class ProvingAgent {
|
|
|
62
66
|
else {
|
|
63
67
|
this.log.info(`Starting job id=${this.currentJobController.getJobId()} type=${this.currentJobController.getProofTypeName()} inputsUri=${truncateString(job.inputsUri)}`);
|
|
64
68
|
}
|
|
69
|
+
if (this.idleTimer) {
|
|
70
|
+
this.instrumentation.recordIdleTime(this.idleTimer);
|
|
71
|
+
}
|
|
72
|
+
this.idleTimer = undefined;
|
|
65
73
|
this.currentJobController.start();
|
|
66
74
|
}
|
|
67
75
|
catch (err) {
|
|
@@ -69,9 +77,10 @@ export class ProvingAgent {
|
|
|
69
77
|
}
|
|
70
78
|
};
|
|
71
79
|
this.handleJobResult = async (jobId, type, err, result) => {
|
|
80
|
+
this.idleTimer = new Timer();
|
|
72
81
|
if (err) {
|
|
73
82
|
const retry = err.name === ProvingError.NAME ? err.retry : false;
|
|
74
|
-
this.log.
|
|
83
|
+
this.log.error(`Job id=${jobId} type=${ProvingRequestType[type]} failed err=${err.message} retry=${retry}`, err);
|
|
75
84
|
return this.broker.reportProvingJobError(jobId, err.message, retry);
|
|
76
85
|
}
|
|
77
86
|
else if (result) {
|
|
@@ -80,6 +89,7 @@ export class ProvingAgent {
|
|
|
80
89
|
return this.broker.reportProvingJobSuccess(jobId, outputUri);
|
|
81
90
|
}
|
|
82
91
|
};
|
|
92
|
+
this.instrumentation = new ProvingAgentInstrumentation(client);
|
|
83
93
|
this.runningPromise = new RunningPromise(this.safeWork, this.pollIntervalMs);
|
|
84
94
|
}
|
|
85
95
|
setCircuitProver(circuitProver) {
|
|
@@ -89,6 +99,7 @@ export class ProvingAgent {
|
|
|
89
99
|
return this.runningPromise?.isRunning() ?? false;
|
|
90
100
|
}
|
|
91
101
|
start() {
|
|
102
|
+
this.idleTimer = new Timer();
|
|
92
103
|
this.runningPromise.start();
|
|
93
104
|
}
|
|
94
105
|
async stop() {
|
|
@@ -99,4 +110,4 @@ export class ProvingAgent {
|
|
|
99
110
|
function truncateString(str, length = 64) {
|
|
100
111
|
return str.length > length ? str.slice(0, length) + '...' : str;
|
|
101
112
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19hZ2VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm92aW5nX2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxZQUFZLEVBTVosa0JBQWtCLEdBRW5CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJaEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFL0Y7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQU12QjtJQUNFLGlDQUFpQztJQUN6QixNQUEwQjtJQUNsQyxnREFBZ0Q7SUFDeEMsVUFBc0I7SUFDOUIsaURBQWlEO0lBQ3pDLGFBQWtDO0lBQzFDLHVEQUF1RDtJQUN2RCxNQUF1QjtJQUN2QixvREFBb0Q7SUFDNUMsaUJBQTRDLEVBQUU7SUFDdEQsb0NBQW9DO0lBQzVCLGlCQUFpQixJQUFJLEVBQ3JCLE1BQU0sWUFBWSxDQUFDLDZCQUE2QixDQUFDO1FBWGpELFdBQU0sR0FBTixNQUFNLENBQW9CO1FBRTFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFFdEIsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBSWxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQztRQUU5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBTztRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUE4QztRQXdCbkQsYUFBUSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQzVCLElBQUksQ0FBQztnQkFDSCx3QkFBd0I7Z0JBQ3hCLG1FQUFtRTtnQkFDbkUsb0JB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
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Timer } from '@aztec/foundation/timer';
|
|
2
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
+
export declare class ProvingAgentInstrumentation {
|
|
4
|
+
private idleTime;
|
|
5
|
+
constructor(client: TelemetryClient, name?: string);
|
|
6
|
+
recordIdleTime(msOrTimer: Timer | number): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=proving_agent_instrumentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proving_agent_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAA2B,KAAK,eAAe,EAAa,MAAM,yBAAyB,CAAC;AAEnG,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAY;gBAEhB,MAAM,EAAE,eAAe,EAAE,IAAI,SAAiB;IAU1D,cAAc,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM;CAIzC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Metrics, ValueType } from '@aztec/telemetry-client';
|
|
2
|
+
export class ProvingAgentInstrumentation {
|
|
3
|
+
constructor(client, name = 'ProvingAgent') {
|
|
4
|
+
const meter = client.getMeter(name);
|
|
5
|
+
this.idleTime = meter.createHistogram(Metrics.PROVING_AGENT_IDLE, {
|
|
6
|
+
description: 'Records how long an agent was idle',
|
|
7
|
+
unit: 'ms',
|
|
8
|
+
valueType: ValueType.INT,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
recordIdleTime(msOrTimer) {
|
|
12
|
+
const duration = typeof msOrTimer === 'number' ? msOrTimer : Math.floor(msOrTimer.ms());
|
|
13
|
+
this.idleTime.record(duration);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19hZ2VudF9pbnN0cnVtZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19hZ2VudF9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFrQixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5HLE1BQU0sT0FBTywyQkFBMkI7SUFHdEMsWUFBWSxNQUF1QixFQUFFLElBQUksR0FBRyxjQUFjO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtZQUNoRSxXQUFXLEVBQUUsb0NBQW9DO1lBQ2pELElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsU0FBeUI7UUFDdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIn0=
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { type ProofUri, type ProvingJob, type ProvingJobConsumer, type ProvingJobFilter, type ProvingJobId, type ProvingJobProducer, type ProvingJobSettledResult, type ProvingJobStatus } from '@aztec/circuit-types';
|
|
2
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
2
3
|
import { type ProvingBrokerDatabase } from './proving_broker_database.js';
|
|
3
4
|
type ProofRequestBrokerConfig = {
|
|
4
5
|
timeoutIntervalMs?: number;
|
|
5
6
|
jobTimeoutMs?: number;
|
|
6
7
|
maxRetries?: number;
|
|
8
|
+
maxEpochsToKeepResultsFor?: number;
|
|
9
|
+
maxParallelCleanUps?: number;
|
|
7
10
|
};
|
|
8
11
|
/**
|
|
9
12
|
* A broker that manages proof requests and distributes them to workers based on their priority.
|
|
@@ -15,19 +18,37 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
15
18
|
private queues;
|
|
16
19
|
private jobsCache;
|
|
17
20
|
private resultsCache;
|
|
21
|
+
private enqueuedAt;
|
|
18
22
|
private inProgress;
|
|
19
23
|
private retries;
|
|
20
24
|
private promises;
|
|
21
|
-
private
|
|
22
|
-
private
|
|
25
|
+
private cleanupPromise;
|
|
26
|
+
private msTimeSource;
|
|
23
27
|
private jobTimeoutMs;
|
|
24
28
|
private maxRetries;
|
|
25
|
-
|
|
29
|
+
private instrumentation;
|
|
30
|
+
private maxParallelCleanUps;
|
|
31
|
+
/**
|
|
32
|
+
* The broker keeps track of the highest epoch its seen.
|
|
33
|
+
* This information is used for garbage collection: once it reaches the next epoch, it can start pruning the database of old state.
|
|
34
|
+
* This clean up pass is only done against _settled_ jobs. This pass will not cancel jobs that are in-progress or in-queue.
|
|
35
|
+
* It is a client responsibility to cancel jobs if they are no longer necessary.
|
|
36
|
+
* Example:
|
|
37
|
+
* proving epoch 11 - the broker will wipe all setlled jobs for epochs 9 and lower
|
|
38
|
+
* finished proving epoch 11 and got first job for epoch 12 -> the broker will wipe all setlled jobs for epochs 10 and lower
|
|
39
|
+
* reorged back to end of epoch 10 -> epoch 11 is skipped and epoch 12 starts -> the broker will wipe all setlled jobs for epochs 10 and lower
|
|
40
|
+
*/
|
|
41
|
+
private epochHeight;
|
|
42
|
+
private maxEpochsToKeepResultsFor;
|
|
43
|
+
constructor(database: ProvingBrokerDatabase, client: TelemetryClient, { jobTimeoutMs, timeoutIntervalMs, maxRetries, maxEpochsToKeepResultsFor, maxParallelCleanUps, }?: ProofRequestBrokerConfig, logger?: import("@aztec/foundation/log").Logger);
|
|
44
|
+
private measureQueueDepth;
|
|
45
|
+
private countActiveJobs;
|
|
26
46
|
start(): Promise<void>;
|
|
27
47
|
stop(): Promise<void>;
|
|
28
48
|
enqueueProvingJob(job: ProvingJob): Promise<void>;
|
|
29
49
|
waitForJobToSettle(id: ProvingJobId): Promise<ProvingJobSettledResult>;
|
|
30
|
-
|
|
50
|
+
cancelProvingJob(id: ProvingJobId): Promise<void>;
|
|
51
|
+
cleanUpProvingJobState(id: ProvingJobId): Promise<void>;
|
|
31
52
|
getProvingJobStatus(id: ProvingJobId): Promise<ProvingJobStatus>;
|
|
32
53
|
getProvingJob(filter?: ProvingJobFilter): Promise<{
|
|
33
54
|
job: ProvingJob;
|
|
@@ -39,8 +60,11 @@ export declare class ProvingBroker implements ProvingJobProducer, ProvingJobCons
|
|
|
39
60
|
time: number;
|
|
40
61
|
} | undefined>;
|
|
41
62
|
reportProvingJobSuccess(id: ProvingJobId, value: ProofUri): Promise<void>;
|
|
42
|
-
private
|
|
63
|
+
private cleanupPass;
|
|
64
|
+
private cleanupStaleJobs;
|
|
65
|
+
private reEnqueueExpiredJobs;
|
|
43
66
|
private enqueueJobInternal;
|
|
67
|
+
private isJobStale;
|
|
44
68
|
}
|
|
45
69
|
export {};
|
|
46
70
|
//# sourceMappingURL=proving_broker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EAEtB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"proving_broker.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker.ts"],"names":[],"mappings":"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"}
|