@aztec/prover-client 0.47.1 → 0.49.2
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/config.d.ts +2 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +23 -30
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +11 -7
- package/dest/mocks/test_context.d.ts +1 -1
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +5 -23
- package/dest/orchestrator/block-building-helpers.d.ts +3 -3
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +6 -5
- package/dest/orchestrator/index.d.ts +2 -0
- package/dest/orchestrator/index.d.ts.map +1 -0
- package/dest/orchestrator/index.js +2 -0
- package/dest/orchestrator/orchestrator.d.ts +12 -7
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +115 -89
- package/dest/orchestrator/orchestrator_metrics.d.ts +8 -0
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -0
- package/dest/orchestrator/orchestrator_metrics.js +19 -0
- package/dest/orchestrator/proving-state.d.ts +2 -0
- package/dest/orchestrator/proving-state.d.ts.map +1 -1
- package/dest/orchestrator/proving-state.js +5 -1
- package/dest/orchestrator/tx-proving-state.d.ts +3 -2
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +26 -8
- package/dest/prover-agent/memory-proving-queue.d.ts +15 -13
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +37 -55
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +24 -7
- package/dest/prover-agent/queue_metrics.d.ts +10 -0
- package/dest/prover-agent/queue_metrics.d.ts.map +1 -0
- package/dest/prover-agent/queue_metrics.js +23 -0
- package/dest/prover-agent/rpc.d.ts.map +1 -1
- package/dest/prover-agent/rpc.js +4 -2
- package/dest/tx-prover/factory.d.ts +1 -3
- package/dest/tx-prover/factory.d.ts.map +1 -1
- package/dest/tx-prover/factory.js +3 -3
- package/dest/tx-prover/tx-prover.d.ts +8 -33
- package/dest/tx-prover/tx-prover.d.ts.map +1 -1
- package/dest/tx-prover/tx-prover.js +18 -46
- package/package.json +12 -11
- package/src/config.ts +23 -49
- package/src/mocks/fixtures.ts +14 -4
- package/src/mocks/test_context.ts +5 -25
- package/src/orchestrator/block-building-helpers.ts +6 -5
- package/src/orchestrator/index.ts +1 -0
- package/src/orchestrator/orchestrator.ts +199 -105
- package/src/orchestrator/orchestrator_metrics.ts +32 -0
- package/src/orchestrator/proving-state.ts +5 -0
- package/src/orchestrator/tx-proving-state.ts +33 -7
- package/src/prover-agent/memory-proving-queue.ts +54 -70
- package/src/prover-agent/prover-agent.ts +35 -6
- package/src/prover-agent/queue_metrics.ts +29 -0
- package/src/prover-agent/rpc.ts +3 -0
- package/src/tx-prover/factory.ts +2 -9
- package/src/tx-prover/tx-prover.ts +21 -64
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ProvingRequestType } from '@aztec/circuit-types';
|
|
2
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
+
export declare class ProvingQueueMetrics {
|
|
4
|
+
private jobSize;
|
|
5
|
+
private queueSize;
|
|
6
|
+
constructor(client: TelemetryClient, name?: string);
|
|
7
|
+
recordNewJob(type: ProvingRequestType, size: number): void;
|
|
8
|
+
recordQueueSize(size: number): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=queue_metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue_metrics.d.ts","sourceRoot":"","sources":["../../src/prover-agent/queue_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAmD,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEhH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,SAAS,CAAQ;gBAEb,MAAM,EAAE,eAAe,EAAE,IAAI,SAAwB;IAYjE,YAAY,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM;IAMnD,eAAe,CAAC,IAAI,EAAE,MAAM;CAG7B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ProvingRequestType } from '@aztec/circuit-types';
|
|
2
|
+
import { Attributes, Metrics } from '@aztec/telemetry-client';
|
|
3
|
+
export class ProvingQueueMetrics {
|
|
4
|
+
constructor(client, name = 'ProvingQueueMetrics') {
|
|
5
|
+
const meter = client.getMeter(name);
|
|
6
|
+
this.jobSize = meter.createHistogram(Metrics.PROVING_QUEUE_JOB_SIZE, {
|
|
7
|
+
description: 'Size of proving job',
|
|
8
|
+
unit: 'by',
|
|
9
|
+
});
|
|
10
|
+
this.queueSize = meter.createGauge(Metrics.PROVING_QUEUE_SIZE, {
|
|
11
|
+
description: 'Size of proving queue',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
recordNewJob(type, size) {
|
|
15
|
+
this.jobSize.record(size, {
|
|
16
|
+
[Attributes.PROVING_JOB_TYPE]: ProvingRequestType[type],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
recordQueueSize(size) {
|
|
20
|
+
this.queueSize.record(size);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWVfbWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXItYWdlbnQvcXVldWVfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUE4QixPQUFPLEVBQXdCLE1BQU0seUJBQXlCLENBQUM7QUFFaEgsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixZQUFZLE1BQXVCLEVBQUUsSUFBSSxHQUFHLHFCQUFxQjtRQUMvRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUU7WUFDbkUsV0FBVyxFQUFFLHFCQUFxQjtZQUNsQyxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDN0QsV0FBVyxFQUFFLHVCQUF1QjtTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXdCLEVBQUUsSUFBWTtRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDeEIsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7U0FDeEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/prover-agent/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/prover-agent/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAyB7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIlE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CA6BnF;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,yFAA8B,GAClC,gBAAgB,CAgClB"}
|
package/dest/prover-agent/rpc.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AvmCircuitInputs, BaseOrMergeRollupPublicInputs, BaseParityInputs, BaseRollupInputs, Fr, Header, KernelCircuitPublicInputs, MergeRollupInputs, ParityPublicInputs, Proof, PublicKernelCircuitPrivateInputs, PublicKernelCircuitPublicInputs, PublicKernelTailCircuitPrivateInputs, RecursiveProof, RootParityInput, RootParityInputs, RootRollupInputs, RootRollupPublicInputs, TubeInputs, VerificationKeyData, } from '@aztec/circuits.js';
|
|
1
|
+
import { AvmCircuitInputs, BaseOrMergeRollupPublicInputs, BaseParityInputs, BaseRollupInputs, Fr, Header, KernelCircuitPublicInputs, MergeRollupInputs, ParityPublicInputs, PrivateKernelEmptyInputData, Proof, PublicKernelCircuitPrivateInputs, PublicKernelCircuitPublicInputs, PublicKernelTailCircuitPrivateInputs, RecursiveProof, RootParityInput, RootParityInputs, RootRollupInputs, RootRollupPublicInputs, TubeInputs, VerificationKeyData, } from '@aztec/circuits.js';
|
|
2
2
|
import { createJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
|
|
3
3
|
import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
4
4
|
import { ProvingError } from './proving-error.js';
|
|
@@ -15,6 +15,7 @@ export function createProvingJobSourceServer(queue) {
|
|
|
15
15
|
ParityPublicInputs,
|
|
16
16
|
Proof,
|
|
17
17
|
ProvingError,
|
|
18
|
+
PrivateKernelEmptyInputData,
|
|
18
19
|
PublicKernelCircuitPrivateInputs,
|
|
19
20
|
PublicKernelCircuitPublicInputs,
|
|
20
21
|
PublicKernelTailCircuitPrivateInputs,
|
|
@@ -40,6 +41,7 @@ export function createProvingJobSourceClient(url, namespace, fetch = makeFetch([
|
|
|
40
41
|
ParityPublicInputs,
|
|
41
42
|
Proof,
|
|
42
43
|
ProvingError,
|
|
44
|
+
PrivateKernelEmptyInputData,
|
|
43
45
|
PublicKernelCircuitPrivateInputs,
|
|
44
46
|
PublicKernelCircuitPublicInputs,
|
|
45
47
|
PublicKernelTailCircuitPrivateInputs,
|
|
@@ -52,4 +54,4 @@ export function createProvingJobSourceClient(url, namespace, fetch = makeFetch([
|
|
|
52
54
|
VerificationKeyData,
|
|
53
55
|
}, {}, false, namespace, fetch);
|
|
54
56
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1hZ2VudC9ycGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixFQUFFLEVBQ0YsTUFBTSxFQUNOLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixLQUFLLEVBQ0wsZ0NBQWdDLEVBQ2hDLCtCQUErQixFQUMvQixvQ0FBb0MsRUFDcEMsY0FBYyxFQUNkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEtBQXVCO0lBQ2xFLE9BQU8sSUFBSSxhQUFhLENBQ3RCLEtBQUssRUFDTDtRQUNFLGdCQUFnQjtRQUNoQiw2QkFBNkI7UUFDN0IsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixFQUFFO1FBQ0YsTUFBTTtRQUNOLHlCQUF5QjtRQUN6QixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLEtBQUs7UUFDTCxZQUFZO1FBQ1osMkJBQTJCO1FBQzNCLGdDQUFnQztRQUNoQywrQkFBK0I7UUFDL0Isb0NBQW9DO1FBQ3BDLGNBQWM7UUFDZCxlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsVUFBVTtRQUNWLG1CQUFtQjtLQUNwQixFQUNELEVBQUUsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsR0FBVyxFQUNYLFNBQWtCLEVBQ2xCLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUVuQyxPQUFPLG1CQUFtQixDQUN4QixHQUFHLEVBQ0g7UUFDRSxnQkFBZ0I7UUFDaEIsNkJBQTZCO1FBQzdCLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsRUFBRTtRQUNGLE1BQU07UUFDTix5QkFBeUI7UUFDekIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixLQUFLO1FBQ0wsWUFBWTtRQUNaLDJCQUEyQjtRQUMzQixnQ0FBZ0M7UUFDaEMsK0JBQStCO1FBQy9CLG9DQUFvQztRQUNwQyxjQUFjO1FBQ2QsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsZ0JBQWdCO1FBQ2hCLFVBQVU7UUFDVixtQkFBbUI7S0FDcEIsRUFDRCxFQUFFLEVBQ0YsS0FBSyxFQUNMLFNBQVMsRUFDVCxLQUFLLENBQ2MsQ0FBQztBQUN4QixDQUFDIn0=
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { type L2BlockSource } from '@aztec/circuit-types';
|
|
2
1
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
import { type WorldStateSynchronizer } from '@aztec/world-state';
|
|
4
2
|
import { type ProverClientConfig } from '../config.js';
|
|
5
3
|
import { TxProver } from './tx-prover.js';
|
|
6
|
-
export declare function createProverClient(config: ProverClientConfig,
|
|
4
|
+
export declare function createProverClient(config: ProverClientConfig, telemetry?: TelemetryClient): Promise<TxProver>;
|
|
7
5
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/tx-prover/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/tx-prover/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,GAAE,eAA2C,qBAEpH"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
2
2
|
import { TxProver } from './tx-prover.js';
|
|
3
|
-
export function createProverClient(config,
|
|
4
|
-
return
|
|
3
|
+
export function createProverClient(config, telemetry = new NoopTelemetryClient()) {
|
|
4
|
+
return TxProver.new(config, telemetry);
|
|
5
5
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eC1wcm92ZXIvZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQTBCLEVBQUUsWUFBNkIsSUFBSSxtQkFBbUIsRUFBRTtJQUNuSCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3pDLENBQUMifQ==
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import {
|
|
3
|
-
import { type Fr, type GlobalVariables } from '@aztec/circuits.js';
|
|
1
|
+
import { type BlockProver, type ProverClient, type ProvingJobSource } from '@aztec/circuit-types/interfaces';
|
|
2
|
+
import { Fr } from '@aztec/circuits.js';
|
|
4
3
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
-
import { type
|
|
4
|
+
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
6
5
|
import { type ProverClientConfig } from '../config.js';
|
|
7
6
|
/**
|
|
8
|
-
* A prover
|
|
7
|
+
* A prover factory.
|
|
8
|
+
* TODO(palla/prover-node): Rename this class
|
|
9
9
|
*/
|
|
10
10
|
export declare class TxProver implements ProverClient {
|
|
11
11
|
private config;
|
|
12
|
-
private worldStateSynchronizer;
|
|
13
12
|
private telemetry;
|
|
14
13
|
private agent?;
|
|
15
|
-
private orchestrator;
|
|
16
14
|
private queue;
|
|
17
15
|
private running;
|
|
18
16
|
private constructor();
|
|
17
|
+
createBlockProver(db: MerkleTreeOperations): BlockProver;
|
|
18
|
+
getProverId(): Fr;
|
|
19
19
|
updateProverConfig(config: Partial<ProverClientConfig>): Promise<void>;
|
|
20
20
|
/**
|
|
21
21
|
* Starts the prover instance
|
|
@@ -32,33 +32,8 @@ export declare class TxProver implements ProverClient {
|
|
|
32
32
|
* @param worldStateSynchronizer - An instance of the world state
|
|
33
33
|
* @returns An instance of the prover, constructed and started.
|
|
34
34
|
*/
|
|
35
|
-
static new(config: ProverClientConfig,
|
|
35
|
+
static new(config: ProverClientConfig, telemetry: TelemetryClient): Promise<TxProver>;
|
|
36
36
|
private static buildCircuitProver;
|
|
37
|
-
/**
|
|
38
|
-
* Cancels any block that is currently being built and prepares for a new one to be built
|
|
39
|
-
* @param numTxs - The complete size of the block, must be a power of 2
|
|
40
|
-
* @param globalVariables - The global variables for this block
|
|
41
|
-
* @param l1ToL2Messages - The set of L1 to L2 messages to be included in this block
|
|
42
|
-
*/
|
|
43
|
-
startNewBlock(numTxs: number, globalVariables: GlobalVariables, newL1ToL2Messages: Fr[]): Promise<ProvingTicket>;
|
|
44
|
-
/**
|
|
45
|
-
* Add a processed transaction to the current block
|
|
46
|
-
* @param tx - The transaction to be added
|
|
47
|
-
*/
|
|
48
|
-
addNewTx(tx: ProcessedTx): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* Cancels the block currently being proven. Proofs already bring built may continue but further proofs should not be started.
|
|
51
|
-
*/
|
|
52
|
-
cancelBlock(): void;
|
|
53
|
-
/**
|
|
54
|
-
* Performs the final archive tree insertion for this block and returns the L2Block and Proof instances
|
|
55
|
-
*/
|
|
56
|
-
finaliseBlock(): Promise<BlockResult>;
|
|
57
|
-
/**
|
|
58
|
-
* Mark the block as having all the transactions it is going to contain.
|
|
59
|
-
* Will pad the block to it's complete size with empty transactions and prove all the way to the root rollup.
|
|
60
|
-
*/
|
|
61
|
-
setBlockCompleted(): Promise<void>;
|
|
62
37
|
getProvingJobSource(): ProvingJobSource;
|
|
63
38
|
}
|
|
64
39
|
//# sourceMappingURL=tx-prover.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-prover.d.ts","sourceRoot":"","sources":["../../src/tx-prover/tx-prover.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"tx-prover.d.ts","sourceRoot":"","sources":["../../src/tx-prover/tx-prover.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAKvD;;;GAGG;AACH,qBAAa,QAAS,YAAW,YAAY;IAKzC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK,CAAC;IANhB,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;IAUA,iBAAiB,CAAC,EAAE,EAAE,oBAAoB,GAAG,WAAW;IAIxD,WAAW,IAAI,EAAE;IAIlB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5E;;OAEG;IACI,KAAK;IAWZ;;OAEG;IACU,IAAI;IAWjB;;;;;;OAMG;WACiB,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe;mBAczD,kBAAkB;IAehC,mBAAmB,IAAI,gBAAgB;CAG/C"}
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
import { BBNativeRollupProver, TestCircuitProver } from '@aztec/bb-prover';
|
|
2
|
+
import { Fr } from '@aztec/circuits.js';
|
|
2
3
|
import { NativeACVMSimulator } from '@aztec/simulator';
|
|
3
4
|
import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
|
|
4
5
|
import { MemoryProvingQueue } from '../prover-agent/memory-proving-queue.js';
|
|
5
6
|
import { ProverAgent } from '../prover-agent/prover-agent.js';
|
|
6
7
|
/**
|
|
7
|
-
* A prover
|
|
8
|
+
* A prover factory.
|
|
9
|
+
* TODO(palla/prover-node): Rename this class
|
|
8
10
|
*/
|
|
9
11
|
export class TxProver {
|
|
10
|
-
constructor(config,
|
|
12
|
+
constructor(config, telemetry, agent) {
|
|
11
13
|
this.config = config;
|
|
12
|
-
this.worldStateSynchronizer = worldStateSynchronizer;
|
|
13
14
|
this.telemetry = telemetry;
|
|
14
15
|
this.agent = agent;
|
|
15
16
|
this.running = false;
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
// TODO(palla/prover-node): Cache the paddingTx here, and not in each proving orchestrator,
|
|
18
|
+
// so it can be reused across multiple ones and not recomputed every time.
|
|
19
|
+
this.queue = new MemoryProvingQueue(telemetry, config.proverJobTimeoutMs, config.proverJobPollIntervalMs);
|
|
20
|
+
}
|
|
21
|
+
createBlockProver(db) {
|
|
22
|
+
return new ProvingOrchestrator(db, this.queue, this.telemetry, this.config.proverId);
|
|
23
|
+
}
|
|
24
|
+
getProverId() {
|
|
25
|
+
return this.config.proverId ?? Fr.ZERO;
|
|
18
26
|
}
|
|
19
27
|
async updateProverConfig(config) {
|
|
20
28
|
const newConfig = { ...this.config, ...config };
|
|
@@ -26,7 +34,7 @@ export class TxProver {
|
|
|
26
34
|
this.agent?.setMaxConcurrency(newConfig.proverAgentConcurrency);
|
|
27
35
|
}
|
|
28
36
|
if (!this.config.realProofs && newConfig.realProofs) {
|
|
29
|
-
|
|
37
|
+
// TODO(palla/prover-node): Reset padding tx here once we cache it at this class
|
|
30
38
|
}
|
|
31
39
|
this.config = newConfig;
|
|
32
40
|
}
|
|
@@ -50,6 +58,7 @@ export class TxProver {
|
|
|
50
58
|
return;
|
|
51
59
|
}
|
|
52
60
|
this.running = false;
|
|
61
|
+
// TODO(palla/prover-node): Keep a reference to all proving orchestrators that are alive and stop them?
|
|
53
62
|
await this.agent?.stop();
|
|
54
63
|
await this.queue.stop();
|
|
55
64
|
}
|
|
@@ -60,11 +69,11 @@ export class TxProver {
|
|
|
60
69
|
* @param worldStateSynchronizer - An instance of the world state
|
|
61
70
|
* @returns An instance of the prover, constructed and started.
|
|
62
71
|
*/
|
|
63
|
-
static async new(config,
|
|
72
|
+
static async new(config, telemetry) {
|
|
64
73
|
const agent = config.proverAgentEnabled
|
|
65
74
|
? new ProverAgent(await TxProver.buildCircuitProver(config, telemetry), config.proverAgentConcurrency, config.proverAgentPollInterval)
|
|
66
75
|
: undefined;
|
|
67
|
-
const prover = new TxProver(config,
|
|
76
|
+
const prover = new TxProver(config, telemetry, agent);
|
|
68
77
|
await prover.start();
|
|
69
78
|
return prover;
|
|
70
79
|
}
|
|
@@ -77,45 +86,8 @@ export class TxProver {
|
|
|
77
86
|
: undefined;
|
|
78
87
|
return new TestCircuitProver(telemetry, simulationProvider);
|
|
79
88
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Cancels any block that is currently being built and prepares for a new one to be built
|
|
82
|
-
* @param numTxs - The complete size of the block, must be a power of 2
|
|
83
|
-
* @param globalVariables - The global variables for this block
|
|
84
|
-
* @param l1ToL2Messages - The set of L1 to L2 messages to be included in this block
|
|
85
|
-
*/
|
|
86
|
-
async startNewBlock(numTxs, globalVariables, newL1ToL2Messages) {
|
|
87
|
-
const previousBlockNumber = globalVariables.blockNumber.toNumber() - 1;
|
|
88
|
-
await this.worldStateSynchronizer.syncImmediate(previousBlockNumber);
|
|
89
|
-
return this.orchestrator.startNewBlock(numTxs, globalVariables, newL1ToL2Messages);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Add a processed transaction to the current block
|
|
93
|
-
* @param tx - The transaction to be added
|
|
94
|
-
*/
|
|
95
|
-
addNewTx(tx) {
|
|
96
|
-
return this.orchestrator.addNewTx(tx);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Cancels the block currently being proven. Proofs already bring built may continue but further proofs should not be started.
|
|
100
|
-
*/
|
|
101
|
-
cancelBlock() {
|
|
102
|
-
this.orchestrator.cancelBlock();
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Performs the final archive tree insertion for this block and returns the L2Block and Proof instances
|
|
106
|
-
*/
|
|
107
|
-
finaliseBlock() {
|
|
108
|
-
return this.orchestrator.finaliseBlock();
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Mark the block as having all the transactions it is going to contain.
|
|
112
|
-
* Will pad the block to it's complete size with empty transactions and prove all the way to the root rollup.
|
|
113
|
-
*/
|
|
114
|
-
setBlockCompleted() {
|
|
115
|
-
return this.orchestrator.setBlockCompleted();
|
|
116
|
-
}
|
|
117
89
|
getProvingJobSource() {
|
|
118
90
|
return this.queue;
|
|
119
91
|
}
|
|
120
92
|
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4LXByb3Zlci90eC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFPM0UsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUluQixZQUNVLE1BQTBCLEVBQzFCLFNBQTBCLEVBQzFCLEtBQW1CO1FBRm5CLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFMckIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQU90QiwyRkFBMkY7UUFDM0YsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUF3QjtRQUMvQyxPQUFPLElBQUksbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0s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
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
|
-
"./prover-agent": "./dest/prover-agent/index.js"
|
|
7
|
+
"./prover-agent": "./dest/prover-agent/index.js",
|
|
8
|
+
"./orchestrator": "./dest/orchestrator/index.js"
|
|
8
9
|
},
|
|
9
10
|
"typedocOptions": {
|
|
10
11
|
"entryPoints": [
|
|
@@ -58,15 +59,15 @@
|
|
|
58
59
|
]
|
|
59
60
|
},
|
|
60
61
|
"dependencies": {
|
|
61
|
-
"@aztec/bb-prover": "0.
|
|
62
|
-
"@aztec/circuit-types": "0.
|
|
63
|
-
"@aztec/circuits.js": "0.
|
|
64
|
-
"@aztec/foundation": "0.
|
|
65
|
-
"@aztec/kv-store": "0.
|
|
66
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
67
|
-
"@aztec/simulator": "0.
|
|
68
|
-
"@aztec/telemetry-client": "0.
|
|
69
|
-
"@aztec/world-state": "0.
|
|
62
|
+
"@aztec/bb-prover": "0.49.2",
|
|
63
|
+
"@aztec/circuit-types": "0.49.2",
|
|
64
|
+
"@aztec/circuits.js": "0.49.2",
|
|
65
|
+
"@aztec/foundation": "0.49.2",
|
|
66
|
+
"@aztec/kv-store": "0.49.2",
|
|
67
|
+
"@aztec/noir-protocol-circuits-types": "0.49.2",
|
|
68
|
+
"@aztec/simulator": "0.49.2",
|
|
69
|
+
"@aztec/telemetry-client": "0.49.2",
|
|
70
|
+
"@aztec/world-state": "0.49.2",
|
|
70
71
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
71
72
|
"commander": "^12.1.0",
|
|
72
73
|
"lodash.chunk": "^4.2.0",
|
package/src/config.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type ProverConfig } from '@aztec/circuit-types';
|
|
2
|
-
|
|
3
|
-
import { tmpdir } from 'os';
|
|
1
|
+
import { type ProverConfig, proverConfigMappings } from '@aztec/circuit-types';
|
|
2
|
+
import { type ConfigMappingsType, getConfigFromMappings } from '@aztec/foundation/config';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* The prover configuration.
|
|
@@ -14,8 +13,26 @@ export type ProverClientConfig = ProverConfig & {
|
|
|
14
13
|
bbWorkingDirectory: string;
|
|
15
14
|
/** The path to the bb binary */
|
|
16
15
|
bbBinaryPath: string;
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export const proverClientConfigMappings: ConfigMappingsType<ProverClientConfig> = {
|
|
19
|
+
acvmWorkingDirectory: {
|
|
20
|
+
env: 'ACVM_WORKING_DIRECTORY',
|
|
21
|
+
description: 'The working directory to use for simulation/proving',
|
|
22
|
+
},
|
|
23
|
+
acvmBinaryPath: {
|
|
24
|
+
env: 'ACVM_BINARY_PATH',
|
|
25
|
+
description: 'The path to the ACVM binary',
|
|
26
|
+
},
|
|
27
|
+
bbWorkingDirectory: {
|
|
28
|
+
env: 'BB_WORKING_DIRECTORY',
|
|
29
|
+
description: 'The working directory to for proving',
|
|
30
|
+
},
|
|
31
|
+
bbBinaryPath: {
|
|
32
|
+
env: 'BB_BINARY_PATH',
|
|
33
|
+
description: 'The path to the bb binary',
|
|
34
|
+
},
|
|
35
|
+
...proverConfigMappings,
|
|
19
36
|
};
|
|
20
37
|
|
|
21
38
|
/**
|
|
@@ -24,48 +41,5 @@ export type ProverClientConfig = ProverConfig & {
|
|
|
24
41
|
* @returns The prover configuration.
|
|
25
42
|
*/
|
|
26
43
|
export function getProverEnvVars(): ProverClientConfig {
|
|
27
|
-
|
|
28
|
-
AZTEC_NODE_URL,
|
|
29
|
-
ACVM_WORKING_DIRECTORY = tmpdir(),
|
|
30
|
-
ACVM_BINARY_PATH = '',
|
|
31
|
-
BB_WORKING_DIRECTORY = tmpdir(),
|
|
32
|
-
BB_BINARY_PATH = '',
|
|
33
|
-
PROVER_DISABLED = '',
|
|
34
|
-
/** @deprecated */
|
|
35
|
-
PROVER_AGENTS = '1',
|
|
36
|
-
PROVER_AGENT_ENABLED = '1',
|
|
37
|
-
PROVER_AGENT_CONCURRENCY = PROVER_AGENTS,
|
|
38
|
-
PROVER_AGENT_POLL_INTERVAL_MS = '100',
|
|
39
|
-
PROVER_REAL_PROOFS = '',
|
|
40
|
-
PROVER_JOB_TIMEOUT_MS = '60000',
|
|
41
|
-
PROVER_JOB_POLL_INTERVAL_MS = '1000',
|
|
42
|
-
} = process.env;
|
|
43
|
-
|
|
44
|
-
const realProofs = ['1', 'true'].includes(PROVER_REAL_PROOFS);
|
|
45
|
-
const proverAgentEnabled = ['1', 'true'].includes(PROVER_AGENT_ENABLED);
|
|
46
|
-
const proverAgentConcurrency = safeParseNumber(PROVER_AGENT_CONCURRENCY, 1);
|
|
47
|
-
const proverAgentPollInterval = safeParseNumber(PROVER_AGENT_POLL_INTERVAL_MS, 100);
|
|
48
|
-
const proverJobTimeoutMs = safeParseNumber(PROVER_JOB_TIMEOUT_MS, 60000);
|
|
49
|
-
const proverJobPollIntervalMs = safeParseNumber(PROVER_JOB_POLL_INTERVAL_MS, 1000);
|
|
50
|
-
const disableProver = ['1', 'true'].includes(PROVER_DISABLED);
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
acvmWorkingDirectory: ACVM_WORKING_DIRECTORY,
|
|
54
|
-
acvmBinaryPath: ACVM_BINARY_PATH,
|
|
55
|
-
bbBinaryPath: BB_BINARY_PATH,
|
|
56
|
-
bbWorkingDirectory: BB_WORKING_DIRECTORY,
|
|
57
|
-
realProofs,
|
|
58
|
-
disableProver,
|
|
59
|
-
proverAgentEnabled,
|
|
60
|
-
proverAgentPollInterval,
|
|
61
|
-
proverAgentConcurrency,
|
|
62
|
-
nodeUrl: AZTEC_NODE_URL,
|
|
63
|
-
proverJobPollIntervalMs,
|
|
64
|
-
proverJobTimeoutMs,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function safeParseNumber(value: string, defaultValue: number): number {
|
|
69
|
-
const parsedValue = parseInt(value, 10);
|
|
70
|
-
return Number.isSafeInteger(parsedValue) ? parsedValue : defaultValue;
|
|
44
|
+
return getConfigFromMappings<ProverClientConfig>(proverClientConfigMappings);
|
|
71
45
|
}
|
package/src/mocks/fixtures.ts
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
GasFees,
|
|
13
13
|
GlobalVariables,
|
|
14
14
|
KernelCircuitPublicInputs,
|
|
15
|
+
LogHash,
|
|
15
16
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
16
17
|
MAX_NOTE_HASHES_PER_TX,
|
|
17
18
|
MAX_NULLIFIERS_PER_TX,
|
|
@@ -20,8 +21,9 @@ import {
|
|
|
20
21
|
PUBLIC_DATA_SUBTREE_HEIGHT,
|
|
21
22
|
PublicDataTreeLeaf,
|
|
22
23
|
PublicDataUpdateRequest,
|
|
24
|
+
ScopedLogHash,
|
|
23
25
|
} from '@aztec/circuits.js';
|
|
24
|
-
import { fr } from '@aztec/circuits.js/testing';
|
|
26
|
+
import { fr, makeScopedL2ToL1Message } from '@aztec/circuits.js/testing';
|
|
25
27
|
import { makeTuple } from '@aztec/foundation/array';
|
|
26
28
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
27
29
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
@@ -120,9 +122,16 @@ export const makeBloatedProcessedTx = (builderDb: MerkleTreeOperations, seed = 0
|
|
|
120
122
|
|
|
121
123
|
processedTx.data.end.nullifiers[tx.data.forPublic!.end.nullifiers.length - 1] = Fr.zero();
|
|
122
124
|
|
|
123
|
-
processedTx.data.end.l2ToL1Msgs = makeTuple(MAX_L2_TO_L1_MSGS_PER_TX,
|
|
124
|
-
processedTx.
|
|
125
|
-
|
|
125
|
+
processedTx.data.end.l2ToL1Msgs = makeTuple(MAX_L2_TO_L1_MSGS_PER_TX, makeScopedL2ToL1Message, seed + 0x300);
|
|
126
|
+
processedTx.noteEncryptedLogs.unrollLogs().forEach((log, i) => {
|
|
127
|
+
processedTx.data.end.noteEncryptedLogsHashes[i] = new LogHash(Fr.fromBuffer(log.hash()), 0, new Fr(log.length));
|
|
128
|
+
});
|
|
129
|
+
processedTx.encryptedLogs.unrollLogs().forEach((log, i) => {
|
|
130
|
+
processedTx.data.end.encryptedLogsHashes[i] = new ScopedLogHash(
|
|
131
|
+
new LogHash(Fr.fromBuffer(log.hash()), 0, new Fr(log.length)),
|
|
132
|
+
log.maskedContractAddress,
|
|
133
|
+
);
|
|
134
|
+
});
|
|
126
135
|
|
|
127
136
|
return processedTx;
|
|
128
137
|
};
|
|
@@ -171,6 +180,7 @@ export const makeGlobals = (blockNumber: number) => {
|
|
|
171
180
|
Fr.ZERO,
|
|
172
181
|
Fr.ZERO,
|
|
173
182
|
new Fr(blockNumber),
|
|
183
|
+
new Fr(blockNumber) /** slot number */,
|
|
174
184
|
Fr.ZERO,
|
|
175
185
|
EthAddress.ZERO,
|
|
176
186
|
AztecAddress.ZERO,
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { type BBProverConfig } from '@aztec/bb-prover';
|
|
2
2
|
import {
|
|
3
3
|
type BlockProver,
|
|
4
|
-
type BlockResult,
|
|
5
4
|
type ProcessedTx,
|
|
6
|
-
type ProvingTicket,
|
|
7
5
|
type PublicExecutionRequest,
|
|
8
6
|
type ServerCircuitProver,
|
|
9
7
|
type Tx,
|
|
@@ -36,27 +34,7 @@ import { MemoryProvingQueue } from '../prover-agent/memory-proving-queue.js';
|
|
|
36
34
|
import { ProverAgent } from '../prover-agent/prover-agent.js';
|
|
37
35
|
import { getEnvironmentConfig, getSimulationProvider, makeGlobals } from './fixtures.js';
|
|
38
36
|
|
|
39
|
-
class DummyProverClient implements BlockProver {
|
|
40
|
-
constructor(private orchestrator: ProvingOrchestrator) {}
|
|
41
|
-
startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<ProvingTicket> {
|
|
42
|
-
return this.orchestrator.startNewBlock(numTxs, globalVariables, l1ToL2Messages);
|
|
43
|
-
}
|
|
44
|
-
addNewTx(tx: ProcessedTx): Promise<void> {
|
|
45
|
-
return this.orchestrator.addNewTx(tx);
|
|
46
|
-
}
|
|
47
|
-
cancelBlock(): void {
|
|
48
|
-
return this.orchestrator.cancelBlock();
|
|
49
|
-
}
|
|
50
|
-
finaliseBlock(): Promise<BlockResult> {
|
|
51
|
-
return this.orchestrator.finaliseBlock();
|
|
52
|
-
}
|
|
53
|
-
setBlockCompleted(): Promise<void> {
|
|
54
|
-
return this.orchestrator.setBlockCompleted();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
37
|
export class TestContext {
|
|
59
|
-
public blockProver: BlockProver;
|
|
60
38
|
constructor(
|
|
61
39
|
public publicExecutor: MockProxy<PublicExecutor>,
|
|
62
40
|
public publicContractsDB: MockProxy<ContractsDataSourcePublicDB>,
|
|
@@ -71,8 +49,10 @@ export class TestContext {
|
|
|
71
49
|
public blockNumber: number,
|
|
72
50
|
public directoriesToCleanup: string[],
|
|
73
51
|
public logger: DebugLogger,
|
|
74
|
-
) {
|
|
75
|
-
|
|
52
|
+
) {}
|
|
53
|
+
|
|
54
|
+
public get blockProver() {
|
|
55
|
+
return this.orchestrator;
|
|
76
56
|
}
|
|
77
57
|
|
|
78
58
|
static async new(
|
|
@@ -119,7 +99,7 @@ export class TestContext {
|
|
|
119
99
|
localProver = await createProver(bbConfig);
|
|
120
100
|
}
|
|
121
101
|
|
|
122
|
-
const queue = new MemoryProvingQueue();
|
|
102
|
+
const queue = new MemoryProvingQueue(telemetry);
|
|
123
103
|
const orchestrator = new ProvingOrchestrator(actualDb, queue, telemetry);
|
|
124
104
|
const agent = new ProverAgent(localProver, proverCount);
|
|
125
105
|
|
|
@@ -37,7 +37,6 @@ import {
|
|
|
37
37
|
type RootRollupPublicInputs,
|
|
38
38
|
StateDiffHints,
|
|
39
39
|
type StateReference,
|
|
40
|
-
type TUBE_PROOF_LENGTH,
|
|
41
40
|
VK_TREE_HEIGHT,
|
|
42
41
|
type VerificationKeyAsFields,
|
|
43
42
|
type VerificationKeyData,
|
|
@@ -61,7 +60,7 @@ export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
|
|
|
61
60
|
// Builds the base rollup inputs, updating the contract, nullifier, and data trees in the process
|
|
62
61
|
export async function buildBaseRollupInput(
|
|
63
62
|
tx: ProcessedTx,
|
|
64
|
-
proof: RecursiveProof<typeof
|
|
63
|
+
proof: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
65
64
|
globalVariables: GlobalVariables,
|
|
66
65
|
db: MerkleTreeOperations,
|
|
67
66
|
kernelVk: VerificationKeyData,
|
|
@@ -84,13 +83,13 @@ export async function buildBaseRollupInput(
|
|
|
84
83
|
i < noteHashSubtreeSiblingPathArray.length ? noteHashSubtreeSiblingPathArray[i] : Fr.ZERO,
|
|
85
84
|
);
|
|
86
85
|
|
|
87
|
-
// Create data hint for reading fee payer initial balance in
|
|
86
|
+
// Create data hint for reading fee payer initial balance in Fee Juice
|
|
88
87
|
// If no fee payer is set, read hint should be empty
|
|
89
88
|
// If there is already a public data write for this slot, also skip the read hint
|
|
90
89
|
const hintsBuilder = new HintsBuilder(db);
|
|
91
90
|
const leafSlot = computeFeePayerBalanceLeafSlot(tx.data.feePayer);
|
|
92
91
|
const existingBalanceWrite = tx.data.end.publicDataUpdateRequests.find(write => write.leafSlot.equals(leafSlot));
|
|
93
|
-
const
|
|
92
|
+
const feePayerFeeJuiceBalanceReadHint =
|
|
94
93
|
leafSlot.isZero() || existingBalanceWrite
|
|
95
94
|
? PublicDataHint.empty()
|
|
96
95
|
: await hintsBuilder.getPublicDataHint(leafSlot.toBigInt());
|
|
@@ -163,7 +162,7 @@ export async function buildBaseRollupInput(
|
|
|
163
162
|
kernelData: getKernelDataFor(tx, kernelVk, proof),
|
|
164
163
|
start,
|
|
165
164
|
stateDiffHints,
|
|
166
|
-
|
|
165
|
+
feePayerFeeJuiceBalanceReadHint: feePayerFeeJuiceBalanceReadHint,
|
|
167
166
|
sortedPublicDataWrites: txPublicDataUpdateRequestInfo.sortedPublicDataWrites,
|
|
168
167
|
sortedPublicDataWritesIndexes: txPublicDataUpdateRequestInfo.sortedPublicDataWritesIndexes,
|
|
169
168
|
lowPublicDataWritesPreimages: txPublicDataUpdateRequestInfo.lowPublicDataWritesPreimages,
|
|
@@ -224,6 +223,7 @@ export async function getRootRollupInput(
|
|
|
224
223
|
messageTreeSnapshot: AppendOnlyTreeSnapshot,
|
|
225
224
|
messageTreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>,
|
|
226
225
|
db: MerkleTreeOperations,
|
|
226
|
+
proverId: Fr,
|
|
227
227
|
) {
|
|
228
228
|
const previousRollupData: RootRollupInputs['previousRollupData'] = [
|
|
229
229
|
getPreviousRollupDataFromPublicInputs(rollupOutputLeft, rollupProofLeft, verificationKeyLeft),
|
|
@@ -254,6 +254,7 @@ export async function getRootRollupInput(
|
|
|
254
254
|
startL1ToL2MessageTreeSnapshot: messageTreeSnapshot,
|
|
255
255
|
startArchiveSnapshot,
|
|
256
256
|
newArchiveSiblingPath,
|
|
257
|
+
proverId,
|
|
257
258
|
});
|
|
258
259
|
}
|
|
259
260
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ProvingOrchestrator } from './orchestrator.js';
|