@aztec/prover-client 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1
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-factory/index.d.ts +1 -1
- package/dest/block-factory/light.d.ts +5 -3
- package/dest/block-factory/light.d.ts.map +1 -1
- package/dest/block-factory/light.js +32 -11
- package/dest/config.d.ts +1 -1
- package/dest/config.js +1 -1
- package/dest/index.d.ts +1 -1
- package/dest/light/lightweight_checkpoint_builder.d.ts +29 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
- package/dest/light/lightweight_checkpoint_builder.js +108 -0
- package/dest/mocks/fixtures.d.ts +5 -5
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +33 -15
- package/dest/mocks/test_context.d.ts +37 -33
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +124 -82
- package/dest/orchestrator/block-building-helpers.d.ts +35 -35
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +151 -187
- package/dest/orchestrator/block-proving-state.d.ts +68 -55
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +273 -185
- package/dest/orchestrator/checkpoint-proving-state.d.ts +63 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-proving-state.js +210 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +38 -31
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +128 -84
- package/dest/orchestrator/index.d.ts +1 -1
- package/dest/orchestrator/orchestrator.d.ts +33 -32
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +369 -243
- package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.d.ts +12 -10
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +23 -29
- package/dest/prover-client/factory.d.ts +1 -1
- package/dest/prover-client/index.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.d.ts +13 -11
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +9 -9
- package/dest/proving_broker/broker_prover_facade.d.ts +23 -18
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +41 -25
- package/dest/proving_broker/config.d.ts +18 -14
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +13 -7
- package/dest/proving_broker/factory.d.ts +1 -1
- package/dest/proving_broker/factory.js +1 -1
- package/dest/proving_broker/fixtures.d.ts +3 -2
- package/dest/proving_broker/fixtures.d.ts.map +1 -1
- package/dest/proving_broker/fixtures.js +3 -2
- package/dest/proving_broker/index.d.ts +1 -1
- package/dest/proving_broker/proof_store/factory.d.ts +2 -2
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.d.ts +2 -1
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
- package/dest/proving_broker/proving_agent.d.ts +1 -1
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- 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_broker.d.ts +2 -2
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +31 -19
- package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +8 -7
- package/dest/proving_broker/proving_broker_database.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.d.ts +3 -2
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +39 -19
- package/dest/proving_broker/rpc.d.ts +4 -4
- package/dest/test/mock_proof_store.d.ts +3 -3
- package/dest/test/mock_proof_store.d.ts.map +1 -1
- package/dest/test/mock_prover.d.ts +23 -19
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +35 -20
- package/package.json +19 -19
- package/src/block-factory/light.ts +40 -17
- package/src/config.ts +1 -1
- package/src/light/lightweight_checkpoint_builder.ts +144 -0
- package/src/mocks/fixtures.ts +41 -36
- package/src/mocks/test_context.ts +188 -114
- package/src/orchestrator/block-building-helpers.ts +233 -313
- package/src/orchestrator/block-proving-state.ts +315 -247
- package/src/orchestrator/checkpoint-proving-state.ts +303 -0
- package/src/orchestrator/epoch-proving-state.ts +176 -129
- package/src/orchestrator/orchestrator.ts +554 -319
- package/src/orchestrator/tx-proving-state.ts +48 -55
- package/src/prover-client/server-epoch-prover.ts +30 -21
- package/src/proving_broker/broker_prover_facade.ts +175 -103
- package/src/proving_broker/config.ts +15 -8
- package/src/proving_broker/factory.ts +1 -1
- package/src/proving_broker/fixtures.ts +8 -3
- package/src/proving_broker/proof_store/index.ts +1 -0
- package/src/proving_broker/proving_broker.ts +38 -19
- package/src/proving_broker/proving_broker_database/memory.ts +2 -1
- package/src/proving_broker/proving_broker_database/persisted.ts +10 -9
- package/src/proving_broker/proving_broker_database.ts +2 -1
- package/src/proving_broker/proving_job_controller.ts +41 -20
- package/src/test/mock_prover.ts +142 -60
- package/dest/bin/get-proof-inputs.d.ts +0 -2
- package/dest/bin/get-proof-inputs.d.ts.map +0 -1
- package/dest/bin/get-proof-inputs.js +0 -51
- package/src/bin/get-proof-inputs.ts +0 -59
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum';
|
|
1
|
+
import { type L1ReaderConfig, l1ReaderConfigMappings } from '@aztec/ethereum/l1-reader';
|
|
2
2
|
import {
|
|
3
3
|
type ConfigMappingsType,
|
|
4
4
|
booleanConfigHelper,
|
|
@@ -22,9 +22,9 @@ export const ProverBrokerConfig = z.object({
|
|
|
22
22
|
/** If starting a prover broker locally, the directory to store broker data */
|
|
23
23
|
dataDirectory: z.string().optional(),
|
|
24
24
|
/** The size of the data store map */
|
|
25
|
-
|
|
26
|
-
/** The size of the prover broker's database. Will override the
|
|
27
|
-
|
|
25
|
+
dataStoreMapSizeKb: z.number().int().nonnegative(),
|
|
26
|
+
/** The size of the prover broker's database. Will override the dataStoreMapSizeKb if set. */
|
|
27
|
+
proverBrokerStoreMapSizeKb: z.number().int().nonnegative().optional(),
|
|
28
28
|
/** The prover broker may batch jobs together before writing to the database */
|
|
29
29
|
proverBrokerBatchSize: z.number().int().nonnegative(),
|
|
30
30
|
/** How often the job batches get flushed */
|
|
@@ -34,7 +34,7 @@ export const ProverBrokerConfig = z.object({
|
|
|
34
34
|
});
|
|
35
35
|
|
|
36
36
|
export type ProverBrokerConfig = z.infer<typeof ProverBrokerConfig> &
|
|
37
|
-
Pick<DataStoreConfig, '
|
|
37
|
+
Pick<DataStoreConfig, 'dataStoreMapSizeKb' | 'dataDirectory'> &
|
|
38
38
|
L1ReaderConfig &
|
|
39
39
|
Pick<ChainConfig, 'rollupVersion'>;
|
|
40
40
|
|
|
@@ -69,10 +69,10 @@ export const proverBrokerConfigMappings: ConfigMappingsType<ProverBrokerConfig>
|
|
|
69
69
|
description: 'The maximum number of epochs to keep results for',
|
|
70
70
|
...numberConfigHelper(1),
|
|
71
71
|
},
|
|
72
|
-
|
|
72
|
+
proverBrokerStoreMapSizeKb: {
|
|
73
73
|
env: 'PROVER_BROKER_STORE_MAP_SIZE_KB',
|
|
74
74
|
parseEnv: (val: string | undefined) => (val ? +val : undefined),
|
|
75
|
-
description: "The size of the prover broker's database. Will override the
|
|
75
|
+
description: "The size of the prover broker's database. Will override the dataStoreMapSizeKb if set.",
|
|
76
76
|
},
|
|
77
77
|
...dataConfigMappings,
|
|
78
78
|
...l1ReaderConfigMappings,
|
|
@@ -98,6 +98,8 @@ export const ProverAgentConfig = z.object({
|
|
|
98
98
|
proverTestDelayMs: z.number(),
|
|
99
99
|
/** If using realistic delays, what percentage of realistic times to apply. */
|
|
100
100
|
proverTestDelayFactor: z.number(),
|
|
101
|
+
/** The delay (ms) to inject during fake proof verification */
|
|
102
|
+
proverTestVerificationDelayMs: z.number().optional(),
|
|
101
103
|
});
|
|
102
104
|
|
|
103
105
|
export type ProverAgentConfig = z.infer<typeof ProverAgentConfig>;
|
|
@@ -111,7 +113,7 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
111
113
|
proverAgentPollIntervalMs: {
|
|
112
114
|
env: 'PROVER_AGENT_POLL_INTERVAL_MS',
|
|
113
115
|
description: 'The interval agents poll for jobs at',
|
|
114
|
-
...numberConfigHelper(
|
|
116
|
+
...numberConfigHelper(1000),
|
|
115
117
|
},
|
|
116
118
|
proverAgentProofTypes: {
|
|
117
119
|
env: 'PROVER_AGENT_PROOF_TYPES',
|
|
@@ -146,4 +148,9 @@ export const proverAgentConfigMappings: ConfigMappingsType<ProverAgentConfig> =
|
|
|
146
148
|
description: 'If using realistic delays, what percentage of realistic times to apply.',
|
|
147
149
|
...numberConfigHelper(1),
|
|
148
150
|
},
|
|
151
|
+
proverTestVerificationDelayMs: {
|
|
152
|
+
env: 'PROVER_TEST_VERIFICATION_DELAY_MS',
|
|
153
|
+
description: 'The delay (ms) to inject during fake proof verification',
|
|
154
|
+
...numberConfigHelper(10),
|
|
155
|
+
},
|
|
149
156
|
};
|
|
@@ -9,7 +9,7 @@ export async function createAndStartProvingBroker(
|
|
|
9
9
|
_config: ProverBrokerConfig,
|
|
10
10
|
client: TelemetryClient,
|
|
11
11
|
): Promise<ProvingBroker> {
|
|
12
|
-
const config = { ..._config,
|
|
12
|
+
const config = { ..._config, dataStoreMapSizeKb: _config.proverBrokerStoreMapSizeKb ?? _config.dataStoreMapSizeKb };
|
|
13
13
|
const database = config.dataDirectory ? await KVBrokerDatabase.new(config, client) : new InMemoryBrokerDatabase();
|
|
14
14
|
|
|
15
15
|
const broker = new ProvingBroker(database, config, client);
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
2
3
|
import { type ProofUri, type ProvingJobId, makeProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
4
5
|
|
|
5
|
-
export function makeRandomProvingJobId(epochNumber?:
|
|
6
|
-
return makeProvingJobId(
|
|
6
|
+
export function makeRandomProvingJobId(epochNumber?: EpochNumber): ProvingJobId {
|
|
7
|
+
return makeProvingJobId(
|
|
8
|
+
epochNumber ?? EpochNumber(1),
|
|
9
|
+
ProvingRequestType.PARITY_BASE,
|
|
10
|
+
randomBytes(8).toString('hex'),
|
|
11
|
+
);
|
|
7
12
|
}
|
|
8
13
|
|
|
9
14
|
export function makeInputsUri(): ProofUri {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
3
|
import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
|
|
3
4
|
import { PriorityMemoryQueue } from '@aztec/foundation/queue';
|
|
@@ -44,21 +45,33 @@ type EnqueuedProvingJob = Pick<ProvingJob, 'id' | 'epochNumber'>;
|
|
|
44
45
|
export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Traceable {
|
|
45
46
|
private queues: ProvingQueues = {
|
|
46
47
|
[ProvingRequestType.PUBLIC_VM]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
47
|
-
[ProvingRequestType.
|
|
48
|
+
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
48
49
|
|
|
49
|
-
[ProvingRequestType.
|
|
50
|
-
[ProvingRequestType.
|
|
51
|
-
[ProvingRequestType.
|
|
50
|
+
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
51
|
+
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
52
|
+
[ProvingRequestType.TX_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
52
53
|
[ProvingRequestType.ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
53
54
|
|
|
54
55
|
[ProvingRequestType.BLOCK_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
56
|
+
[ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
57
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
|
|
58
|
+
provingJobComparator,
|
|
59
|
+
),
|
|
60
|
+
[ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
|
|
61
|
+
provingJobComparator,
|
|
62
|
+
),
|
|
55
63
|
[ProvingRequestType.BLOCK_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
56
|
-
[ProvingRequestType.
|
|
57
|
-
[ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
58
|
-
[ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
64
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
59
65
|
|
|
60
|
-
[ProvingRequestType.
|
|
61
|
-
[ProvingRequestType.
|
|
66
|
+
[ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
67
|
+
[ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(
|
|
68
|
+
provingJobComparator,
|
|
69
|
+
),
|
|
70
|
+
[ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
71
|
+
[ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
72
|
+
|
|
73
|
+
[ProvingRequestType.PARITY_BASE]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
74
|
+
[ProvingRequestType.PARITY_ROOT]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
62
75
|
};
|
|
63
76
|
|
|
64
77
|
// holds a copy of the database in memory in order to quickly fulfill requests
|
|
@@ -555,7 +568,7 @@ export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Tr
|
|
|
555
568
|
this.reEnqueueExpiredJobs();
|
|
556
569
|
const oldestEpochToKeep = this.oldestEpochToKeep();
|
|
557
570
|
if (oldestEpochToKeep > 0) {
|
|
558
|
-
await this.database.deleteAllProvingJobsOlderThanEpoch(oldestEpochToKeep);
|
|
571
|
+
await this.database.deleteAllProvingJobsOlderThanEpoch(EpochNumber(oldestEpochToKeep));
|
|
559
572
|
this.logger.trace(`Deleted all epochs older than ${oldestEpochToKeep}`);
|
|
560
573
|
}
|
|
561
574
|
}
|
|
@@ -673,16 +686,22 @@ function proofTypeComparator(a: ProvingRequestType, b: ProvingRequestType): -1 |
|
|
|
673
686
|
* is to get picked up by agents
|
|
674
687
|
*/
|
|
675
688
|
export const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[] = [
|
|
689
|
+
ProvingRequestType.ROOT_ROLLUP,
|
|
690
|
+
ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
|
|
691
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
|
|
692
|
+
ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
|
|
676
693
|
ProvingRequestType.BLOCK_ROOT_ROLLUP,
|
|
677
|
-
ProvingRequestType.
|
|
694
|
+
ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
|
|
678
695
|
ProvingRequestType.BLOCK_MERGE_ROLLUP,
|
|
679
|
-
ProvingRequestType.
|
|
680
|
-
ProvingRequestType.
|
|
681
|
-
ProvingRequestType.
|
|
682
|
-
ProvingRequestType.
|
|
696
|
+
ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
|
|
697
|
+
ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
|
|
698
|
+
ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
|
|
699
|
+
ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
|
|
700
|
+
ProvingRequestType.TX_MERGE_ROLLUP,
|
|
701
|
+
ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
|
|
702
|
+
ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
|
|
683
703
|
ProvingRequestType.PUBLIC_VM,
|
|
684
|
-
ProvingRequestType.
|
|
685
|
-
ProvingRequestType.
|
|
686
|
-
ProvingRequestType.
|
|
687
|
-
ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
|
|
704
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
705
|
+
ProvingRequestType.PARITY_ROOT,
|
|
706
|
+
ProvingRequestType.PARITY_BASE,
|
|
688
707
|
];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import {
|
|
2
3
|
type ProofUri,
|
|
3
4
|
type ProvingJob,
|
|
@@ -43,7 +44,7 @@ export class InMemoryBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
43
44
|
return Promise.resolve();
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
deleteAllProvingJobsOlderThanEpoch(epochNumber:
|
|
47
|
+
deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void> {
|
|
47
48
|
const toDelete = [
|
|
48
49
|
...Array.from(this.jobs.keys()).filter(x => getEpochFromProvingJobId(x) < epochNumber),
|
|
49
50
|
...Array.from(this.results.keys()).filter(x => getEpochFromProvingJobId(x) < epochNumber),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
3
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { BatchQueue } from '@aztec/foundation/queue';
|
|
@@ -104,14 +105,14 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
104
105
|
const jobsToAdd = items.filter((item): item is ProvingJob => 'id' in item);
|
|
105
106
|
const resultsToAdd = items.filter((item): item is [ProvingJobId, ProvingJobSettledResult] => Array.isArray(item));
|
|
106
107
|
|
|
107
|
-
const db = await this.getEpochDatabase(epochNumber);
|
|
108
|
+
const db = await this.getEpochDatabase(EpochNumber(epochNumber));
|
|
108
109
|
await db.batchWrite(jobsToAdd, resultsToAdd);
|
|
109
110
|
}
|
|
110
111
|
|
|
111
112
|
private async estimateSize() {
|
|
112
113
|
const sizes = await Promise.all(Array.from(this.epochs.values()).map(x => x.estimateSize()));
|
|
113
114
|
return {
|
|
114
|
-
mappingSize: this.config.
|
|
115
|
+
mappingSize: this.config.dataStoreMapSizeKb,
|
|
115
116
|
physicalFileSize: sizes.reduce((prev, curr) => prev + curr.physicalFileSize, 0),
|
|
116
117
|
numItems: sizes.reduce((prev, curr) => prev + curr.numItems, 0),
|
|
117
118
|
actualSize: sizes.reduce((prev, curr) => prev + curr.actualSize, 0),
|
|
@@ -137,13 +138,13 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
137
138
|
continue;
|
|
138
139
|
}
|
|
139
140
|
logger.info(
|
|
140
|
-
`Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.
|
|
141
|
+
`Loading broker database for epoch ${epochNumber} from ${fullDirectory} with map size ${config.dataStoreMapSizeKb}KB`,
|
|
141
142
|
);
|
|
142
143
|
const db = await openVersionedStoreAt(
|
|
143
144
|
fullDirectory,
|
|
144
145
|
SingleEpochDatabase.SCHEMA_VERSION,
|
|
145
146
|
config.l1Contracts.rollupAddress,
|
|
146
|
-
config.
|
|
147
|
+
config.dataStoreMapSizeKb,
|
|
147
148
|
);
|
|
148
149
|
const epochDb = new SingleEpochDatabase(db);
|
|
149
150
|
epochs.set(epochNumber, epochDb);
|
|
@@ -164,8 +165,8 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
|
|
167
|
-
async deleteAllProvingJobsOlderThanEpoch(epochNumber:
|
|
168
|
-
const oldEpochs = Array.from(this.epochs.keys()).filter(e => e < epochNumber);
|
|
168
|
+
async deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void> {
|
|
169
|
+
const oldEpochs = Array.from(this.epochs.keys()).filter(e => e < Number(epochNumber));
|
|
169
170
|
for (const old of oldEpochs) {
|
|
170
171
|
const db = this.epochs.get(old);
|
|
171
172
|
if (!db) {
|
|
@@ -196,19 +197,19 @@ export class KVBrokerDatabase implements ProvingBrokerDatabase {
|
|
|
196
197
|
return this.batchQueue.put([id, { status: 'fulfilled', value }], getEpochFromProvingJobId(id));
|
|
197
198
|
}
|
|
198
199
|
|
|
199
|
-
private async getEpochDatabase(epochNumber:
|
|
200
|
+
private async getEpochDatabase(epochNumber: EpochNumber): Promise<SingleEpochDatabase> {
|
|
200
201
|
let epochDb = this.epochs.get(epochNumber);
|
|
201
202
|
if (!epochDb) {
|
|
202
203
|
const newEpochDirectory = join(this.config.dataDirectory!, epochNumber.toString());
|
|
203
204
|
await mkdir(newEpochDirectory, { recursive: true });
|
|
204
205
|
this.logger.info(
|
|
205
|
-
`Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.
|
|
206
|
+
`Creating broker database for epoch ${epochNumber} at ${newEpochDirectory} with map size ${this.config.dataStoreMapSizeKb}`,
|
|
206
207
|
);
|
|
207
208
|
const db = await openVersionedStoreAt(
|
|
208
209
|
newEpochDirectory,
|
|
209
210
|
SingleEpochDatabase.SCHEMA_VERSION,
|
|
210
211
|
this.config.l1Contracts.rollupAddress,
|
|
211
|
-
this.config.
|
|
212
|
+
this.config.dataStoreMapSizeKb,
|
|
212
213
|
);
|
|
213
214
|
epochDb = new SingleEpochDatabase(db);
|
|
214
215
|
this.epochs.set(epochNumber, epochDb);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { ProofUri, ProvingJob, ProvingJobId, ProvingJobSettledResult } from '@aztec/stdlib/interfaces/server';
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -14,7 +15,7 @@ export interface ProvingBrokerDatabase {
|
|
|
14
15
|
* Deletes all proving jobs belonging to epochs older than the given epoch
|
|
15
16
|
* @param epochNumber - The epoch number beyond which jobs should be deleted
|
|
16
17
|
*/
|
|
17
|
-
deleteAllProvingJobsOlderThanEpoch(epochNumber:
|
|
18
|
+
deleteAllProvingJobsOlderThanEpoch(epochNumber: EpochNumber): Promise<void>;
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Returns an iterator over all saved proving jobs
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
2
3
|
import { AbortError } from '@aztec/foundation/error';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import type {
|
|
@@ -24,7 +25,7 @@ export class ProvingJobController {
|
|
|
24
25
|
constructor(
|
|
25
26
|
private jobId: ProvingJobId,
|
|
26
27
|
private inputs: ProvingJobInputs,
|
|
27
|
-
private epochNumber:
|
|
28
|
+
private epochNumber: EpochNumber,
|
|
28
29
|
private startedAt: number,
|
|
29
30
|
private circuitProver: ServerCircuitProver,
|
|
30
31
|
private onComplete: () => void,
|
|
@@ -128,54 +129,74 @@ export class ProvingJobController {
|
|
|
128
129
|
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
129
130
|
}
|
|
130
131
|
|
|
131
|
-
case ProvingRequestType.
|
|
132
|
-
return await this.circuitProver.
|
|
132
|
+
case ProvingRequestType.PUBLIC_CHONK_VERIFIER: {
|
|
133
|
+
return await this.circuitProver.getPublicChonkVerifierProof(inputs, signal, this.epochNumber);
|
|
133
134
|
}
|
|
134
135
|
|
|
135
|
-
case ProvingRequestType.
|
|
136
|
-
return await this.circuitProver.
|
|
136
|
+
case ProvingRequestType.PRIVATE_TX_BASE_ROLLUP: {
|
|
137
|
+
return await this.circuitProver.getPrivateTxBaseRollupProof(inputs, signal, this.epochNumber);
|
|
137
138
|
}
|
|
138
139
|
|
|
139
|
-
case ProvingRequestType.
|
|
140
|
-
return await this.circuitProver.
|
|
140
|
+
case ProvingRequestType.PUBLIC_TX_BASE_ROLLUP: {
|
|
141
|
+
return await this.circuitProver.getPublicTxBaseRollupProof(inputs, signal, this.epochNumber);
|
|
141
142
|
}
|
|
142
143
|
|
|
143
|
-
case ProvingRequestType.
|
|
144
|
-
return await this.circuitProver.
|
|
144
|
+
case ProvingRequestType.TX_MERGE_ROLLUP: {
|
|
145
|
+
return await this.circuitProver.getTxMergeRollupProof(inputs, signal, this.epochNumber);
|
|
145
146
|
}
|
|
146
147
|
|
|
147
|
-
case ProvingRequestType.
|
|
148
|
-
return await this.circuitProver.
|
|
148
|
+
case ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP: {
|
|
149
|
+
return await this.circuitProver.getBlockRootFirstRollupProof(inputs, signal, this.epochNumber);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP: {
|
|
153
|
+
return await this.circuitProver.getBlockRootSingleTxFirstRollupProof(inputs, signal, this.epochNumber);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
case ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP: {
|
|
157
|
+
return await this.circuitProver.getBlockRootEmptyTxFirstRollupProof(inputs, signal, this.epochNumber);
|
|
149
158
|
}
|
|
150
159
|
|
|
151
160
|
case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
|
|
152
161
|
return await this.circuitProver.getBlockRootRollupProof(inputs, signal, this.epochNumber);
|
|
153
162
|
}
|
|
154
163
|
|
|
155
|
-
case ProvingRequestType.
|
|
156
|
-
return await this.circuitProver.
|
|
164
|
+
case ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP: {
|
|
165
|
+
return await this.circuitProver.getBlockRootSingleTxRollupProof(inputs, signal, this.epochNumber);
|
|
157
166
|
}
|
|
158
167
|
|
|
159
168
|
case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
|
|
160
169
|
return await this.circuitProver.getBlockMergeRollupProof(inputs, signal, this.epochNumber);
|
|
161
170
|
}
|
|
162
171
|
|
|
172
|
+
case ProvingRequestType.CHECKPOINT_ROOT_ROLLUP: {
|
|
173
|
+
return await this.circuitProver.getCheckpointRootRollupProof(inputs, signal, this.epochNumber);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
case ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP: {
|
|
177
|
+
return await this.circuitProver.getCheckpointRootSingleBlockRollupProof(inputs, signal, this.epochNumber);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
case ProvingRequestType.CHECKPOINT_PADDING_ROLLUP: {
|
|
181
|
+
return await this.circuitProver.getCheckpointPaddingRollupProof(inputs, signal, this.epochNumber);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
case ProvingRequestType.CHECKPOINT_MERGE_ROLLUP: {
|
|
185
|
+
return await this.circuitProver.getCheckpointMergeRollupProof(inputs, signal, this.epochNumber);
|
|
186
|
+
}
|
|
187
|
+
|
|
163
188
|
case ProvingRequestType.ROOT_ROLLUP: {
|
|
164
189
|
return await this.circuitProver.getRootRollupProof(inputs, signal, this.epochNumber);
|
|
165
190
|
}
|
|
166
191
|
|
|
167
|
-
case ProvingRequestType.
|
|
192
|
+
case ProvingRequestType.PARITY_BASE: {
|
|
168
193
|
return await this.circuitProver.getBaseParityProof(inputs, signal, this.epochNumber);
|
|
169
194
|
}
|
|
170
195
|
|
|
171
|
-
case ProvingRequestType.
|
|
196
|
+
case ProvingRequestType.PARITY_ROOT: {
|
|
172
197
|
return await this.circuitProver.getRootParityProof(inputs, signal, this.epochNumber);
|
|
173
198
|
}
|
|
174
199
|
|
|
175
|
-
case ProvingRequestType.TUBE_PROOF: {
|
|
176
|
-
return await this.circuitProver.getTubeProof(inputs, signal, this.epochNumber);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
200
|
default: {
|
|
180
201
|
const _exhaustive: never = type;
|
|
181
202
|
return Promise.reject(new Error(`Invalid proof request type: ${type}`));
|