@aztec/prover-client 0.69.0 → 0.69.1-devnet
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/block_builder/light.d.ts +0 -1
- package/dest/block_builder/light.d.ts.map +1 -1
- package/dest/block_builder/light.js +4 -14
- package/dest/config.d.ts +2 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -2
- package/dest/mocks/test_context.d.ts +2 -2
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +6 -6
- package/dest/orchestrator/block-building-helpers.d.ts +10 -25
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +33 -44
- package/dest/orchestrator/block-proving-state.d.ts +40 -44
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +149 -85
- package/dest/orchestrator/epoch-proving-state.d.ts +23 -30
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +92 -65
- package/dest/orchestrator/orchestrator.d.ts +16 -47
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +204 -341
- package/dest/orchestrator/tx-proving-state.d.ts +10 -6
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +57 -46
- package/dest/prover-agent/memory-proving-queue.d.ts +3 -3
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +4 -4
- package/dest/prover-agent/prover-agent.js +4 -4
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +5 -2
- package/dest/prover-client/server-epoch-prover.d.ts +25 -0
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -0
- package/dest/prover-client/server-epoch-prover.js +40 -0
- package/dest/proving_broker/broker_prover_facade.d.ts +15 -4
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +247 -44
- package/dest/proving_broker/config.d.ts +61 -0
- package/dest/proving_broker/config.d.ts.map +1 -0
- package/dest/proving_broker/config.js +83 -0
- package/dest/proving_broker/factory.d.ts +1 -1
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +2 -5
- package/dest/proving_broker/fixtures.d.ts +5 -0
- package/dest/proving_broker/fixtures.d.ts.map +1 -0
- package/dest/proving_broker/fixtures.js +12 -0
- package/dest/proving_broker/index.d.ts +1 -0
- package/dest/proving_broker/index.d.ts.map +1 -1
- package/dest/proving_broker/index.js +2 -1
- package/dest/proving_broker/proving_broker.d.ts +16 -12
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +306 -273
- package/dest/proving_broker/proving_broker_database/memory.d.ts +4 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +17 -4
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +10 -6
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +105 -13
- package/dest/proving_broker/proving_broker_database.d.ts +7 -3
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +4 -4
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +4 -4
- package/dest/test/mock_prover.d.ts +6 -6
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +6 -6
- package/package.json +11 -11
- package/src/block_builder/light.ts +3 -21
- package/src/config.ts +4 -4
- package/src/mocks/test_context.ts +3 -6
- package/src/orchestrator/block-building-helpers.ts +44 -118
- package/src/orchestrator/block-proving-state.ts +251 -121
- package/src/orchestrator/epoch-proving-state.ts +159 -88
- package/src/orchestrator/orchestrator.ts +251 -527
- package/src/orchestrator/tx-proving-state.ts +35 -19
- package/src/prover-agent/memory-proving-queue.ts +11 -12
- package/src/prover-agent/prover-agent.ts +4 -4
- package/src/prover-client/prover-client.ts +4 -6
- package/src/prover-client/server-epoch-prover.ts +44 -0
- package/src/proving_broker/broker_prover_facade.ts +321 -61
- package/src/proving_broker/config.ts +93 -0
- package/src/proving_broker/factory.ts +2 -5
- package/src/proving_broker/fixtures.ts +14 -0
- package/src/proving_broker/index.ts +1 -0
- package/src/proving_broker/proving_broker.ts +114 -71
- package/src/proving_broker/proving_broker_database/memory.ts +24 -4
- package/src/proving_broker/proving_broker_database/persisted.ts +141 -19
- package/src/proving_broker/proving_broker_database.ts +8 -3
- package/src/proving_broker/proving_job_controller.ts +5 -5
- package/src/proving_broker/rpc.ts +2 -3
- package/src/test/mock_prover.ts +9 -11
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type MerkleTreeId, type ProcessedTx, type ProofAndVerificationKey } from '@aztec/circuit-types';
|
|
2
|
+
import { type CircuitName } from '@aztec/circuit-types/stats';
|
|
2
3
|
import {
|
|
3
4
|
type AVM_PROOF_LENGTH_IN_FIELDS,
|
|
4
5
|
AVM_VK_INDEX,
|
|
@@ -18,7 +19,7 @@ import {
|
|
|
18
19
|
PublicTubeData,
|
|
19
20
|
TubeInputs,
|
|
20
21
|
} from '@aztec/circuits.js/rollup';
|
|
21
|
-
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types';
|
|
22
|
+
import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vks';
|
|
22
23
|
|
|
23
24
|
/**
|
|
24
25
|
* Helper class to manage the proving cycle of a transaction
|
|
@@ -51,16 +52,39 @@ export class TxProvingState {
|
|
|
51
52
|
return this.processedTx.avmProvingRequest!.inputs;
|
|
52
53
|
}
|
|
53
54
|
|
|
54
|
-
public
|
|
55
|
+
public getBaseRollupTypeAndInputs() {
|
|
55
56
|
if (this.requireAvmProof) {
|
|
56
|
-
|
|
57
|
+
return {
|
|
58
|
+
rollupType: 'public-base-rollup' satisfies CircuitName,
|
|
59
|
+
inputs: this.#getPublicBaseInputs(),
|
|
60
|
+
};
|
|
61
|
+
} else {
|
|
62
|
+
return {
|
|
63
|
+
rollupType: 'private-base-rollup' satisfies CircuitName,
|
|
64
|
+
inputs: this.#getPrivateBaseInputs(),
|
|
65
|
+
};
|
|
57
66
|
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public setTubeProof(tubeProofAndVk: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>) {
|
|
70
|
+
this.tube = tubeProofAndVk;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>) {
|
|
74
|
+
this.avm = avmProofAndVk;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
#getPrivateBaseInputs() {
|
|
58
78
|
if (!this.tube) {
|
|
59
79
|
throw new Error('Tx not ready for proving base rollup.');
|
|
60
80
|
}
|
|
61
81
|
|
|
62
|
-
const vkData = this
|
|
63
|
-
const tubeData = new PrivateTubeData(
|
|
82
|
+
const vkData = this.#getTubeVkData();
|
|
83
|
+
const tubeData = new PrivateTubeData(
|
|
84
|
+
this.processedTx.data.toPrivateToRollupKernelCircuitPublicInputs(),
|
|
85
|
+
this.tube.proof,
|
|
86
|
+
vkData,
|
|
87
|
+
);
|
|
64
88
|
|
|
65
89
|
if (!(this.baseRollupHints instanceof PrivateBaseRollupHints)) {
|
|
66
90
|
throw new Error('Mismatched base rollup hints, expected private base rollup hints');
|
|
@@ -68,7 +92,7 @@ export class TxProvingState {
|
|
|
68
92
|
return new PrivateBaseRollupInputs(tubeData, this.baseRollupHints);
|
|
69
93
|
}
|
|
70
94
|
|
|
71
|
-
|
|
95
|
+
#getPublicBaseInputs() {
|
|
72
96
|
if (!this.processedTx.avmProvingRequest) {
|
|
73
97
|
throw new Error('Should create private base rollup for a tx not requiring avm proof.');
|
|
74
98
|
}
|
|
@@ -80,15 +104,15 @@ export class TxProvingState {
|
|
|
80
104
|
}
|
|
81
105
|
|
|
82
106
|
const tubeData = new PublicTubeData(
|
|
83
|
-
this.processedTx.data.
|
|
107
|
+
this.processedTx.data.toPrivateToPublicKernelCircuitPublicInputs(),
|
|
84
108
|
this.tube.proof,
|
|
85
|
-
this
|
|
109
|
+
this.#getTubeVkData(),
|
|
86
110
|
);
|
|
87
111
|
|
|
88
112
|
const avmProofData = new AvmProofData(
|
|
89
113
|
this.processedTx.avmProvingRequest.inputs.output,
|
|
90
114
|
this.avm.proof,
|
|
91
|
-
this
|
|
115
|
+
this.#getAvmVkData(),
|
|
92
116
|
);
|
|
93
117
|
|
|
94
118
|
if (!(this.baseRollupHints instanceof PublicBaseRollupHints)) {
|
|
@@ -98,15 +122,7 @@ export class TxProvingState {
|
|
|
98
122
|
return new PublicBaseRollupInputs(tubeData, avmProofData, this.baseRollupHints);
|
|
99
123
|
}
|
|
100
124
|
|
|
101
|
-
|
|
102
|
-
this.tube = tubeProofAndVk;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
public assignAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_PROOF_LENGTH_IN_FIELDS>) {
|
|
106
|
-
this.avm = avmProofAndVk;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
private getTubeVkData() {
|
|
125
|
+
#getTubeVkData() {
|
|
110
126
|
let vkIndex = TUBE_VK_INDEX;
|
|
111
127
|
try {
|
|
112
128
|
vkIndex = getVKIndex(this.tube!.verificationKey);
|
|
@@ -118,7 +134,7 @@ export class TxProvingState {
|
|
|
118
134
|
return new VkWitnessData(this.tube!.verificationKey, vkIndex, vkPath);
|
|
119
135
|
}
|
|
120
136
|
|
|
121
|
-
|
|
137
|
+
#getAvmVkData() {
|
|
122
138
|
const vkIndex = AVM_VK_INDEX;
|
|
123
139
|
const vkPath = getVKSiblingPath(vkIndex);
|
|
124
140
|
return new VkWitnessData(this.avm!.verificationKey, AVM_VK_INDEX, vkPath);
|
|
@@ -12,11 +12,9 @@ import type {
|
|
|
12
12
|
AVM_PROOF_LENGTH_IN_FIELDS,
|
|
13
13
|
AvmCircuitInputs,
|
|
14
14
|
BaseParityInputs,
|
|
15
|
-
KernelCircuitPublicInputs,
|
|
16
15
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
17
16
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
18
17
|
ParityPublicInputs,
|
|
19
|
-
PrivateKernelEmptyInputData,
|
|
20
18
|
RECURSIVE_PROOF_LENGTH,
|
|
21
19
|
RootParityInputs,
|
|
22
20
|
TUBE_PROOF_LENGTH,
|
|
@@ -32,6 +30,7 @@ import {
|
|
|
32
30
|
type PublicBaseRollupInputs,
|
|
33
31
|
type RootRollupInputs,
|
|
34
32
|
type RootRollupPublicInputs,
|
|
33
|
+
type SingleTxBlockRootRollupInputs,
|
|
35
34
|
type TubeInputs,
|
|
36
35
|
} from '@aztec/circuits.js/rollup';
|
|
37
36
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
@@ -271,16 +270,6 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
|
|
|
271
270
|
return promise.then(({ result }) => result);
|
|
272
271
|
}
|
|
273
272
|
|
|
274
|
-
getEmptyPrivateKernelProof(
|
|
275
|
-
inputs: PrivateKernelEmptyInputData,
|
|
276
|
-
signal?: AbortSignal,
|
|
277
|
-
epochNumber?: number,
|
|
278
|
-
): Promise<
|
|
279
|
-
PublicInputsAndRecursiveProof<KernelCircuitPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
280
|
-
> {
|
|
281
|
-
return this.enqueue(ProvingRequestType.PRIVATE_KERNEL_EMPTY, inputs, signal, epochNumber);
|
|
282
|
-
}
|
|
283
|
-
|
|
284
273
|
getTubeProof(
|
|
285
274
|
inputs: TubeInputs,
|
|
286
275
|
signal?: AbortSignal,
|
|
@@ -361,6 +350,16 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
|
|
|
361
350
|
return this.enqueue(ProvingRequestType.BLOCK_ROOT_ROLLUP, inputs, signal, epochNumber);
|
|
362
351
|
}
|
|
363
352
|
|
|
353
|
+
getSingleTxBlockRootRollupProof(
|
|
354
|
+
inputs: SingleTxBlockRootRollupInputs,
|
|
355
|
+
signal?: AbortSignal,
|
|
356
|
+
epochNumber?: number,
|
|
357
|
+
): Promise<
|
|
358
|
+
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
359
|
+
> {
|
|
360
|
+
return this.enqueue(ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP, inputs, signal, epochNumber);
|
|
361
|
+
}
|
|
362
|
+
|
|
364
363
|
getEmptyBlockRootRollupProof(
|
|
365
364
|
inputs: EmptyBlockRootRollupInputs,
|
|
366
365
|
signal?: AbortSignal,
|
|
@@ -209,6 +209,10 @@ export class ProverAgent implements ProverAgentApi, Traceable {
|
|
|
209
209
|
return this.circuitProver.getBlockRootRollupProof(inputs);
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
+
case ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP: {
|
|
213
|
+
return this.circuitProver.getSingleTxBlockRootRollupProof(inputs);
|
|
214
|
+
}
|
|
215
|
+
|
|
212
216
|
case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
|
|
213
217
|
return this.circuitProver.getBlockMergeRollupProof(inputs);
|
|
214
218
|
}
|
|
@@ -225,10 +229,6 @@ export class ProverAgent implements ProverAgentApi, Traceable {
|
|
|
225
229
|
return this.circuitProver.getRootParityProof(inputs);
|
|
226
230
|
}
|
|
227
231
|
|
|
228
|
-
case ProvingRequestType.PRIVATE_KERNEL_EMPTY: {
|
|
229
|
-
return this.circuitProver.getEmptyPrivateKernelProof(inputs);
|
|
230
|
-
}
|
|
231
|
-
|
|
232
232
|
case ProvingRequestType.TUBE_PROOF: {
|
|
233
233
|
return this.circuitProver.getTubeProof(inputs);
|
|
234
234
|
}
|
|
@@ -20,6 +20,7 @@ import { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
|
|
|
20
20
|
import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
21
21
|
import { InlineProofStore } from '../proving_broker/proof_store.js';
|
|
22
22
|
import { ProvingAgent } from '../proving_broker/proving_agent.js';
|
|
23
|
+
import { ServerEpochProver } from './server-epoch-prover.js';
|
|
23
24
|
|
|
24
25
|
/** Manages proving of epochs by orchestrating the proving of individual blocks relying on a pool of prover agents. */
|
|
25
26
|
export class ProverClient implements EpochProverManager {
|
|
@@ -39,12 +40,9 @@ export class ProverClient implements EpochProverManager {
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
public createEpochProver(): EpochProver {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.telemetry,
|
|
46
|
-
this.config.proverId,
|
|
47
|
-
);
|
|
43
|
+
const facade = new BrokerCircuitProverFacade(this.orchestratorClient);
|
|
44
|
+
const orchestrator = new ProvingOrchestrator(this.worldState, facade, this.telemetry, this.config.proverId);
|
|
45
|
+
return new ServerEpochProver(facade, orchestrator);
|
|
48
46
|
}
|
|
49
47
|
|
|
50
48
|
public getProverId(): Fr {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type EpochProver, type L2Block, type ProcessedTx, type Tx } from '@aztec/circuit-types';
|
|
2
|
+
import { type BlockHeader, type Fr, type GlobalVariables, type Proof } from '@aztec/circuits.js';
|
|
3
|
+
import { type RootRollupPublicInputs } from '@aztec/circuits.js/rollup';
|
|
4
|
+
|
|
5
|
+
import { type ProvingOrchestrator } from '../orchestrator/orchestrator.js';
|
|
6
|
+
import { type BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
7
|
+
|
|
8
|
+
/** Encapsulates the proving orchestrator and the broker facade */
|
|
9
|
+
export class ServerEpochProver implements EpochProver {
|
|
10
|
+
constructor(private facade: BrokerCircuitProverFacade, private orchestrator: ProvingOrchestrator) {}
|
|
11
|
+
|
|
12
|
+
startNewEpoch(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number): void {
|
|
13
|
+
this.orchestrator.startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks);
|
|
14
|
+
this.facade.start();
|
|
15
|
+
}
|
|
16
|
+
startTubeCircuits(txs: Tx[]): void {
|
|
17
|
+
this.orchestrator.startTubeCircuits(txs);
|
|
18
|
+
}
|
|
19
|
+
setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise<L2Block> {
|
|
20
|
+
return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
|
|
21
|
+
}
|
|
22
|
+
finaliseEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof }> {
|
|
23
|
+
return this.orchestrator.finaliseEpoch();
|
|
24
|
+
}
|
|
25
|
+
cancel(): void {
|
|
26
|
+
this.orchestrator.cancel();
|
|
27
|
+
}
|
|
28
|
+
getProverId(): Fr {
|
|
29
|
+
return this.orchestrator.getProverId();
|
|
30
|
+
}
|
|
31
|
+
getBlock(index: number): L2Block {
|
|
32
|
+
return this.orchestrator.getBlock(index);
|
|
33
|
+
}
|
|
34
|
+
async stop(): Promise<void> {
|
|
35
|
+
await this.facade.stop();
|
|
36
|
+
await this.orchestrator.stop();
|
|
37
|
+
}
|
|
38
|
+
startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void> {
|
|
39
|
+
return this.orchestrator.startNewBlock(globalVariables, l1ToL2Messages);
|
|
40
|
+
}
|
|
41
|
+
addTxs(txs: ProcessedTx[]): Promise<void> {
|
|
42
|
+
return this.orchestrator.addTxs(txs);
|
|
43
|
+
}
|
|
44
|
+
}
|