@aztec/prover-client 0.76.4-devnet-test-rc3 → 0.77.0-testnet-ignition.17
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/bin/get-proof-inputs.js +20 -17
- package/dest/block_builder/index.d.ts +1 -1
- package/dest/block_builder/index.d.ts.map +1 -1
- package/dest/block_builder/index.js +0 -1
- package/dest/block_builder/light.d.ts +4 -2
- package/dest/block_builder/light.d.ts.map +1 -1
- package/dest/block_builder/light.js +28 -15
- package/dest/config.d.ts +2 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +10 -12
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +0 -1
- package/dest/mocks/fixtures.d.ts +4 -3
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +37 -30
- package/dest/mocks/test_context.d.ts +16 -12
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +85 -62
- package/dest/orchestrator/block-building-helpers.d.ts +12 -7
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +98 -87
- package/dest/orchestrator/block-proving-state.d.ts +13 -8
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +101 -73
- package/dest/orchestrator/epoch-proving-state.d.ts +10 -6
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +57 -41
- package/dest/orchestrator/index.js +0 -1
- package/dest/orchestrator/orchestrator.d.ts +7 -5
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +656 -654
- package/dest/orchestrator/orchestrator_metrics.js +4 -3
- package/dest/orchestrator/tx-proving-state.d.ts +7 -4
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +54 -52
- package/dest/prover-client/factory.d.ts +2 -2
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/factory.js +0 -1
- package/dest/prover-client/index.js +0 -1
- package/dest/prover-client/prover-client.d.ts +3 -3
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +31 -26
- package/dest/prover-client/server-epoch-prover.d.ts +8 -5
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +4 -4
- package/dest/proving_broker/broker_prover_facade.d.ts +5 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +80 -67
- package/dest/proving_broker/config.d.ts +15 -2
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +49 -44
- package/dest/proving_broker/factory.d.ts +2 -2
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +1 -6
- package/dest/proving_broker/fixtures.d.ts +1 -1
- package/dest/proving_broker/fixtures.d.ts.map +1 -1
- package/dest/proving_broker/fixtures.js +2 -2
- package/dest/proving_broker/index.js +0 -1
- package/dest/proving_broker/proof_store/factory.d.ts +1 -1
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/factory.js +9 -12
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +3 -2
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +12 -7
- package/dest/proving_broker/proof_store/index.js +0 -1
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +3 -2
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/inline_proof_store.js +11 -7
- package/dest/proving_broker/proof_store/proof_store.d.ts +2 -1
- package/dest/proving_broker/proof_store/proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/proof_store.js +3 -2
- package/dest/proving_broker/proving_agent.d.ts +3 -2
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +121 -124
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent_instrumentation.js +6 -6
- package/dest/proving_broker/proving_broker.d.ts +4 -11
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +490 -446
- package/dest/proving_broker/proving_broker_database/memory.d.ts +2 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +19 -13
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -3
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +62 -29
- package/dest/proving_broker/proving_broker_database.d.ts +1 -1
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database.js +3 -2
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +6 -2
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +47 -22
- package/dest/proving_broker/proving_job_controller.d.ts +2 -1
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +81 -62
- package/dest/proving_broker/rpc.d.ts +4 -3
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +29 -25
- package/dest/test/mock_prover.d.ts +7 -5
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +13 -9
- package/package.json +16 -15
- package/src/bin/get-proof-inputs.ts +2 -1
- package/src/block_builder/index.ts +1 -1
- package/src/block_builder/light.ts +7 -10
- package/src/config.ts +2 -2
- package/src/index.ts +1 -1
- package/src/mocks/fixtures.ts +13 -15
- package/src/mocks/test_context.ts +60 -102
- package/src/orchestrator/block-building-helpers.ts +50 -45
- package/src/orchestrator/block-proving-state.ts +18 -22
- package/src/orchestrator/epoch-proving-state.ts +11 -16
- package/src/orchestrator/orchestrator.ts +26 -33
- package/src/orchestrator/tx-proving-state.ts +10 -13
- package/src/prover-client/factory.ts +2 -2
- package/src/prover-client/prover-client.ts +12 -12
- package/src/prover-client/server-epoch-prover.ts +8 -5
- package/src/proving_broker/broker_prover_facade.ts +29 -31
- package/src/proving_broker/config.ts +31 -3
- package/src/proving_broker/factory.ts +3 -11
- package/src/proving_broker/fixtures.ts +2 -1
- package/src/proving_broker/proof_store/factory.ts +1 -1
- package/src/proving_broker/proof_store/gcs_proof_store.ts +3 -3
- package/src/proving_broker/proof_store/inline_proof_store.ts +5 -5
- package/src/proving_broker/proof_store/proof_store.ts +9 -9
- package/src/proving_broker/proving_agent.ts +11 -11
- package/src/proving_broker/proving_agent_instrumentation.ts +5 -5
- package/src/proving_broker/proving_broker.ts +35 -32
- package/src/proving_broker/proving_broker_database/memory.ts +2 -2
- package/src/proving_broker/proving_broker_database/persisted.ts +8 -8
- package/src/proving_broker/proving_broker_database.ts +1 -1
- package/src/proving_broker/proving_broker_instrumentation.ts +24 -2
- package/src/proving_broker/proving_job_controller.ts +7 -7
- package/src/proving_broker/rpc.ts +6 -7
- package/src/test/mock_prover.ts +28 -30
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ProvingRequestType, makeProvingJobId } from '@aztec/circuit-types';
|
|
2
1
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
+
import { makeProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
3
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
4
|
export function makeRandomProvingJobId(epochNumber) {
|
|
4
5
|
return makeProvingJobId(epochNumber ?? 1, ProvingRequestType.BASE_PARITY, randomBytes(8).toString('hex'));
|
|
5
6
|
}
|
|
@@ -9,4 +10,3 @@ export function makeInputsUri() {
|
|
|
9
10
|
export function makeOutputsUri() {
|
|
10
11
|
return randomBytes(8).toString('hex');
|
|
11
12
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvZml4dHVyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsV0FBb0I7SUFDekQsT0FBTyxnQkFBZ0IsQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUcsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQWEsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDNUIsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBYSxDQUFDO0FBQ3BELENBQUMifQ==
|
|
@@ -7,4 +7,3 @@ export * from './proving_broker_database/persisted.js';
|
|
|
7
7
|
export * from './proof_store/index.js';
|
|
8
8
|
export * from './factory.js';
|
|
9
9
|
export * from './config.js';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUMifQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GoogleCloudStorageProofStore } from './gcs_proof_store.js';
|
|
2
2
|
import { InlineProofStore } from './inline_proof_store.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { ProofStore } from './proof_store.js';
|
|
4
4
|
export declare function createProofStore(config: string | undefined, logger?: import("@aztec/foundation/log").Logger): InlineProofStore | GoogleCloudStorageProofStore;
|
|
5
5
|
export declare function createProofStoreForUri(uri: string, logger?: import("@aztec/foundation/log").Logger): Pick<ProofStore, 'getProofInput' | 'getProofOutput'>;
|
|
6
6
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,yCAA4C,mDAmB9G;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,MAAM,yCAA4C,GACjD,IAAI,CAAC,UAAU,EAAE,eAAe,GAAG,gBAAgB,CAAC,CAWtD"}
|
|
@@ -5,35 +5,32 @@ export function createProofStore(config, logger = createLogger('prover-client:pr
|
|
|
5
5
|
if (config === undefined) {
|
|
6
6
|
logger.info('Creating inline proof store');
|
|
7
7
|
return new InlineProofStore();
|
|
8
|
-
}
|
|
9
|
-
else if (config.startsWith('gs://')) {
|
|
8
|
+
} else if (config.startsWith('gs://')) {
|
|
10
9
|
try {
|
|
11
10
|
const url = new URL(config);
|
|
12
11
|
const bucket = url.host;
|
|
13
12
|
const path = url.pathname.replace(/^\/+/, '');
|
|
14
|
-
logger.info(`Creating google cloud proof store at ${bucket}`, {
|
|
13
|
+
logger.info(`Creating google cloud proof store at ${bucket}`, {
|
|
14
|
+
bucket,
|
|
15
|
+
path
|
|
16
|
+
});
|
|
15
17
|
return new GoogleCloudStorageProofStore(bucket, path);
|
|
16
|
-
}
|
|
17
|
-
catch (err) {
|
|
18
|
+
} catch (err) {
|
|
18
19
|
throw new Error(`Invalid google cloud proof store definition: '${config}'. Supported values are 'gs://bucket-name/path/to/store'.`);
|
|
19
20
|
}
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
21
|
+
} else {
|
|
22
22
|
throw new Error(`Unknown proof store config: '${config}'. Supported values are 'gs://bucket-name/path/to/store'.`);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
export function createProofStoreForUri(uri, logger = createLogger('prover-client:proof-store')) {
|
|
26
26
|
if (uri.startsWith('data://')) {
|
|
27
27
|
return createProofStore(undefined, logger);
|
|
28
|
-
}
|
|
29
|
-
else if (uri.startsWith('gs://')) {
|
|
28
|
+
} else if (uri.startsWith('gs://')) {
|
|
30
29
|
const url = new URL(uri);
|
|
31
30
|
const basePath = url.pathname.replace(/^\/+/, '').split('/').slice(0, -3);
|
|
32
31
|
url.pathname = basePath.join('/');
|
|
33
32
|
return createProofStore(uri, logger);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
33
|
+
} else {
|
|
36
34
|
throw new Error(`Unknown proof store config: '${uri}'. Supported protocols are 'data://' and 'gs://'.`);
|
|
37
35
|
}
|
|
38
36
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aW5nX2Jyb2tlci9wcm9vZl9zdG9yZS9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUczRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBMEIsRUFBRSxNQUFNLEdBQUcsWUFBWSxDQUFDLDJCQUEyQixDQUFDO0lBQzdHLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO1NBQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN4QixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoRixPQUFPLElBQUksNEJBQTRCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FDYixpREFBaUQsTUFBTSwyREFBMkQsQ0FDbkgsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLE1BQU0sMkRBQTJELENBQUMsQ0FBQztJQUNySCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsR0FBVyxFQUNYLE1BQU0sR0FBRyxZQUFZLENBQUMsMkJBQTJCLENBQUM7SUFFbEQsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsQ0FBQztTQUFNLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEdBQUcsbURBQW1ELENBQUMsQ0FBQztJQUMxRyxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type ProofUri, type ProvingJobId, type ProvingJobInputs, type ProvingJobInputsMap, type ProvingJobResult, type ProvingJobResultsMap
|
|
2
|
-
import {
|
|
1
|
+
import { type ProofUri, type ProvingJobId, type ProvingJobInputs, type ProvingJobInputsMap, type ProvingJobResult, type ProvingJobResultsMap } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
|
+
import type { ProofStore } from './proof_store.js';
|
|
3
4
|
export declare class GoogleCloudStorageProofStore implements ProofStore {
|
|
4
5
|
private readonly bucketName;
|
|
5
6
|
private readonly path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gcs_proof_store.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/gcs_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"gcs_proof_store.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/gcs_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,qBAAa,4BAA6B,YAAW,UAAU;IAGjD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAAU,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEL,UAAU,EAAE,MAAM,EAAmB,IAAI,EAAE,MAAM;IAIjE,cAAc,CAAC,CAAC,SAAS,kBAAkB,EACtD,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAOpB,eAAe,CAAC,CAAC,SAAS,kBAAkB,EAC1C,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,QAAQ,CAAC;IAIP,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBpE,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG1D"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getProvingJobInputClassFor } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
3
|
import { Storage } from '@google-cloud/storage';
|
|
3
4
|
import { join } from 'path';
|
|
4
5
|
const INPUTS_PATH = 'inputs';
|
|
5
6
|
export class GoogleCloudStorageProofStore {
|
|
6
|
-
|
|
7
|
+
bucketName;
|
|
8
|
+
path;
|
|
9
|
+
storage;
|
|
10
|
+
constructor(bucketName, path){
|
|
7
11
|
this.bucketName = bucketName;
|
|
8
12
|
this.path = path;
|
|
9
13
|
this.storage = new Storage();
|
|
@@ -23,7 +27,7 @@ export class GoogleCloudStorageProofStore {
|
|
|
23
27
|
const bucket = this.storage.bucket(url.host);
|
|
24
28
|
const path = url.pathname.replace(/^\/+/, '');
|
|
25
29
|
const file = bucket.file(path);
|
|
26
|
-
if (!
|
|
30
|
+
if (!await file.exists()) {
|
|
27
31
|
throw new Error(`File at ${uri} does not exist`);
|
|
28
32
|
}
|
|
29
33
|
const typeString = path.split('/').at(-2);
|
|
@@ -33,9 +37,11 @@ export class GoogleCloudStorageProofStore {
|
|
|
33
37
|
}
|
|
34
38
|
const contents = await file.download();
|
|
35
39
|
const inputs = getProvingJobInputClassFor(type).fromBuffer(contents[0]);
|
|
36
|
-
return {
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
return {
|
|
41
|
+
inputs,
|
|
42
|
+
type
|
|
43
|
+
};
|
|
44
|
+
} catch (err) {
|
|
39
45
|
throw new Error(`Error getting proof input at ${uri}: ${err}`);
|
|
40
46
|
}
|
|
41
47
|
}
|
|
@@ -43,4 +49,3 @@ export class GoogleCloudStorageProofStore {
|
|
|
43
49
|
throw new Error('Not implemented');
|
|
44
50
|
}
|
|
45
51
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2NzX3Byb29mX3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL3Byb29mX3N0b3JlL2djc19wcm9vZl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBT0wsa0JBQWtCLEVBQ2xCLDBCQUEwQixHQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTVCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUU3QixNQUFNLE9BQU8sNEJBQTRCO0lBR3ZDLFlBQTZCLFVBQWtCLEVBQW1CLElBQVk7UUFBakQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFtQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQzVFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FDekIsRUFBZ0IsRUFDaEIsSUFBTyxFQUNQLE1BQThCO1FBRTlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFjLENBQUM7SUFDckQsQ0FBQztJQUVELGVBQWUsQ0FDYixHQUFpQixFQUNqQixLQUFRLEVBQ1IsT0FBZ0M7UUFFaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQWE7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5QyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFVBQTZDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3hHLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixJQUFJLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNyRSxDQUFDO1lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkMsTUFBTSxNQUFNLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFzQixDQUFDO1FBQzlDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsSUFBYztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export * from './proof_store.js';
|
|
2
2
|
export * from './inline_proof_store.js';
|
|
3
3
|
export * from './factory.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvb2Zfc3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsY0FBYyxDQUFDIn0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type ProofUri, type ProvingJobId, ProvingJobInputs, type ProvingJobInputsMap, ProvingJobResult, type ProvingJobResultsMap
|
|
2
|
-
import {
|
|
1
|
+
import { type ProofUri, type ProvingJobId, ProvingJobInputs, type ProvingJobInputsMap, ProvingJobResult, type ProvingJobResultsMap } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import type { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
|
+
import type { ProofStore } from './proof_store.js';
|
|
3
4
|
/**
|
|
4
5
|
* An implementation of a proof input/output database that stores data inline in the URI.
|
|
5
6
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline_proof_store.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/inline_proof_store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inline_proof_store.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/inline_proof_store.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,gBAAgB,EAChB,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAOnD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,cAAc,CAAC,CAAC,SAAS,kBAAkB,EACzC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC;IAKpB,eAAe,CAAC,CAAC,SAAS,kBAAkB,EAC1C,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC;IAKpB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIvD,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIxD,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,MAAM;CAQf"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
import { ProvingJobInputs, ProvingJobResult, } from '@aztec/circuit-types';
|
|
2
1
|
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
|
+
import { ProvingJobInputs, ProvingJobResult } from '@aztec/stdlib/interfaces/server';
|
|
3
3
|
// use an ASCII encoded data uri https://datatracker.ietf.org/doc/html/rfc2397#section-2
|
|
4
4
|
// we do this to avoid double encoding to base64 (since the inputs already serialize to a base64 string)
|
|
5
5
|
const PREFIX = 'data:application/json;charset=utf-8';
|
|
6
6
|
const SEPARATOR = ',';
|
|
7
7
|
/**
|
|
8
8
|
* An implementation of a proof input/output database that stores data inline in the URI.
|
|
9
|
-
*/
|
|
10
|
-
export class InlineProofStore {
|
|
9
|
+
*/ export class InlineProofStore {
|
|
11
10
|
saveProofInput(_id, type, inputs) {
|
|
12
|
-
const jobInputs = {
|
|
11
|
+
const jobInputs = {
|
|
12
|
+
type,
|
|
13
|
+
inputs
|
|
14
|
+
};
|
|
13
15
|
return Promise.resolve(this.encode(jobInputs));
|
|
14
16
|
}
|
|
15
17
|
saveProofOutput(_id, type, result) {
|
|
16
|
-
const jobResult = {
|
|
18
|
+
const jobResult = {
|
|
19
|
+
type,
|
|
20
|
+
result
|
|
21
|
+
};
|
|
17
22
|
return Promise.resolve(this.encode(jobResult));
|
|
18
23
|
}
|
|
19
24
|
getProofInput(uri) {
|
|
@@ -24,7 +29,7 @@ export class InlineProofStore {
|
|
|
24
29
|
}
|
|
25
30
|
encode(obj) {
|
|
26
31
|
const encoded = encodeURIComponent(jsonStringify(obj));
|
|
27
|
-
return
|
|
32
|
+
return PREFIX + SEPARATOR + encoded;
|
|
28
33
|
}
|
|
29
34
|
decode(uri, schema) {
|
|
30
35
|
const [prefix, data] = uri.split(SEPARATOR);
|
|
@@ -34,4 +39,3 @@ export class InlineProofStore {
|
|
|
34
39
|
return jsonParseWithSchema(decodeURIComponent(data), schema);
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lX3Byb29mX3N0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL3Byb29mX3N0b3JlL2lubGluZV9wcm9vZl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsZ0JBQWdCLEVBRWhCLGdCQUFnQixHQUdqQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUtoRix3RkFBd0Y7QUFDeEYsd0dBQXdHO0FBQ3hHLE1BQU0sTUFBTSxHQUFHLHFDQUFxQyxDQUFDO0FBQ3JELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUV0Qjs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsY0FBYyxDQUNaLEdBQWlCLEVBQ2pCLElBQU8sRUFDUCxNQUE4QjtRQUU5QixNQUFNLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQXNCLENBQUM7UUFDdkQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsZUFBZSxDQUNiLEdBQWlCLEVBQ2pCLElBQU8sRUFDUCxNQUErQjtRQUUvQixNQUFNLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQXNCLENBQUM7UUFDdkQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWE7UUFDekIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQWE7UUFDMUIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRU8sTUFBTSxDQUFDLEdBQVc7UUFDeEIsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLE1BQU0sR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFhLENBQUM7SUFDcEQsQ0FBQztJQUVPLE1BQU0sQ0FBSSxHQUFhLEVBQUUsTUFBaUI7UUFDaEQsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVDLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELE9BQU8sbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGIn0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ProofUri, ProvingJobId, ProvingJobInputs, ProvingJobInputsMap, ProvingJobResult, ProvingJobResultsMap } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import type { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
3
|
/**
|
|
3
4
|
* A database for storing proof inputs and outputs.
|
|
4
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proof_store.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"proof_store.d.ts","sourceRoot":"","sources":["../../../src/proving_broker/proof_store/proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,SAAS,kBAAkB,EACzC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB;;;;;;OAMG;IACH,eAAe,CAAC,CAAC,SAAS,kBAAkB,EAC1C,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1D"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* A database for storing proof inputs and outputs.
|
|
3
|
+
*/ export { };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ProvingJobConsumer, ProvingJobId, ProvingJobResultsMap, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
3
|
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
3
|
-
import {
|
|
4
|
+
import type { ProofStore } from './proof_store/index.js';
|
|
4
5
|
/**
|
|
5
6
|
* A helper class that encapsulates a circuit prover and connects it to a job source.
|
|
6
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_agent.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proving_agent.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,kBAAkB,EAClB,YAAY,EAEZ,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAS1C,iCAAiC;IACjC,OAAO,CAAC,MAAM;IACd,gDAAgD;IAChD,OAAO,CAAC,UAAU;IAClB,iDAAiD;IACjD,OAAO,CAAC,aAAa;IACrB,oDAAoD;IACpD,OAAO,CAAC,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,cAAc;IAGtB,OAAO,CAAC,GAAG;IApBb,OAAO,CAAC,oBAAoB,CAAC,CAAuB;IACpD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,SAAS,CAAoB;IAErC,SAAgB,MAAM,EAAE,MAAM,CAAC;;IAG7B,iCAAiC;IACzB,MAAM,EAAE,kBAAkB;IAClC,gDAAgD;IACxC,UAAU,EAAE,UAAU;IAC9B,iDAAiD;IACzC,aAAa,EAAE,mBAAmB;IAC1C,oDAAoD;IAC5C,cAAc,GAAE,KAAK,CAAC,kBAAkB,CAAM;IACtD,oCAAoC;IAC5B,cAAc,SAAO;IAC7B,uDAAuD;IACvD,MAAM,GAAE,eAAsC,EACtC,GAAG,yCAA8C;IAOpD,gBAAgB,CAAC,aAAa,EAAE,mBAAmB,GAAG,IAAI;IAI1D,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAKP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAMpB,IAAI;YA6BJ,QAAQ;IAmDtB,eAAe,wCACN,YAAY,QACb,CAAC,OACF,KAAK,GAAG,SAAS,UACd,oBAAoB,CAAC,CAAC,CAAC,GAAG,SAAS,mBAmB3C;CACH"}
|
|
@@ -1,137 +1,134 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
}
|
|
3
7
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
8
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
5
9
|
import { truncate } from '@aztec/foundation/string';
|
|
6
10
|
import { Timer } from '@aztec/foundation/timer';
|
|
7
|
-
import {
|
|
11
|
+
import { ProvingError } from '@aztec/stdlib/errors';
|
|
12
|
+
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
13
|
+
import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
8
14
|
import { ProvingAgentInstrumentation } from './proving_agent_instrumentation.js';
|
|
9
15
|
import { ProvingJobController, ProvingJobControllerStatus } from './proving_job_controller.js';
|
|
10
16
|
/**
|
|
11
17
|
* A helper class that encapsulates a circuit prover and connects it to a job source.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const outputUri = await this.proofStore.saveProofOutput(jobId, type, result);
|
|
46
|
-
this.log.info(`Job id=${jobId} type=${ProvingRequestType[type]} completed outputUri=${truncate(outputUri)}`);
|
|
47
|
-
maybeJob = await this.broker.reportProvingJobSuccess(jobId, outputUri, { allowList: this.proofAllowList });
|
|
48
|
-
}
|
|
49
|
-
if (maybeJob) {
|
|
50
|
-
const { job, time } = maybeJob;
|
|
51
|
-
await this.startJob(job, time);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
this.idleTimer = new Timer();
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
this.tracer = client.getTracer('ProvingAgent');
|
|
58
|
-
this.instrumentation = new ProvingAgentInstrumentation(client);
|
|
59
|
-
this.runningPromise = new RunningPromise(this.work.bind(this), this.log, this.pollIntervalMs);
|
|
18
|
+
*/ export class ProvingAgent {
|
|
19
|
+
broker;
|
|
20
|
+
proofStore;
|
|
21
|
+
circuitProver;
|
|
22
|
+
proofAllowList;
|
|
23
|
+
pollIntervalMs;
|
|
24
|
+
log;
|
|
25
|
+
currentJobController;
|
|
26
|
+
runningPromise;
|
|
27
|
+
instrumentation;
|
|
28
|
+
idleTimer;
|
|
29
|
+
tracer;
|
|
30
|
+
constructor(/** The source of proving jobs */ broker, /** Database holding proof inputs and outputs */ proofStore, /** The prover implementation to defer jobs to */ circuitProver, /** Optional list of allowed proof types to build */ proofAllowList = [], /** How long to wait between jobs */ pollIntervalMs = 1000, /** A telemetry client through which to emit metrics */ client = getTelemetryClient(), log = createLogger('prover-client:proving-agent')){
|
|
31
|
+
this.broker = broker;
|
|
32
|
+
this.proofStore = proofStore;
|
|
33
|
+
this.circuitProver = circuitProver;
|
|
34
|
+
this.proofAllowList = proofAllowList;
|
|
35
|
+
this.pollIntervalMs = pollIntervalMs;
|
|
36
|
+
this.log = log;
|
|
37
|
+
this.handleJobResult = async (jobId, type, err, result)=>{
|
|
38
|
+
let maybeJob;
|
|
39
|
+
if (err) {
|
|
40
|
+
const retry = err.name === ProvingError.NAME ? err.retry : false;
|
|
41
|
+
this.log.error(`Job id=${jobId} type=${ProvingRequestType[type]} failed err=${err.message} retry=${retry}`, err);
|
|
42
|
+
maybeJob = await this.broker.reportProvingJobError(jobId, err.message, retry, {
|
|
43
|
+
allowList: this.proofAllowList
|
|
44
|
+
});
|
|
45
|
+
} else if (result) {
|
|
46
|
+
const outputUri = await this.proofStore.saveProofOutput(jobId, type, result);
|
|
47
|
+
this.log.info(`Job id=${jobId} type=${ProvingRequestType[type]} completed outputUri=${truncate(outputUri)}`);
|
|
48
|
+
maybeJob = await this.broker.reportProvingJobSuccess(jobId, outputUri, {
|
|
49
|
+
allowList: this.proofAllowList
|
|
50
|
+
});
|
|
60
51
|
}
|
|
61
|
-
|
|
62
|
-
this.circuitProver = circuitProver;
|
|
63
|
-
}
|
|
64
|
-
isRunning() {
|
|
65
|
-
return this.runningPromise?.isRunning() ?? false;
|
|
66
|
-
}
|
|
67
|
-
start() {
|
|
68
|
-
this.idleTimer = new Timer();
|
|
69
|
-
this.runningPromise.start();
|
|
70
|
-
}
|
|
71
|
-
async stop() {
|
|
72
|
-
this.currentJobController?.abort();
|
|
73
|
-
await this.runningPromise.stop();
|
|
74
|
-
}
|
|
75
|
-
async work() {
|
|
76
|
-
// every tick we need to
|
|
77
|
-
// (1) either do a heartbeat, telling the broker that we're working
|
|
78
|
-
// (2) get a new job
|
|
79
|
-
// If during (1) the broker returns a new job that means we can cancel the current job and start the new one
|
|
80
|
-
let maybeJob;
|
|
81
|
-
if (this.currentJobController?.getStatus() === ProvingJobControllerStatus.PROVING) {
|
|
82
|
-
maybeJob = await this.broker.reportProvingJobProgress(this.currentJobController.getJobId(), this.currentJobController.getStartedAt(), { allowList: this.proofAllowList });
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
maybeJob = await this.broker.getProvingJob({ allowList: this.proofAllowList });
|
|
86
|
-
}
|
|
87
|
-
if (!maybeJob) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
if (this.idleTimer) {
|
|
91
|
-
this.instrumentation.recordIdleTime(this.idleTimer);
|
|
92
|
-
}
|
|
93
|
-
this.idleTimer = undefined;
|
|
52
|
+
if (maybeJob) {
|
|
94
53
|
const { job, time } = maybeJob;
|
|
95
54
|
await this.startJob(job, time);
|
|
55
|
+
} else {
|
|
56
|
+
this.idleTimer = new Timer();
|
|
96
57
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
58
|
+
};
|
|
59
|
+
this.tracer = client.getTracer('ProvingAgent');
|
|
60
|
+
this.instrumentation = new ProvingAgentInstrumentation(client);
|
|
61
|
+
this.runningPromise = new RunningPromise(this.work.bind(this), this.log, this.pollIntervalMs);
|
|
62
|
+
}
|
|
63
|
+
setCircuitProver(circuitProver) {
|
|
64
|
+
this.circuitProver = circuitProver;
|
|
65
|
+
}
|
|
66
|
+
isRunning() {
|
|
67
|
+
return this.runningPromise?.isRunning() ?? false;
|
|
68
|
+
}
|
|
69
|
+
start() {
|
|
70
|
+
this.idleTimer = new Timer();
|
|
71
|
+
this.runningPromise.start();
|
|
72
|
+
}
|
|
73
|
+
async stop() {
|
|
74
|
+
this.currentJobController?.abort();
|
|
75
|
+
await this.runningPromise.stop();
|
|
76
|
+
}
|
|
77
|
+
async work() {
|
|
78
|
+
// every tick we need to
|
|
79
|
+
// (1) either do a heartbeat, telling the broker that we're working
|
|
80
|
+
// (2) get a new job
|
|
81
|
+
// If during (1) the broker returns a new job that means we can cancel the current job and start the new one
|
|
82
|
+
let maybeJob;
|
|
83
|
+
if (this.currentJobController?.getStatus() === ProvingJobControllerStatus.PROVING) {
|
|
84
|
+
maybeJob = await this.broker.reportProvingJobProgress(this.currentJobController.getJobId(), this.currentJobController.getStartedAt(), {
|
|
85
|
+
allowList: this.proofAllowList
|
|
86
|
+
});
|
|
87
|
+
} else {
|
|
88
|
+
maybeJob = await this.broker.getProvingJob({
|
|
89
|
+
allowList: this.proofAllowList
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
if (!maybeJob) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (this.idleTimer) {
|
|
96
|
+
this.instrumentation.recordIdleTime(this.idleTimer);
|
|
97
|
+
}
|
|
98
|
+
this.idleTimer = undefined;
|
|
99
|
+
const { job, time } = maybeJob;
|
|
100
|
+
await this.startJob(job, time);
|
|
101
|
+
}
|
|
102
|
+
async startJob(job, startedAt) {
|
|
103
|
+
let abortedProofJobId;
|
|
104
|
+
let abortedProofName;
|
|
105
|
+
if (this.currentJobController?.getStatus() === ProvingJobControllerStatus.PROVING) {
|
|
106
|
+
abortedProofJobId = this.currentJobController.getJobId();
|
|
107
|
+
abortedProofName = this.currentJobController.getProofTypeName();
|
|
108
|
+
this.currentJobController?.abort();
|
|
109
|
+
}
|
|
110
|
+
let inputs;
|
|
111
|
+
try {
|
|
112
|
+
inputs = await this.proofStore.getProofInput(job.inputsUri);
|
|
113
|
+
} catch (err) {
|
|
114
|
+
const maybeJob = await this.broker.reportProvingJobError(job.id, 'Failed to load proof inputs', true, {
|
|
115
|
+
allowList: this.proofAllowList
|
|
116
|
+
});
|
|
117
|
+
if (maybeJob) {
|
|
118
|
+
return this.startJob(maybeJob.job, maybeJob.time);
|
|
126
119
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.currentJobController = new ProvingJobController(job.id, inputs, job.epochNumber, startedAt, this.circuitProver, this.handleJobResult);
|
|
123
|
+
if (abortedProofJobId) {
|
|
124
|
+
this.log.info(`Aborting job id=${abortedProofJobId} type=${abortedProofName} to start new job id=${this.currentJobController.getJobId()} type=${this.currentJobController.getProofTypeName()} inputsUri=${truncate(job.inputsUri)}`);
|
|
125
|
+
} else {
|
|
126
|
+
this.log.info(`Starting job id=${this.currentJobController.getJobId()} type=${this.currentJobController.getProofTypeName()} inputsUri=${truncate(job.inputsUri)}`);
|
|
127
|
+
}
|
|
128
|
+
this.currentJobController.start();
|
|
129
|
+
}
|
|
130
|
+
handleJobResult;
|
|
131
|
+
}
|
|
132
|
+
_ts_decorate([
|
|
133
|
+
trackSpan('ProvingAgent.safeWork')
|
|
134
|
+
], ProvingAgent.prototype, "work", null);
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"proving_agent_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_agent_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Metrics, ValueType } from '@aztec/telemetry-client';
|
|
2
2
|
export class ProvingAgentInstrumentation {
|
|
3
|
-
|
|
3
|
+
idleTime;
|
|
4
|
+
constructor(client, name = 'ProvingAgent'){
|
|
4
5
|
const meter = client.getMeter(name);
|
|
5
6
|
this.idleTime = meter.createHistogram(Metrics.PROVING_AGENT_IDLE, {
|
|
6
7
|
description: 'Records how long an agent was idle',
|
|
7
|
-
unit: '
|
|
8
|
-
valueType: ValueType.
|
|
8
|
+
unit: 's',
|
|
9
|
+
valueType: ValueType.DOUBLE
|
|
9
10
|
});
|
|
10
11
|
}
|
|
11
12
|
recordIdleTime(msOrTimer) {
|
|
12
|
-
const duration = typeof msOrTimer === 'number' ? msOrTimer :
|
|
13
|
-
this.idleTime.record(duration);
|
|
13
|
+
const duration = typeof msOrTimer === 'number' ? msOrTimer : msOrTimer.ms();
|
|
14
|
+
this.idleTime.record(duration / 1000);
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19hZ2VudF9pbnN0cnVtZW50YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19hZ2VudF9pbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFrQixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5HLE1BQU0sT0FBTywyQkFBMkI7SUFHdEMsWUFBWSxNQUF1QixFQUFFLElBQUksR0FBRyxjQUFjO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtZQUNoRSxXQUFXLEVBQUUsb0NBQW9DO1lBQ2pELElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsU0FBeUI7UUFDdEMsTUFBTSxRQUFRLEdBQUcsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGIn0=
|