@aztec/prover-client 0.0.1-commit.7d4e6cd → 0.0.1-commit.8afd444
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/light/lightweight_checkpoint_builder.d.ts +11 -7
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +28 -11
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +2 -1
- package/dest/mocks/test_context.d.ts +3 -2
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +6 -1
- package/dest/orchestrator/block-building-helpers.d.ts +2 -2
- package/dest/orchestrator/block-building-helpers.js +1 -1
- package/dest/orchestrator/checkpoint-proving-state.d.ts +15 -2
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +34 -1
- package/dest/orchestrator/epoch-proving-state.d.ts +6 -5
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +35 -1
- package/dest/orchestrator/orchestrator.d.ts +18 -3
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +120 -78
- 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 +15 -10
- package/dest/proving_broker/broker_prover_facade.d.ts +4 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +3 -3
- package/dest/proving_broker/config.d.ts +13 -1
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +19 -2
- package/dest/proving_broker/proof_store/factory.d.ts +2 -5
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/factory.js +7 -30
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
- package/dest/proving_broker/proof_store/index.d.ts +2 -2
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -1
- package/dest/proving_broker/proving_agent.d.ts +4 -3
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +4 -4
- package/dest/proving_broker/proving_broker.d.ts +7 -4
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +29 -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_broker_instrumentation.js +11 -7
- package/dest/proving_broker/proving_job_controller.d.ts +4 -3
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +6 -3
- package/dest/proving_broker/rpc.d.ts +4 -2
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +8 -0
- 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 +3 -3
- package/package.json +16 -17
- package/src/light/lightweight_checkpoint_builder.ts +52 -12
- package/src/mocks/fixtures.ts +2 -1
- package/src/mocks/test_context.ts +5 -0
- package/src/orchestrator/block-building-helpers.ts +1 -1
- package/src/orchestrator/checkpoint-proving-state.ts +47 -1
- package/src/orchestrator/epoch-proving-state.ts +56 -8
- package/src/orchestrator/orchestrator.ts +124 -83
- package/src/prover-client/prover-client.ts +29 -14
- package/src/proving_broker/broker_prover_facade.ts +6 -3
- package/src/proving_broker/config.ts +22 -0
- package/src/proving_broker/proof_store/factory.ts +10 -32
- package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
- package/src/proving_broker/proof_store/index.ts +1 -1
- package/src/proving_broker/proving_agent.ts +5 -2
- package/src/proving_broker/proving_broker.ts +30 -1
- package/src/proving_broker/proving_broker_instrumentation.ts +10 -6
- package/src/proving_broker/proving_job_controller.ts +9 -3
- package/src/proving_broker/rpc.ts +14 -0
- package/dest/block-factory/index.d.ts +0 -2
- package/dest/block-factory/index.d.ts.map +0 -1
- package/dest/block-factory/index.js +0 -1
- package/dest/block-factory/light.d.ts +0 -38
- package/dest/block-factory/light.d.ts.map +0 -1
- package/dest/block-factory/light.js +0 -106
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
- package/src/block-factory/index.ts +0 -1
- package/src/block-factory/light.ts +0 -136
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
|
@@ -51,7 +51,8 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
51
51
|
*/ epochHeight;
|
|
52
52
|
maxEpochsToKeepResultsFor;
|
|
53
53
|
started;
|
|
54
|
-
|
|
54
|
+
debugReplayEnabled;
|
|
55
|
+
constructor(database, { proverBrokerJobTimeoutMs, proverBrokerPollIntervalMs, proverBrokerJobMaxRetries, proverBrokerMaxEpochsToKeepResultsFor, proverBrokerDebugReplayEnabled } = defaultProverBrokerConfig, client = getTelemetryClient(), logger = createLogger('prover-client:proving-broker')){
|
|
55
56
|
this.database = database;
|
|
56
57
|
this.logger = logger;
|
|
57
58
|
this.queues = {
|
|
@@ -104,6 +105,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
104
105
|
this.jobTimeoutMs = proverBrokerJobTimeoutMs;
|
|
105
106
|
this.maxRetries = proverBrokerJobMaxRetries;
|
|
106
107
|
this.maxEpochsToKeepResultsFor = proverBrokerMaxEpochsToKeepResultsFor;
|
|
108
|
+
this.debugReplayEnabled = proverBrokerDebugReplayEnabled ?? false;
|
|
107
109
|
}
|
|
108
110
|
measureQueueDepth;
|
|
109
111
|
countActiveJobs;
|
|
@@ -163,6 +165,32 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
163
165
|
reportProvingJobProgress(id, startedAt, filter) {
|
|
164
166
|
return Promise.resolve(this.#reportProvingJobProgress(id, startedAt, filter));
|
|
165
167
|
}
|
|
168
|
+
async replayProvingJob(jobId, type, epochNumber, inputsUri) {
|
|
169
|
+
if (!this.debugReplayEnabled) {
|
|
170
|
+
throw new Error('Debug replay not enabled. Set PROVER_BROKER_DEBUG_REPLAY_ENABLED=true');
|
|
171
|
+
}
|
|
172
|
+
this.logger.info(`Replaying proving job`, {
|
|
173
|
+
provingJobId: jobId,
|
|
174
|
+
epochNumber,
|
|
175
|
+
inputsUri
|
|
176
|
+
});
|
|
177
|
+
// Clear existing state and enqueue
|
|
178
|
+
this.cleanUpProvingJobState([
|
|
179
|
+
jobId
|
|
180
|
+
]);
|
|
181
|
+
const job = {
|
|
182
|
+
id: jobId,
|
|
183
|
+
type,
|
|
184
|
+
epochNumber,
|
|
185
|
+
inputsUri
|
|
186
|
+
};
|
|
187
|
+
this.jobsCache.set(jobId, job);
|
|
188
|
+
await this.database.addProvingJob(job);
|
|
189
|
+
this.enqueueJobInternal(job);
|
|
190
|
+
return {
|
|
191
|
+
status: 'in-queue'
|
|
192
|
+
};
|
|
193
|
+
}
|
|
166
194
|
async #enqueueProvingJob(job) {
|
|
167
195
|
// We return the job status at the start of this call
|
|
168
196
|
const jobStatus = this.#getProvingJobStatus(job.id);
|
|
@@ -26,4 +26,4 @@ export declare class ProvingBrokerInstrumentation {
|
|
|
26
26
|
recordJobDuration(proofType: ProvingRequestType, msOrTimer: Timer | number): void;
|
|
27
27
|
private observe;
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19icm9rZXJfaW5zdHJ1bWVudGF0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcHJvdmluZ19icm9rZXJfaW5zdHJ1bWVudGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFNTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxNQUFNLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLGtCQUFrQixLQUFLLE1BQU0sQ0FBQztBQUV4RSxxQkFBYSw0QkFBNEI7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBa0I7SUFDbkMsT0FBTyxDQUFDLFVBQVUsQ0FBa0I7SUFDcEMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFDcEMsT0FBTyxDQUFDLFVBQVUsQ0FBZ0I7SUFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBZ0I7SUFDakMsT0FBTyxDQUFDLE9BQU8sQ0FBWTtJQUMzQixPQUFPLENBQUMsV0FBVyxDQUFZO0lBQy9CLE9BQU8sQ0FBQyxXQUFXLENBQWdCO0lBRW5DLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLFNBQWtCLEVBeUIxRDtJQUVELGlCQUFpQixDQUFDLEVBQUUsRUFBRSxlQUFlLFFBRXBDO0lBRUQsaUJBQWlCLENBQUMsRUFBRSxFQUFFLGVBQWUsUUFFcEM7SUFFRCxlQUFlLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUk1QztJQUVELGVBQWUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLFFBSTVDO0lBRUQsY0FBYyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsUUFJM0M7SUFFRCxlQUFlLENBQUMsU0FBUyxFQUFFLGtCQUFrQixRQUk1QztJQUVELGFBQWEsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLFFBSTFDO0lBRUQsWUFBWSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsUUFJekM7SUFFRCxhQUFhLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxLQUFLLEdBQUcsTUFBTSxRQUtyRTtJQUVELGlCQUFpQixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUFHLE1BQU0sUUFLekU7SUFFRCxPQUFPLENBQUMsT0FBTztDQVdoQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_broker_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAML,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"proving_broker_instrumentation.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_broker_instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAML,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;AAExE,qBAAa,4BAA4B;IACvC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,WAAW,CAAgB;IAEnC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAkB,EAyB1D;IAED,iBAAiB,CAAC,EAAE,EAAE,eAAe,QAEpC;IAED,iBAAiB,CAAC,EAAE,EAAE,eAAe,QAEpC;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,cAAc,CAAC,SAAS,EAAE,kBAAkB,QAI3C;IAED,eAAe,CAAC,SAAS,EAAE,kBAAkB,QAI5C;IAED,aAAa,CAAC,SAAS,EAAE,kBAAkB,QAI1C;IAED,YAAY,CAAC,SAAS,EAAE,kBAAkB,QAIzC;IAED,aAAa,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKrE;IAED,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,GAAG,MAAM,QAKzE;IAED,OAAO,CAAC,OAAO;CAWhB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
|
-
import { Attributes, Metrics } from '@aztec/telemetry-client';
|
|
2
|
+
import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
|
|
3
3
|
export class ProvingBrokerInstrumentation {
|
|
4
4
|
queueSize;
|
|
5
5
|
activeJobs;
|
|
@@ -15,12 +15,16 @@ export class ProvingBrokerInstrumentation {
|
|
|
15
15
|
const meter = client.getMeter(name);
|
|
16
16
|
this.queueSize = meter.createObservableGauge(Metrics.PROVING_QUEUE_SIZE);
|
|
17
17
|
this.activeJobs = meter.createObservableGauge(Metrics.PROVING_QUEUE_ACTIVE_JOBS);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
18
|
+
const provingJobTypes = Object.values(ProvingRequestType).filter((v)=>typeof v === 'string');
|
|
19
|
+
const provingJobAttrs = {
|
|
20
|
+
[Attributes.PROVING_JOB_TYPE]: provingJobTypes
|
|
21
|
+
};
|
|
22
|
+
this.resolvedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RESOLVED_JOBS, provingJobAttrs);
|
|
23
|
+
this.rejectedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_REJECTED_JOBS, provingJobAttrs);
|
|
24
|
+
this.retriedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_RETRIED_JOBS, provingJobAttrs);
|
|
25
|
+
this.timedOutJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_TIMED_OUT_JOBS, provingJobAttrs);
|
|
26
|
+
this.cachedJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_CACHED_JOBS, provingJobAttrs);
|
|
27
|
+
this.totalJobs = createUpDownCounterWithDefault(meter, Metrics.PROVING_QUEUE_TOTAL_JOBS, provingJobAttrs);
|
|
24
28
|
this.jobWait = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_WAIT);
|
|
25
29
|
this.jobDuration = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_DURATION);
|
|
26
30
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
2
3
|
import type { ProvingJobId, ProvingJobInputs, ProvingJobResultsMap, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
4
5
|
export declare enum ProvingJobControllerStatus {
|
|
@@ -13,12 +14,12 @@ export declare class ProvingJobController {
|
|
|
13
14
|
private startedAt;
|
|
14
15
|
private circuitProver;
|
|
15
16
|
private onComplete;
|
|
16
|
-
private log;
|
|
17
17
|
private status;
|
|
18
18
|
private promise?;
|
|
19
19
|
private abortController;
|
|
20
20
|
private result?;
|
|
21
|
-
|
|
21
|
+
private log;
|
|
22
|
+
constructor(jobId: ProvingJobId, inputs: ProvingJobInputs, epochNumber: EpochNumber, startedAt: number, circuitProver: ServerCircuitProver, onComplete: () => void, bindings?: LoggerBindings);
|
|
22
23
|
start(): void;
|
|
23
24
|
getStatus(): ProvingJobControllerStatus;
|
|
24
25
|
getResult(): ProvingJobResultsMap[ProvingRequestType] | Error | undefined;
|
|
@@ -30,4 +31,4 @@ export declare class ProvingJobController {
|
|
|
30
31
|
private run;
|
|
31
32
|
private generateProof;
|
|
32
33
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZ19qb2JfY29udHJvbGxlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpbmdfYnJva2VyL3Byb3Zpbmdfam9iX2NvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzlELE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFDVixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDcEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxvQkFBWSwwQkFBMEI7SUFDcEMsSUFBSSxTQUFTO0lBQ2IsT0FBTyxZQUFZO0lBQ25CLElBQUksU0FBUztDQUNkO0FBRUQscUJBQWEsb0JBQW9CO0lBUTdCLE9BQU8sQ0FBQyxLQUFLO0lBQ2IsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsV0FBVztJQUNuQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsVUFBVTtJQVpwQixPQUFPLENBQUMsTUFBTSxDQUErRDtJQUM3RSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQWdCO0lBQ2hDLE9BQU8sQ0FBQyxlQUFlLENBQXlCO0lBQ2hELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBbUQ7SUFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUVwQixZQUNVLEtBQUssRUFBRSxZQUFZLEVBQ25CLE1BQU0sRUFBRSxnQkFBZ0IsRUFDeEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsU0FBUyxFQUFFLE1BQU0sRUFDakIsYUFBYSxFQUFFLG1CQUFtQixFQUNsQyxVQUFVLEVBQUUsTUFBTSxJQUFJLEVBQzlCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFNMUI7SUFFTSxLQUFLLElBQUksSUFBSSxDQWlCbkI7SUFFTSxTQUFTLElBQUksMEJBQTBCLENBRTdDO0lBRU0sU0FBUyxJQUFJLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBSyxHQUFHLFNBQVMsQ0FFL0U7SUFFTSxLQUFLLElBQUksSUFBSSxDQWFuQjtJQUVNLFFBQVEsSUFBSSxZQUFZLENBRTlCO0lBRU0sWUFBWSxJQUFJLGtCQUFrQixDQUV4QztJQUVNLFlBQVksSUFBSSxNQUFNLENBRTVCO0lBRU0sZ0JBQWdCLElBQUksTUFBTSxDQUVoQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBNEJUO1lBRVksYUFBYTtDQWtGNUIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving_job_controller.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_job_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"proving_job_controller.d.ts","sourceRoot":"","sources":["../../src/proving_broker/proving_job_controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,oBAAY,0BAA0B;IACpC,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,UAAU;IAZpB,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,MAAM,CAAC,CAAmD;IAClE,OAAO,CAAC,GAAG,CAAS;IAEpB,YACU,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,IAAI,EAC9B,QAAQ,CAAC,EAAE,cAAc,EAM1B;IAEM,KAAK,IAAI,IAAI,CAiBnB;IAEM,SAAS,IAAI,0BAA0B,CAE7C;IAEM,SAAS,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,GAAG,KAAK,GAAG,SAAS,CAE/E;IAEM,KAAK,IAAI,IAAI,CAanB;IAEM,QAAQ,IAAI,YAAY,CAE9B;IAEM,YAAY,IAAI,kBAAkB,CAExC;IAEM,YAAY,IAAI,MAAM,CAE5B;IAEM,gBAAgB,IAAI,MAAM,CAEhC;IAED,OAAO,CAAC,GAAG,CA4BT;YAEY,aAAa;CAkF5B"}
|
|
@@ -15,19 +15,18 @@ export class ProvingJobController {
|
|
|
15
15
|
startedAt;
|
|
16
16
|
circuitProver;
|
|
17
17
|
onComplete;
|
|
18
|
-
log;
|
|
19
18
|
status;
|
|
20
19
|
promise;
|
|
21
20
|
abortController;
|
|
22
21
|
result;
|
|
23
|
-
|
|
22
|
+
log;
|
|
23
|
+
constructor(jobId, inputs, epochNumber, startedAt, circuitProver, onComplete, bindings){
|
|
24
24
|
this.jobId = jobId;
|
|
25
25
|
this.inputs = inputs;
|
|
26
26
|
this.epochNumber = epochNumber;
|
|
27
27
|
this.startedAt = startedAt;
|
|
28
28
|
this.circuitProver = circuitProver;
|
|
29
29
|
this.onComplete = onComplete;
|
|
30
|
-
this.log = log;
|
|
31
30
|
this.status = "idle";
|
|
32
31
|
this.abortController = new AbortController();
|
|
33
32
|
this.run = async ()=>{
|
|
@@ -61,6 +60,10 @@ export class ProvingJobController {
|
|
|
61
60
|
});
|
|
62
61
|
}
|
|
63
62
|
};
|
|
63
|
+
this.log = createLogger('prover-client:proving-agent:job-controller', {
|
|
64
|
+
instanceId: randomBytes(4).toString('hex'),
|
|
65
|
+
...bindings
|
|
66
|
+
});
|
|
64
67
|
}
|
|
65
68
|
start() {
|
|
66
69
|
if (this.status !== "idle") {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { type ProvingJobBroker, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
1
|
+
import { type ProvingJobBroker, type ProvingJobBrokerDebug, type ProvingJobConsumer, type ProvingJobProducer } from '@aztec/stdlib/interfaces/server';
|
|
2
2
|
import { type ApiSchemaFor } from '@aztec/stdlib/schemas';
|
|
3
3
|
import { type ComponentsVersions } from '@aztec/stdlib/versioning';
|
|
4
4
|
export declare const ProvingJobProducerSchema: ApiSchemaFor<ProvingJobProducer>;
|
|
5
5
|
export declare const ProvingJobConsumerSchema: ApiSchemaFor<ProvingJobConsumer>;
|
|
6
6
|
export declare const ProvingJobBrokerSchema: ApiSchemaFor<ProvingJobBroker>;
|
|
7
|
+
export declare const ProvingJobBrokerDebugSchema: ApiSchemaFor<ProvingJobBrokerDebug>;
|
|
8
|
+
export declare const ProvingJobBrokerSchemaWithDebug: ApiSchemaFor<ProvingJobBroker & ProvingJobBrokerDebug>;
|
|
7
9
|
export declare function createProvingJobBrokerClient(url: string, versions: Partial<ComponentsVersions>, fetch?: (host: string, body: unknown, extraHeaders?: Record<string, string> | undefined, noRetry?: boolean | undefined) => Promise<{
|
|
8
10
|
response: any;
|
|
9
11
|
headers: {
|
|
@@ -22,4 +24,4 @@ export declare function createProvingJobConsumerClient(url: string, versions: Pa
|
|
|
22
24
|
get: (header: string) => string | null | undefined;
|
|
23
25
|
};
|
|
24
26
|
}>): ProvingJobConsumer;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmluZ19icm9rZXIvcnBjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFJTCxLQUFLLGdCQUFnQixFQUNyQixLQUFLLHFCQUFxQixFQUMxQixLQUFLLGtCQUFrQixFQUV2QixLQUFLLGtCQUFrQixFQUV4QixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFnQyxNQUFNLDBCQUEwQixDQUFDO0FBY2pHLGVBQU8sTUFBTSx3QkFBd0IsRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBS3JFLENBQUM7QUFFRixlQUFPLE1BQU0sd0JBQXdCLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQWNyRSxDQUFDO0FBRUYsZUFBTyxNQUFNLHNCQUFzQixFQUFFLFlBQVksQ0FBQyxnQkFBZ0IsQ0FHakUsQ0FBQztBQUVGLGVBQU8sTUFBTSwyQkFBMkIsRUFBRSxZQUFZLENBQUMscUJBQXFCLENBSzNFLENBQUM7QUFFRixlQUFPLE1BQU0sK0JBQStCLEVBQUUsWUFBWSxDQUFDLGdCQUFnQixHQUFHLHFCQUFxQixDQUdsRyxDQUFDO0FBRUYsd0JBQWdCLDRCQUE0QixDQUMxQyxHQUFHLEVBQUUsTUFBTSxFQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFDckMsS0FBSzs7Ozs7RUFBb0MsR0FDeEMsZ0JBQWdCLENBTWxCO0FBRUQsd0JBQWdCLDhCQUE4QixDQUM1QyxHQUFHLEVBQUUsTUFBTSxFQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFDckMsS0FBSzs7Ozs7RUFBb0MsR0FDeEMsa0JBQWtCLENBTXBCO0FBRUQsd0JBQWdCLDhCQUE4QixDQUM1QyxHQUFHLEVBQUUsTUFBTSxFQUNYLFFBQVEsRUFBRSxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFDckMsS0FBSzs7Ozs7RUFBb0MsR0FDeEMsa0JBQWtCLENBTXBCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/proving_broker/rpc.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EAExB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,YAAY,EAAY,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAgC,MAAM,0BAA0B,CAAC;AAcjG,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAKrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,kBAAkB,CAcrE,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,YAAY,CAAC,gBAAgB,CAGjE,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,qBAAqB,CAK3E,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,YAAY,CAAC,gBAAgB,GAAG,qBAAqB,CAGlG,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,gBAAgB,CAMlB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,kBAAkB,CAMpB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACrC,KAAK;;;;;EAAoC,GACxC,kBAAkB,CAMpB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EpochNumberSchema } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { createSafeJsonRpcClient } from '@aztec/foundation/json-rpc/client';
|
|
2
3
|
import { ProofUri, ProvingJob, ProvingJobId, ProvingJobStatus } from '@aztec/stdlib/interfaces/server';
|
|
3
4
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
@@ -28,6 +29,13 @@ export const ProvingJobBrokerSchema = {
|
|
|
28
29
|
...ProvingJobConsumerSchema,
|
|
29
30
|
...ProvingJobProducerSchema
|
|
30
31
|
};
|
|
32
|
+
export const ProvingJobBrokerDebugSchema = {
|
|
33
|
+
replayProvingJob: z.function().args(ProvingJobId, z.nativeEnum(ProvingRequestType), EpochNumberSchema, ProofUri).returns(ProvingJobStatus)
|
|
34
|
+
};
|
|
35
|
+
export const ProvingJobBrokerSchemaWithDebug = {
|
|
36
|
+
...ProvingJobBrokerSchema,
|
|
37
|
+
...ProvingJobBrokerDebugSchema
|
|
38
|
+
};
|
|
31
39
|
export function createProvingJobBrokerClient(url, versions, fetch = makeTracedFetch([
|
|
32
40
|
1,
|
|
33
41
|
2,
|
|
@@ -2,8 +2,8 @@ import type { ProvingJobId } from '@aztec/stdlib/interfaces/server';
|
|
|
2
2
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
3
3
|
export declare class MockProofStore {
|
|
4
4
|
private mockCounter;
|
|
5
|
-
private readonly bucketName
|
|
6
|
-
private readonly basePath
|
|
5
|
+
private readonly bucketName;
|
|
6
|
+
private readonly basePath;
|
|
7
7
|
saveProofInput(jobId: ProvingJobId, type: ProvingRequestType): Promise<string>;
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja19wcm9vZl9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvbW9ja19wcm9vZl9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUcxRCxxQkFBYSxjQUFjO0lBQ3pCLE9BQU8sQ0FBQyxXQUFXLENBQUs7SUFDeEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQThCO0lBQ3pELE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFrQjtJQUUzQyxjQUFjLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUc3RTtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_proof_store.d.ts","sourceRoot":"","sources":["../../src/test/mock_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"mock_proof_store.d.ts","sourceRoot":"","sources":["../../src/test/mock_proof_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAE3C,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7E;CACF"}
|
|
@@ -20,8 +20,8 @@ export declare class TestBroker implements ProvingJobProducer {
|
|
|
20
20
|
export declare class MockProver implements ServerCircuitProver {
|
|
21
21
|
constructor();
|
|
22
22
|
getAvmProof(_inputs: AvmCircuitInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/proofs").RecursiveProof<16200>>;
|
|
23
|
-
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs,
|
|
24
|
-
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs,
|
|
23
|
+
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 449>>;
|
|
24
|
+
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 449>>;
|
|
25
25
|
getPublicChonkVerifierProof(_inputs: PublicChonkVerifierPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
26
26
|
getPrivateTxBaseRollupProof(_baseRollupInput: PrivateTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
27
27
|
getPublicTxBaseRollupProof(_inputs: PublicTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
@@ -31,7 +31,7 @@ export declare class MockProver implements ServerCircuitProver {
|
|
|
31
31
|
getBlockRootEmptyTxFirstRollupProof(_input: BlockRootEmptyTxFirstRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
32
32
|
getBlockRootRollupProof(_input: BlockRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
33
33
|
getBlockRootSingleTxRollupProof(_input: BlockRootSingleTxRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
34
|
-
getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs,
|
|
34
|
+
getBlockMergeRollupProof(_input: BlockMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, 519>>;
|
|
35
35
|
getCheckpointRootRollupProof(_input: CheckpointRootRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
36
36
|
getCheckpointRootSingleBlockRollupProof(_input: CheckpointRootSingleBlockRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
37
37
|
getCheckpointMergeRollupProof(_input: CheckpointMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.8afd444",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
|
-
"./block-factory": "./dest/block-factory/index.js",
|
|
8
7
|
"./broker": "./dest/proving_broker/index.js",
|
|
9
8
|
"./broker/config": "./dest/proving_broker/config.js",
|
|
10
9
|
"./orchestrator": "./dest/orchestrator/index.js",
|
|
@@ -69,19 +68,19 @@
|
|
|
69
68
|
]
|
|
70
69
|
},
|
|
71
70
|
"dependencies": {
|
|
72
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
73
|
-
"@aztec/blob-lib": "0.0.1-commit.
|
|
74
|
-
"@aztec/constants": "0.0.1-commit.
|
|
75
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
76
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
77
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
78
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
79
|
-
"@aztec/noir-types": "0.0.1-commit.
|
|
80
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
81
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
82
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
83
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
84
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
71
|
+
"@aztec/bb-prover": "0.0.1-commit.8afd444",
|
|
72
|
+
"@aztec/blob-lib": "0.0.1-commit.8afd444",
|
|
73
|
+
"@aztec/constants": "0.0.1-commit.8afd444",
|
|
74
|
+
"@aztec/ethereum": "0.0.1-commit.8afd444",
|
|
75
|
+
"@aztec/foundation": "0.0.1-commit.8afd444",
|
|
76
|
+
"@aztec/kv-store": "0.0.1-commit.8afd444",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.8afd444",
|
|
78
|
+
"@aztec/noir-types": "0.0.1-commit.8afd444",
|
|
79
|
+
"@aztec/protocol-contracts": "0.0.1-commit.8afd444",
|
|
80
|
+
"@aztec/simulator": "0.0.1-commit.8afd444",
|
|
81
|
+
"@aztec/stdlib": "0.0.1-commit.8afd444",
|
|
82
|
+
"@aztec/telemetry-client": "0.0.1-commit.8afd444",
|
|
83
|
+
"@aztec/world-state": "0.0.1-commit.8afd444",
|
|
85
84
|
"@google-cloud/storage": "^7.15.0",
|
|
86
85
|
"@iarna/toml": "^2.2.5",
|
|
87
86
|
"commander": "^12.1.0",
|
|
@@ -91,12 +90,12 @@
|
|
|
91
90
|
"zod": "^3.23.8"
|
|
92
91
|
},
|
|
93
92
|
"devDependencies": {
|
|
94
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
93
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.8afd444",
|
|
95
94
|
"@jest/globals": "^30.0.0",
|
|
96
95
|
"@types/jest": "^30.0.0",
|
|
97
96
|
"@types/node": "^22.15.17",
|
|
98
97
|
"@types/source-map-support": "^0.5.10",
|
|
99
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
98
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
100
99
|
"get-port": "^7.1.0",
|
|
101
100
|
"jest": "^30.0.0",
|
|
102
101
|
"jest-mock-extended": "^4.0.0",
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { SpongeBlob, computeBlobsHashFromBlobs, encodeCheckpointEndMarker, getBlobsPerL1Block } from '@aztec/blob-lib';
|
|
2
2
|
import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
|
|
3
|
-
import type
|
|
3
|
+
import { type CheckpointNumber, IndexWithinCheckpoint } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
-
import {
|
|
6
|
+
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
7
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
8
8
|
import { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
9
9
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
accumulateCheckpointOutHashes,
|
|
12
|
+
computeCheckpointOutHash,
|
|
13
|
+
computeInHashFromL1ToL2Messages,
|
|
14
|
+
} from '@aztec/stdlib/messaging';
|
|
11
15
|
import { CheckpointHeader, computeBlockHeadersHash } from '@aztec/stdlib/rollup';
|
|
12
16
|
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
13
17
|
import {
|
|
@@ -30,19 +34,25 @@ import {
|
|
|
30
34
|
* Finally completes the checkpoint by computing its header.
|
|
31
35
|
*/
|
|
32
36
|
export class LightweightCheckpointBuilder {
|
|
33
|
-
private readonly logger
|
|
37
|
+
private readonly logger: Logger;
|
|
34
38
|
|
|
35
39
|
private lastArchives: AppendOnlyTreeSnapshot[] = [];
|
|
36
40
|
private spongeBlob: SpongeBlob;
|
|
37
|
-
private blocks:
|
|
41
|
+
private blocks: L2Block[] = [];
|
|
38
42
|
private blobFields: Fr[] = [];
|
|
39
43
|
|
|
40
44
|
constructor(
|
|
41
45
|
public readonly checkpointNumber: CheckpointNumber,
|
|
42
46
|
public readonly constants: CheckpointGlobalVariables,
|
|
43
47
|
public readonly l1ToL2Messages: Fr[],
|
|
48
|
+
private readonly previousCheckpointOutHashes: Fr[],
|
|
44
49
|
public readonly db: MerkleTreeWriteOperations,
|
|
50
|
+
bindings?: LoggerBindings,
|
|
45
51
|
) {
|
|
52
|
+
this.logger = createLogger('checkpoint-builder', {
|
|
53
|
+
...bindings,
|
|
54
|
+
instanceId: `checkpoint-${checkpointNumber}`,
|
|
55
|
+
});
|
|
46
56
|
this.spongeBlob = SpongeBlob.init();
|
|
47
57
|
this.logger.debug('Starting new checkpoint', { constants, l1ToL2Messages });
|
|
48
58
|
}
|
|
@@ -51,7 +61,9 @@ export class LightweightCheckpointBuilder {
|
|
|
51
61
|
checkpointNumber: CheckpointNumber,
|
|
52
62
|
constants: CheckpointGlobalVariables,
|
|
53
63
|
l1ToL2Messages: Fr[],
|
|
64
|
+
previousCheckpointOutHashes: Fr[],
|
|
54
65
|
db: MerkleTreeWriteOperations,
|
|
66
|
+
bindings?: LoggerBindings,
|
|
55
67
|
): Promise<LightweightCheckpointBuilder> {
|
|
56
68
|
// Insert l1-to-l2 messages into the tree.
|
|
57
69
|
await db.appendLeaves(
|
|
@@ -59,7 +71,14 @@ export class LightweightCheckpointBuilder {
|
|
|
59
71
|
padArrayEnd<Fr, number>(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
|
|
60
72
|
);
|
|
61
73
|
|
|
62
|
-
return new LightweightCheckpointBuilder(
|
|
74
|
+
return new LightweightCheckpointBuilder(
|
|
75
|
+
checkpointNumber,
|
|
76
|
+
constants,
|
|
77
|
+
l1ToL2Messages,
|
|
78
|
+
previousCheckpointOutHashes,
|
|
79
|
+
db,
|
|
80
|
+
bindings,
|
|
81
|
+
);
|
|
63
82
|
}
|
|
64
83
|
|
|
65
84
|
/**
|
|
@@ -72,10 +91,19 @@ export class LightweightCheckpointBuilder {
|
|
|
72
91
|
checkpointNumber: CheckpointNumber,
|
|
73
92
|
constants: CheckpointGlobalVariables,
|
|
74
93
|
l1ToL2Messages: Fr[],
|
|
94
|
+
previousCheckpointOutHashes: Fr[],
|
|
75
95
|
db: MerkleTreeWriteOperations,
|
|
76
|
-
existingBlocks:
|
|
96
|
+
existingBlocks: L2Block[],
|
|
97
|
+
bindings?: LoggerBindings,
|
|
77
98
|
): Promise<LightweightCheckpointBuilder> {
|
|
78
|
-
const builder = new LightweightCheckpointBuilder(
|
|
99
|
+
const builder = new LightweightCheckpointBuilder(
|
|
100
|
+
checkpointNumber,
|
|
101
|
+
constants,
|
|
102
|
+
l1ToL2Messages,
|
|
103
|
+
previousCheckpointOutHashes,
|
|
104
|
+
db,
|
|
105
|
+
bindings,
|
|
106
|
+
);
|
|
79
107
|
|
|
80
108
|
builder.logger.debug('Resuming checkpoint from existing blocks', {
|
|
81
109
|
checkpointNumber,
|
|
@@ -115,6 +143,11 @@ export class LightweightCheckpointBuilder {
|
|
|
115
143
|
return builder;
|
|
116
144
|
}
|
|
117
145
|
|
|
146
|
+
/** Returns how many blocks have been added to this checkpoint so far */
|
|
147
|
+
public getBlockCount() {
|
|
148
|
+
return this.blocks.length;
|
|
149
|
+
}
|
|
150
|
+
|
|
118
151
|
/**
|
|
119
152
|
* Adds a new block to the checkpoint. The tx effects must have already been inserted into the db if
|
|
120
153
|
* this is called after tx processing, if that's not the case, then set `insertTxsEffects` to true.
|
|
@@ -123,7 +156,7 @@ export class LightweightCheckpointBuilder {
|
|
|
123
156
|
globalVariables: GlobalVariables,
|
|
124
157
|
txs: ProcessedTx[],
|
|
125
158
|
opts: { insertTxsEffects?: boolean; expectedEndState?: StateReference } = {},
|
|
126
|
-
): Promise<
|
|
159
|
+
): Promise<L2Block> {
|
|
127
160
|
const isFirstBlock = this.blocks.length === 0;
|
|
128
161
|
|
|
129
162
|
// Empty blocks are only allowed as the first block in a checkpoint
|
|
@@ -172,8 +205,8 @@ export class LightweightCheckpointBuilder {
|
|
|
172
205
|
const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
|
|
173
206
|
this.lastArchives.push(newArchive);
|
|
174
207
|
|
|
175
|
-
const indexWithinCheckpoint = this.blocks.length;
|
|
176
|
-
const block = new
|
|
208
|
+
const indexWithinCheckpoint = IndexWithinCheckpoint(this.blocks.length);
|
|
209
|
+
const block = new L2Block(newArchive, header, body, this.checkpointNumber, indexWithinCheckpoint);
|
|
177
210
|
this.blocks.push(block);
|
|
178
211
|
|
|
179
212
|
await this.spongeBlob.absorb(blockBlobFields);
|
|
@@ -210,6 +243,10 @@ export class LightweightCheckpointBuilder {
|
|
|
210
243
|
const inHash = computeInHashFromL1ToL2Messages(this.l1ToL2Messages);
|
|
211
244
|
|
|
212
245
|
const { slotNumber, coinbase, feeRecipient, gasFees } = this.constants;
|
|
246
|
+
const checkpointOutHash = computeCheckpointOutHash(
|
|
247
|
+
blocks.map(block => block.body.txEffects.map(tx => tx.l2ToL1Msgs)),
|
|
248
|
+
);
|
|
249
|
+
const epochOutHash = accumulateCheckpointOutHashes([...this.previousCheckpointOutHashes, checkpointOutHash]);
|
|
213
250
|
|
|
214
251
|
// TODO(palla/mbps): Should we source this from the constants instead?
|
|
215
252
|
// timestamp of a checkpoint is the timestamp of the last block in the checkpoint.
|
|
@@ -221,6 +258,7 @@ export class LightweightCheckpointBuilder {
|
|
|
221
258
|
lastArchiveRoot: this.lastArchives[0].root,
|
|
222
259
|
blobsHash,
|
|
223
260
|
inHash,
|
|
261
|
+
epochOutHash,
|
|
224
262
|
blockHeadersHash,
|
|
225
263
|
slotNumber,
|
|
226
264
|
timestamp,
|
|
@@ -238,7 +276,9 @@ export class LightweightCheckpointBuilder {
|
|
|
238
276
|
this.checkpointNumber,
|
|
239
277
|
this.constants,
|
|
240
278
|
[...this.l1ToL2Messages],
|
|
279
|
+
[...this.previousCheckpointOutHashes],
|
|
241
280
|
this.db,
|
|
281
|
+
this.logger.getBindings(),
|
|
242
282
|
);
|
|
243
283
|
clone.lastArchives = [...this.lastArchives];
|
|
244
284
|
clone.spongeBlob = this.spongeBlob.clone();
|
package/src/mocks/fixtures.ts
CHANGED
|
@@ -75,7 +75,8 @@ export async function getSimulator(
|
|
|
75
75
|
logger?.info(
|
|
76
76
|
`Using native ACVM at ${config.acvmBinaryPath} and working directory ${config.acvmWorkingDirectory}`,
|
|
77
77
|
);
|
|
78
|
-
|
|
78
|
+
const acvmLogger = logger?.createChild('acvm-native');
|
|
79
|
+
return new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath, undefined, acvmLogger);
|
|
79
80
|
} catch {
|
|
80
81
|
logger?.warn(`Failed to access ACVM at ${config.acvmBinaryPath}, falling back to WASM`);
|
|
81
82
|
}
|
|
@@ -44,6 +44,7 @@ import { getEnvironmentConfig, getSimulator, makeCheckpointConstants, makeGlobal
|
|
|
44
44
|
export class TestContext {
|
|
45
45
|
private headers: Map<number, BlockHeader> = new Map();
|
|
46
46
|
private checkpoints: Checkpoint[] = [];
|
|
47
|
+
private checkpointOutHashes: Fr[] = [];
|
|
47
48
|
private nextCheckpointIndex = 0;
|
|
48
49
|
private nextCheckpointNumber = CheckpointNumber(1);
|
|
49
50
|
private nextBlockNumber = 1;
|
|
@@ -151,6 +152,7 @@ export class TestContext {
|
|
|
151
152
|
|
|
152
153
|
public startNewEpoch() {
|
|
153
154
|
this.checkpoints = [];
|
|
155
|
+
this.checkpointOutHashes = [];
|
|
154
156
|
this.nextCheckpointIndex = 0;
|
|
155
157
|
this.epochNumber++;
|
|
156
158
|
}
|
|
@@ -245,10 +247,12 @@ export class TestContext {
|
|
|
245
247
|
});
|
|
246
248
|
|
|
247
249
|
const cleanFork = await this.worldState.fork();
|
|
250
|
+
const previousCheckpointOutHashes = this.checkpointOutHashes;
|
|
248
251
|
const builder = await LightweightCheckpointBuilder.startNewCheckpoint(
|
|
249
252
|
checkpointNumber,
|
|
250
253
|
constants,
|
|
251
254
|
l1ToL2Messages,
|
|
255
|
+
previousCheckpointOutHashes,
|
|
252
256
|
cleanFork,
|
|
253
257
|
);
|
|
254
258
|
|
|
@@ -274,6 +278,7 @@ export class TestContext {
|
|
|
274
278
|
|
|
275
279
|
const checkpoint = await builder.completeCheckpoint();
|
|
276
280
|
this.checkpoints.push(checkpoint);
|
|
281
|
+
this.checkpointOutHashes.push(checkpoint.getCheckpointOutHash());
|
|
277
282
|
|
|
278
283
|
return {
|
|
279
284
|
constants,
|
|
@@ -99,7 +99,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
99
99
|
|
|
100
100
|
const blockHash = await tx.data.constants.anchorBlockHeader.hash();
|
|
101
101
|
const anchorBlockArchiveSiblingPath = (
|
|
102
|
-
await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)
|
|
102
|
+
await getMembershipWitnessFor(blockHash.toFr(), MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)
|
|
103
103
|
).siblingPath;
|
|
104
104
|
|
|
105
105
|
const contractClassLogsFields = makeTuple(
|