@aztec/prover-client 0.55.1 → 0.57.0
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/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +6 -27
- package/dest/mocks/test_context.d.ts +9 -10
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +13 -15
- package/dest/orchestrator/block-building-helpers.d.ts +12 -3
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +34 -32
- package/dest/orchestrator/{proving-state.d.ts → block-proving-state.d.ts} +19 -16
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/block-proving-state.js +147 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +63 -0
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/epoch-proving-state.js +143 -0
- package/dest/orchestrator/orchestrator.d.ts +33 -15
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +315 -172
- 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 +54 -26
- package/dest/prover-agent/memory-proving-queue.d.ts +11 -5
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +16 -6
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +10 -10
- package/dest/prover-agent/rpc.d.ts.map +1 -1
- package/dest/prover-agent/rpc.js +8 -2
- package/dest/test/mock_prover.d.ts +6 -4
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +9 -3
- package/dest/tx-prover/tx-prover.d.ts +3 -3
- package/dest/tx-prover/tx-prover.d.ts.map +1 -1
- package/dest/tx-prover/tx-prover.js +1 -1
- package/package.json +15 -11
- package/src/index.ts +1 -1
- package/src/mocks/fixtures.ts +5 -49
- package/src/mocks/test_context.ts +15 -20
- package/src/orchestrator/block-building-helpers.ts +90 -57
- package/src/orchestrator/{proving-state.ts → block-proving-state.ts} +29 -53
- package/src/orchestrator/epoch-proving-state.ts +221 -0
- package/src/orchestrator/orchestrator.ts +494 -292
- package/src/orchestrator/tx-proving-state.ts +63 -27
- package/src/prover-agent/memory-proving-queue.ts +31 -16
- package/src/prover-agent/prover-agent.ts +11 -9
- package/src/prover-agent/rpc.ts +9 -0
- package/src/test/mock_prover.ts +23 -1
- package/src/tx-prover/tx-prover.ts +4 -4
- package/dest/orchestrator/proving-state.d.ts.map +0 -1
- package/dest/orchestrator/proving-state.js +0 -170
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
type AvmProvingRequest,
|
|
4
4
|
type MerkleTreeId,
|
|
5
5
|
type ProcessedTx,
|
|
6
|
+
ProvingRequestType,
|
|
6
7
|
type PublicKernelRequest,
|
|
7
|
-
PublicKernelType,
|
|
8
8
|
} from '@aztec/circuit-types';
|
|
9
9
|
import {
|
|
10
10
|
type AppendOnlyTreeSnapshot,
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
type RECURSIVE_PROOF_LENGTH,
|
|
15
15
|
type RecursiveProof,
|
|
16
16
|
type VerificationKeyData,
|
|
17
|
+
makeEmptyProof,
|
|
17
18
|
} from '@aztec/circuits.js';
|
|
18
19
|
|
|
19
20
|
export enum TX_PROVING_CODE {
|
|
@@ -25,7 +26,7 @@ export enum TX_PROVING_CODE {
|
|
|
25
26
|
export type PublicFunction = {
|
|
26
27
|
vmRequest: AvmProvingRequest | undefined;
|
|
27
28
|
vmProof: Proof | undefined;
|
|
28
|
-
previousProofType:
|
|
29
|
+
previousProofType: ProvingRequestType;
|
|
29
30
|
previousKernelProven: boolean;
|
|
30
31
|
publicKernelRequest: PublicKernelRequest;
|
|
31
32
|
};
|
|
@@ -35,6 +36,7 @@ export type PublicFunction = {
|
|
|
35
36
|
export type TxProvingInstruction = {
|
|
36
37
|
code: TX_PROVING_CODE;
|
|
37
38
|
function: PublicFunction | undefined;
|
|
39
|
+
functionIndex?: number;
|
|
38
40
|
};
|
|
39
41
|
|
|
40
42
|
/**
|
|
@@ -50,20 +52,38 @@ export class TxProvingState {
|
|
|
50
52
|
public readonly baseRollupInputs: BaseRollupInputs,
|
|
51
53
|
public readonly treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>,
|
|
52
54
|
) {
|
|
53
|
-
let previousProofType =
|
|
55
|
+
let previousProofType = ProvingRequestType.TUBE_PROOF;
|
|
54
56
|
for (let i = 0; i < processedTx.publicProvingRequests.length; i++) {
|
|
55
57
|
const provingRequest = processedTx.publicProvingRequests[i];
|
|
56
|
-
const
|
|
58
|
+
const publicKernelRequest = provingRequest.type === AVM_REQUEST ? provingRequest.kernelRequest : provingRequest;
|
|
57
59
|
const vmRequest = provingRequest.type === AVM_REQUEST ? provingRequest : undefined;
|
|
60
|
+
// TODO(#7124): Remove this temporary hack.
|
|
61
|
+
// There's no previous kernel for the first inner kernel in a chain of AvmProvingRequests.
|
|
62
|
+
// Setting its previousKernelProven to be true so that it will be ready once the vm proof is generated.
|
|
63
|
+
const previousKernelProven = !!vmRequest && previousProofType !== ProvingRequestType.PUBLIC_KERNEL_INNER;
|
|
64
|
+
const vmProof = provingRequest.type === ProvingRequestType.PUBLIC_KERNEL_TAIL ? makeEmptyProof() : undefined;
|
|
58
65
|
const publicFunction: PublicFunction = {
|
|
59
66
|
vmRequest,
|
|
60
|
-
vmProof
|
|
67
|
+
vmProof,
|
|
61
68
|
previousProofType,
|
|
62
|
-
previousKernelProven
|
|
63
|
-
publicKernelRequest:
|
|
69
|
+
previousKernelProven,
|
|
70
|
+
publicKernelRequest: {
|
|
71
|
+
type: publicKernelRequest.type,
|
|
72
|
+
// We take a deep copy (clone) of the inputs to be modified here and passed to the prover.
|
|
73
|
+
// bb-prover will also modify the inputs by reference.
|
|
74
|
+
inputs: publicKernelRequest.inputs.clone(),
|
|
75
|
+
} as PublicKernelRequest,
|
|
64
76
|
};
|
|
65
77
|
this.publicFunctions.push(publicFunction);
|
|
66
|
-
previousProofType =
|
|
78
|
+
previousProofType = publicKernelRequest.type;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (this.publicFunctions.length > 0) {
|
|
82
|
+
// The first merge kernel takes the tube proof.
|
|
83
|
+
const firstKernelIndex = this.publicFunctions.findIndex(
|
|
84
|
+
fn => fn.publicKernelRequest.type === ProvingRequestType.PUBLIC_KERNEL_MERGE,
|
|
85
|
+
);
|
|
86
|
+
this.publicFunctions[firstKernelIndex].previousProofType = ProvingRequestType.TUBE_PROOF;
|
|
67
87
|
}
|
|
68
88
|
}
|
|
69
89
|
|
|
@@ -75,29 +95,44 @@ export class TxProvingState {
|
|
|
75
95
|
verificationKey: VerificationKeyData,
|
|
76
96
|
): TxProvingInstruction {
|
|
77
97
|
const kernelRequest = this.getPublicFunctionState(provenIndex).publicKernelRequest;
|
|
78
|
-
const
|
|
79
|
-
|
|
98
|
+
const provenIsInner = kernelRequest.type === ProvingRequestType.PUBLIC_KERNEL_INNER;
|
|
99
|
+
// If the proven request is not an inner kernel, its next kernel should not be an inner kernel either.
|
|
100
|
+
const nextFunctionIndex = provenIsInner
|
|
101
|
+
? provenIndex + 1
|
|
102
|
+
: this.publicFunctions.findIndex(
|
|
103
|
+
(fn, i) => i > provenIndex && fn.publicKernelRequest.type !== ProvingRequestType.PUBLIC_KERNEL_INNER,
|
|
104
|
+
);
|
|
105
|
+
if (nextFunctionIndex >= this.publicFunctions.length || nextFunctionIndex === -1) {
|
|
80
106
|
// The next kernel index is greater than our set of functions, we are done!
|
|
81
107
|
return { code: TX_PROVING_CODE.COMPLETED, function: undefined };
|
|
82
108
|
}
|
|
83
109
|
|
|
84
110
|
// There is more work to do, are we ready?
|
|
85
|
-
const nextFunction = this.publicFunctions[
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
111
|
+
const nextFunction = this.publicFunctions[nextFunctionIndex];
|
|
112
|
+
|
|
113
|
+
if (provenIsInner && nextFunction.publicKernelRequest.type !== ProvingRequestType.PUBLIC_KERNEL_INNER) {
|
|
114
|
+
// TODO(#7124): Remove this temporary hack.
|
|
115
|
+
// If the proven request is inner (with vm proof) and the next one is regular kernel, set the vmProof to be
|
|
116
|
+
// not undefined.
|
|
117
|
+
// This should eventually be a real vm proof of the entire enqueued call.
|
|
118
|
+
nextFunction.vmProof = makeEmptyProof();
|
|
119
|
+
} else {
|
|
120
|
+
// pass both the proof and verification key forward to the next circuit
|
|
121
|
+
nextFunction.publicKernelRequest.inputs.previousKernel.proof = proof;
|
|
122
|
+
nextFunction.publicKernelRequest.inputs.previousKernel.vk = verificationKey;
|
|
123
|
+
|
|
124
|
+
// We need to update this so the state machine knows this proof is ready
|
|
125
|
+
nextFunction.previousKernelProven = true;
|
|
126
|
+
nextFunction.previousProofType = kernelRequest.type;
|
|
127
|
+
}
|
|
90
128
|
|
|
91
|
-
|
|
92
|
-
nextFunction.previousKernelProven = true;
|
|
93
|
-
nextFunction.previousProofType = kernelRequest.type;
|
|
94
|
-
if (nextFunction.vmProof === undefined) {
|
|
129
|
+
if (nextFunction.vmProof === undefined || !nextFunction.previousKernelProven) {
|
|
95
130
|
// The VM proof for the next function is not ready
|
|
96
131
|
return { code: TX_PROVING_CODE.NOT_READY, function: undefined };
|
|
97
132
|
}
|
|
98
133
|
|
|
99
134
|
// The VM proof is ready, we can continue
|
|
100
|
-
return { code: TX_PROVING_CODE.READY, function: nextFunction };
|
|
135
|
+
return { code: TX_PROVING_CODE.READY, function: nextFunction, functionIndex: nextFunctionIndex };
|
|
101
136
|
}
|
|
102
137
|
|
|
103
138
|
// Updates the transaction's proving state after completion of a tube proof
|
|
@@ -106,14 +141,16 @@ export class TxProvingState {
|
|
|
106
141
|
proof: RecursiveProof<typeof RECURSIVE_PROOF_LENGTH>,
|
|
107
142
|
verificationKey: VerificationKeyData,
|
|
108
143
|
): TxProvingInstruction {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
144
|
+
const nextFunctionIndex = this.publicFunctions.findIndex(
|
|
145
|
+
(fn, i) => i > 0 && fn.previousProofType === ProvingRequestType.TUBE_PROOF,
|
|
146
|
+
);
|
|
147
|
+
if (nextFunctionIndex === -1) {
|
|
148
|
+
// There are no public functions to be processed, we are done!
|
|
112
149
|
return { code: TX_PROVING_CODE.COMPLETED, function: undefined };
|
|
113
150
|
}
|
|
114
151
|
|
|
115
152
|
// There is more work to do, are we ready?
|
|
116
|
-
const nextFunction = this.publicFunctions[
|
|
153
|
+
const nextFunction = this.publicFunctions[nextFunctionIndex];
|
|
117
154
|
|
|
118
155
|
// pass both the proof and verification key forward to the next circuit
|
|
119
156
|
nextFunction.publicKernelRequest.inputs.previousKernel.proof = proof;
|
|
@@ -121,14 +158,13 @@ export class TxProvingState {
|
|
|
121
158
|
|
|
122
159
|
// We need to update this so the state machine knows this proof is ready
|
|
123
160
|
nextFunction.previousKernelProven = true;
|
|
124
|
-
nextFunction.previousProofType = PublicKernelType.NON_PUBLIC;
|
|
125
161
|
if (nextFunction.vmProof === undefined) {
|
|
126
162
|
// The VM proof for the next function is not ready
|
|
127
163
|
return { code: TX_PROVING_CODE.NOT_READY, function: undefined };
|
|
128
164
|
}
|
|
129
165
|
|
|
130
166
|
// The VM proof is ready, we can continue
|
|
131
|
-
return { code: TX_PROVING_CODE.READY, function: nextFunction };
|
|
167
|
+
return { code: TX_PROVING_CODE.READY, function: nextFunction, functionIndex: nextFunctionIndex };
|
|
132
168
|
}
|
|
133
169
|
|
|
134
170
|
// Updates the transaction's proving state after completion of a VM proof
|
|
@@ -142,7 +178,7 @@ export class TxProvingState {
|
|
|
142
178
|
return { code: TX_PROVING_CODE.NOT_READY, function: undefined };
|
|
143
179
|
}
|
|
144
180
|
// The previous kernel is ready so we can prove this kernel
|
|
145
|
-
return { code: TX_PROVING_CODE.READY, function: provenFunction };
|
|
181
|
+
return { code: TX_PROVING_CODE.READY, function: provenFunction, functionIndex: provenIndex };
|
|
146
182
|
}
|
|
147
183
|
|
|
148
184
|
// Returns the public function state at the given index
|
|
@@ -6,8 +6,6 @@ import {
|
|
|
6
6
|
type ProvingRequestResult,
|
|
7
7
|
ProvingRequestType,
|
|
8
8
|
type PublicInputsAndRecursiveProof,
|
|
9
|
-
type PublicKernelNonTailRequest,
|
|
10
|
-
type PublicKernelTailRequest,
|
|
11
9
|
type ServerCircuitProver,
|
|
12
10
|
} from '@aztec/circuit-types';
|
|
13
11
|
import type {
|
|
@@ -18,11 +16,15 @@ import type {
|
|
|
18
16
|
BlockMergeRollupInputs,
|
|
19
17
|
BlockRootOrBlockMergePublicInputs,
|
|
20
18
|
BlockRootRollupInputs,
|
|
19
|
+
EmptyBlockRootRollupInputs,
|
|
21
20
|
KernelCircuitPublicInputs,
|
|
22
21
|
MergeRollupInputs,
|
|
23
22
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
24
23
|
PrivateKernelEmptyInputData,
|
|
24
|
+
PublicKernelCircuitPrivateInputs,
|
|
25
25
|
PublicKernelCircuitPublicInputs,
|
|
26
|
+
PublicKernelInnerCircuitPrivateInputs,
|
|
27
|
+
PublicKernelTailCircuitPrivateInputs,
|
|
26
28
|
RECURSIVE_PROOF_LENGTH,
|
|
27
29
|
RecursiveProof,
|
|
28
30
|
RootParityInput,
|
|
@@ -30,6 +32,7 @@ import type {
|
|
|
30
32
|
RootRollupInputs,
|
|
31
33
|
RootRollupPublicInputs,
|
|
32
34
|
TubeInputs,
|
|
35
|
+
VMCircuitPublicInputs,
|
|
33
36
|
VerificationKeyData,
|
|
34
37
|
} from '@aztec/circuits.js';
|
|
35
38
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
@@ -349,6 +352,14 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
|
|
|
349
352
|
return this.enqueue({ type: ProvingRequestType.BLOCK_ROOT_ROLLUP, inputs: input }, signal, epochNumber);
|
|
350
353
|
}
|
|
351
354
|
|
|
355
|
+
getEmptyBlockRootRollupProof(
|
|
356
|
+
input: EmptyBlockRootRollupInputs,
|
|
357
|
+
signal?: AbortSignal,
|
|
358
|
+
epochNumber?: number,
|
|
359
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>> {
|
|
360
|
+
return this.enqueue({ type: ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, inputs: input }, signal, epochNumber);
|
|
361
|
+
}
|
|
362
|
+
|
|
352
363
|
/**
|
|
353
364
|
* Creates a proof for the given input.
|
|
354
365
|
* @param input - Input to the circuit.
|
|
@@ -374,19 +385,27 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
|
|
|
374
385
|
}
|
|
375
386
|
|
|
376
387
|
/**
|
|
377
|
-
* Create a public kernel proof.
|
|
388
|
+
* Create a public kernel inner proof.
|
|
389
|
+
* @param kernelRequest - Object containing the details of the proof required
|
|
390
|
+
*/
|
|
391
|
+
getPublicKernelInnerProof(
|
|
392
|
+
inputs: PublicKernelInnerCircuitPrivateInputs,
|
|
393
|
+
signal?: AbortSignal,
|
|
394
|
+
epochNumber?: number,
|
|
395
|
+
): Promise<PublicInputsAndRecursiveProof<VMCircuitPublicInputs>> {
|
|
396
|
+
return this.enqueue({ type: ProvingRequestType.PUBLIC_KERNEL_INNER, inputs }, signal, epochNumber);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Create a public kernel merge proof.
|
|
378
401
|
* @param kernelRequest - Object containing the details of the proof required
|
|
379
402
|
*/
|
|
380
|
-
|
|
381
|
-
|
|
403
|
+
getPublicKernelMergeProof(
|
|
404
|
+
inputs: PublicKernelCircuitPrivateInputs,
|
|
382
405
|
signal?: AbortSignal,
|
|
383
406
|
epochNumber?: number,
|
|
384
407
|
): Promise<PublicInputsAndRecursiveProof<PublicKernelCircuitPublicInputs>> {
|
|
385
|
-
return this.enqueue(
|
|
386
|
-
{ type: ProvingRequestType.PUBLIC_KERNEL_NON_TAIL, kernelType: kernelRequest.type, inputs: kernelRequest.inputs },
|
|
387
|
-
signal,
|
|
388
|
-
epochNumber,
|
|
389
|
-
);
|
|
408
|
+
return this.enqueue({ type: ProvingRequestType.PUBLIC_KERNEL_MERGE, inputs }, signal, epochNumber);
|
|
390
409
|
}
|
|
391
410
|
|
|
392
411
|
/**
|
|
@@ -394,15 +413,11 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
|
|
|
394
413
|
* @param kernelRequest - Object containing the details of the proof required
|
|
395
414
|
*/
|
|
396
415
|
getPublicTailProof(
|
|
397
|
-
|
|
416
|
+
inputs: PublicKernelTailCircuitPrivateInputs,
|
|
398
417
|
signal?: AbortSignal,
|
|
399
418
|
epochNumber?: number,
|
|
400
419
|
): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs>> {
|
|
401
|
-
return this.enqueue(
|
|
402
|
-
{ type: ProvingRequestType.PUBLIC_KERNEL_TAIL, kernelType: kernelRequest.type, inputs: kernelRequest.inputs },
|
|
403
|
-
signal,
|
|
404
|
-
epochNumber,
|
|
405
|
-
);
|
|
420
|
+
return this.enqueue({ type: ProvingRequestType.PUBLIC_KERNEL_TAIL, inputs }, signal, epochNumber);
|
|
406
421
|
}
|
|
407
422
|
|
|
408
423
|
/**
|
|
@@ -161,18 +161,16 @@ export class ProverAgent {
|
|
|
161
161
|
return this.circuitProver.getAvmProof(inputs);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
case ProvingRequestType.
|
|
165
|
-
return this.circuitProver.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
164
|
+
case ProvingRequestType.PUBLIC_KERNEL_INNER: {
|
|
165
|
+
return this.circuitProver.getPublicKernelInnerProof(inputs);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
case ProvingRequestType.PUBLIC_KERNEL_MERGE: {
|
|
169
|
+
return this.circuitProver.getPublicKernelMergeProof(inputs);
|
|
169
170
|
}
|
|
170
171
|
|
|
171
172
|
case ProvingRequestType.PUBLIC_KERNEL_TAIL: {
|
|
172
|
-
return this.circuitProver.getPublicTailProof(
|
|
173
|
-
type: request.kernelType,
|
|
174
|
-
inputs,
|
|
175
|
-
});
|
|
173
|
+
return this.circuitProver.getPublicTailProof(inputs);
|
|
176
174
|
}
|
|
177
175
|
|
|
178
176
|
case ProvingRequestType.BASE_ROLLUP: {
|
|
@@ -183,6 +181,10 @@ export class ProverAgent {
|
|
|
183
181
|
return this.circuitProver.getMergeRollupProof(inputs);
|
|
184
182
|
}
|
|
185
183
|
|
|
184
|
+
case ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP: {
|
|
185
|
+
return this.circuitProver.getEmptyBlockRootRollupProof(inputs);
|
|
186
|
+
}
|
|
187
|
+
|
|
186
188
|
case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
|
|
187
189
|
return this.circuitProver.getBlockRootRollupProof(inputs);
|
|
188
190
|
}
|
package/src/prover-agent/rpc.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
BlockMergeRollupInputs,
|
|
10
10
|
BlockRootOrBlockMergePublicInputs,
|
|
11
11
|
BlockRootRollupInputs,
|
|
12
|
+
EmptyBlockRootRollupInputs,
|
|
12
13
|
EthAddress,
|
|
13
14
|
Fr,
|
|
14
15
|
Header,
|
|
@@ -19,6 +20,7 @@ import {
|
|
|
19
20
|
Proof,
|
|
20
21
|
PublicKernelCircuitPrivateInputs,
|
|
21
22
|
PublicKernelCircuitPublicInputs,
|
|
23
|
+
PublicKernelInnerCircuitPrivateInputs,
|
|
22
24
|
PublicKernelTailCircuitPrivateInputs,
|
|
23
25
|
RecursiveProof,
|
|
24
26
|
RootParityInput,
|
|
@@ -26,6 +28,7 @@ import {
|
|
|
26
28
|
RootRollupInputs,
|
|
27
29
|
RootRollupPublicInputs,
|
|
28
30
|
TubeInputs,
|
|
31
|
+
VMCircuitPublicInputs,
|
|
29
32
|
VerificationKeyData,
|
|
30
33
|
} from '@aztec/circuits.js';
|
|
31
34
|
import { createJsonRpcClient, makeFetch } from '@aztec/foundation/json-rpc/client';
|
|
@@ -51,6 +54,8 @@ export function createProvingJobSourceServer(queue: ProvingJobSource): JsonRpcSe
|
|
|
51
54
|
Proof,
|
|
52
55
|
ProvingError,
|
|
53
56
|
PrivateKernelEmptyInputData,
|
|
57
|
+
VMCircuitPublicInputs,
|
|
58
|
+
PublicKernelInnerCircuitPrivateInputs,
|
|
54
59
|
PublicKernelCircuitPrivateInputs,
|
|
55
60
|
PublicKernelCircuitPublicInputs,
|
|
56
61
|
PublicKernelTailCircuitPrivateInputs,
|
|
@@ -64,6 +69,7 @@ export function createProvingJobSourceServer(queue: ProvingJobSource): JsonRpcSe
|
|
|
64
69
|
BlockRootOrBlockMergePublicInputs,
|
|
65
70
|
BlockMergeRollupInputs,
|
|
66
71
|
BlockRootRollupInputs,
|
|
72
|
+
EmptyBlockRootRollupInputs,
|
|
67
73
|
},
|
|
68
74
|
{},
|
|
69
75
|
);
|
|
@@ -90,6 +96,8 @@ export function createProvingJobSourceClient(
|
|
|
90
96
|
Proof,
|
|
91
97
|
ProvingError,
|
|
92
98
|
PrivateKernelEmptyInputData,
|
|
99
|
+
VMCircuitPublicInputs,
|
|
100
|
+
PublicKernelInnerCircuitPrivateInputs,
|
|
93
101
|
PublicKernelCircuitPrivateInputs,
|
|
94
102
|
PublicKernelCircuitPublicInputs,
|
|
95
103
|
PublicKernelTailCircuitPrivateInputs,
|
|
@@ -103,6 +111,7 @@ export function createProvingJobSourceClient(
|
|
|
103
111
|
BlockRootOrBlockMergePublicInputs,
|
|
104
112
|
BlockMergeRollupInputs,
|
|
105
113
|
BlockRootRollupInputs,
|
|
114
|
+
EmptyBlockRootRollupInputs,
|
|
106
115
|
},
|
|
107
116
|
{},
|
|
108
117
|
false,
|
package/src/test/mock_prover.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
RECURSIVE_PROOF_LENGTH,
|
|
14
14
|
type RecursiveProof,
|
|
15
15
|
type RootRollupPublicInputs,
|
|
16
|
+
type VMCircuitPublicInputs,
|
|
16
17
|
VerificationKeyData,
|
|
17
18
|
makeEmptyProof,
|
|
18
19
|
makeRecursiveProof,
|
|
@@ -24,6 +25,7 @@ import {
|
|
|
24
25
|
makePublicKernelCircuitPublicInputs,
|
|
25
26
|
makeRootParityInput,
|
|
26
27
|
makeRootRollupPublicInputs,
|
|
28
|
+
makeVMCircuitPublicInputs,
|
|
27
29
|
} from '@aztec/circuits.js/testing';
|
|
28
30
|
|
|
29
31
|
export class MockProver implements ServerCircuitProver {
|
|
@@ -76,6 +78,16 @@ export class MockProver implements ServerCircuitProver {
|
|
|
76
78
|
);
|
|
77
79
|
}
|
|
78
80
|
|
|
81
|
+
getEmptyBlockRootRollupProof(): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>> {
|
|
82
|
+
return Promise.resolve(
|
|
83
|
+
makePublicInputsAndRecursiveProof(
|
|
84
|
+
makeBlockRootOrBlockMergeRollupPublicInputs(),
|
|
85
|
+
makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
|
|
86
|
+
VerificationKeyData.makeFake(),
|
|
87
|
+
),
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
79
91
|
getBlockRootRollupProof(): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>> {
|
|
80
92
|
return Promise.resolve(
|
|
81
93
|
makePublicInputsAndRecursiveProof(
|
|
@@ -106,7 +118,17 @@ export class MockProver implements ServerCircuitProver {
|
|
|
106
118
|
);
|
|
107
119
|
}
|
|
108
120
|
|
|
109
|
-
|
|
121
|
+
getPublicKernelInnerProof(): Promise<PublicInputsAndRecursiveProof<VMCircuitPublicInputs>> {
|
|
122
|
+
return Promise.resolve(
|
|
123
|
+
makePublicInputsAndRecursiveProof(
|
|
124
|
+
makeVMCircuitPublicInputs(),
|
|
125
|
+
makeRecursiveProof(RECURSIVE_PROOF_LENGTH),
|
|
126
|
+
VerificationKeyData.makeFake(),
|
|
127
|
+
),
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
getPublicKernelMergeProof(): Promise<PublicInputsAndRecursiveProof<PublicKernelCircuitPublicInputs>> {
|
|
110
132
|
return Promise.resolve(
|
|
111
133
|
makePublicInputsAndRecursiveProof(
|
|
112
134
|
makePublicKernelCircuitPublicInputs(),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BBNativeRollupProver, TestCircuitProver } from '@aztec/bb-prover';
|
|
2
2
|
import {
|
|
3
|
-
type
|
|
4
|
-
type
|
|
3
|
+
type EpochProver,
|
|
4
|
+
type EpochProverManager,
|
|
5
5
|
type ProvingJobSource,
|
|
6
6
|
type ServerCircuitProver,
|
|
7
7
|
} from '@aztec/circuit-types/interfaces';
|
|
@@ -19,7 +19,7 @@ import { ProverAgent } from '../prover-agent/prover-agent.js';
|
|
|
19
19
|
* A prover factory.
|
|
20
20
|
* TODO(palla/prover-node): Rename this class
|
|
21
21
|
*/
|
|
22
|
-
export class TxProver implements
|
|
22
|
+
export class TxProver implements EpochProverManager {
|
|
23
23
|
private queue: MemoryProvingQueue;
|
|
24
24
|
private running = false;
|
|
25
25
|
|
|
@@ -33,7 +33,7 @@ export class TxProver implements ProverClient {
|
|
|
33
33
|
this.queue = new MemoryProvingQueue(telemetry, config.proverJobTimeoutMs, config.proverJobPollIntervalMs);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
public
|
|
36
|
+
public createEpochProver(db: MerkleTreeOperations): EpochProver {
|
|
37
37
|
return new ProvingOrchestrator(db, this.queue, this.telemetry, this.config.proverId);
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
var PROVING_STATE_LIFECYCLE;
|
|
2
|
-
(function (PROVING_STATE_LIFECYCLE) {
|
|
3
|
-
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
|
|
4
|
-
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_FULL"] = 1] = "PROVING_STATE_FULL";
|
|
5
|
-
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_RESOLVED"] = 2] = "PROVING_STATE_RESOLVED";
|
|
6
|
-
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_REJECTED"] = 3] = "PROVING_STATE_REJECTED";
|
|
7
|
-
})(PROVING_STATE_LIFECYCLE || (PROVING_STATE_LIFECYCLE = {}));
|
|
8
|
-
/**
|
|
9
|
-
* The current state of the proving schedule. Contains the raw inputs (txs) and intermediate state to generate every constituent proof in the tree.
|
|
10
|
-
* Carries an identifier so we can identify if the proving state is discarded and a new one started.
|
|
11
|
-
* Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
|
|
12
|
-
*/
|
|
13
|
-
export class ProvingState {
|
|
14
|
-
constructor(totalNumTxs, completionCallback, rejectionCallback, globalVariables, newL1ToL2Messages, numRootParityInputs, messageTreeSnapshot, messageTreeRootSiblingPath) {
|
|
15
|
-
this.totalNumTxs = totalNumTxs;
|
|
16
|
-
this.completionCallback = completionCallback;
|
|
17
|
-
this.rejectionCallback = rejectionCallback;
|
|
18
|
-
this.globalVariables = globalVariables;
|
|
19
|
-
this.newL1ToL2Messages = newL1ToL2Messages;
|
|
20
|
-
this.messageTreeSnapshot = messageTreeSnapshot;
|
|
21
|
-
this.messageTreeRootSiblingPath = messageTreeRootSiblingPath;
|
|
22
|
-
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
|
|
23
|
-
this.mergeRollupInputs = [];
|
|
24
|
-
this.rootParityInputs = [];
|
|
25
|
-
this.txs = [];
|
|
26
|
-
this.rootParityInputs = Array.from({ length: numRootParityInputs }).map(_ => undefined);
|
|
27
|
-
}
|
|
28
|
-
// Returns the number of levels of merge rollups
|
|
29
|
-
get numMergeLevels() {
|
|
30
|
-
return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1);
|
|
31
|
-
}
|
|
32
|
-
// Calculates the index and level of the parent rollup circuit
|
|
33
|
-
// Based on tree implementation in unbalanced_tree.ts -> batchInsert()
|
|
34
|
-
findMergeLevel(currentLevel, currentIndex) {
|
|
35
|
-
const moveUpMergeLevel = (levelSize, index, nodeToShift) => {
|
|
36
|
-
levelSize /= 2;
|
|
37
|
-
if (levelSize & 1) {
|
|
38
|
-
[levelSize, nodeToShift] = nodeToShift ? [levelSize + 1, false] : [levelSize - 1, true];
|
|
39
|
-
}
|
|
40
|
-
index >>= 1n;
|
|
41
|
-
return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift };
|
|
42
|
-
};
|
|
43
|
-
let [thisLevelSize, shiftUp] = this.totalNumTxs & 1 ? [this.totalNumTxs - 1, true] : [this.totalNumTxs, false];
|
|
44
|
-
const maxLevel = this.numMergeLevels + 1n;
|
|
45
|
-
let placeholder = currentIndex;
|
|
46
|
-
for (let i = 0; i < maxLevel - currentLevel; i++) {
|
|
47
|
-
({ thisLevelSize, thisIndex: placeholder, shiftUp } = moveUpMergeLevel(thisLevelSize, placeholder, shiftUp));
|
|
48
|
-
}
|
|
49
|
-
let thisIndex = currentIndex;
|
|
50
|
-
let mergeLevel = currentLevel;
|
|
51
|
-
while (thisIndex >= thisLevelSize && mergeLevel != 0n) {
|
|
52
|
-
mergeLevel -= 1n;
|
|
53
|
-
({ thisLevelSize, thisIndex, shiftUp } = moveUpMergeLevel(thisLevelSize, thisIndex, shiftUp));
|
|
54
|
-
}
|
|
55
|
-
return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n];
|
|
56
|
-
}
|
|
57
|
-
// Adds a transaction to the proving state, returns it's index
|
|
58
|
-
// Will update the proving life cycle if this is the last transaction
|
|
59
|
-
addNewTx(tx) {
|
|
60
|
-
this.txs.push(tx);
|
|
61
|
-
if (this.txs.length === this.totalNumTxs) {
|
|
62
|
-
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL;
|
|
63
|
-
}
|
|
64
|
-
return this.txs.length - 1;
|
|
65
|
-
}
|
|
66
|
-
// Returns the number of received transactions
|
|
67
|
-
get transactionsReceived() {
|
|
68
|
-
return this.txs.length;
|
|
69
|
-
}
|
|
70
|
-
// Returns the final set of root parity inputs
|
|
71
|
-
get finalRootParityInput() {
|
|
72
|
-
return this.finalRootParityInputs;
|
|
73
|
-
}
|
|
74
|
-
// Sets the final set of root parity inputs
|
|
75
|
-
set finalRootParityInput(input) {
|
|
76
|
-
this.finalRootParityInputs = input;
|
|
77
|
-
}
|
|
78
|
-
// Returns the set of root parity inputs
|
|
79
|
-
get rootParityInput() {
|
|
80
|
-
return this.rootParityInputs;
|
|
81
|
-
}
|
|
82
|
-
// Returns true if this proving state is still valid, false otherwise
|
|
83
|
-
verifyState() {
|
|
84
|
-
return (this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED ||
|
|
85
|
-
this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL);
|
|
86
|
-
}
|
|
87
|
-
// Returns true if we are still able to accept transactions, false otherwise
|
|
88
|
-
isAcceptingTransactions() {
|
|
89
|
-
return this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
|
|
90
|
-
}
|
|
91
|
-
// Returns the complete set of transaction proving state objects
|
|
92
|
-
get allTxs() {
|
|
93
|
-
return this.txs;
|
|
94
|
-
}
|
|
95
|
-
/** Returns the block number as an epoch number. Used for prioritizing proof requests. */
|
|
96
|
-
get epochNumber() {
|
|
97
|
-
return this.globalVariables.blockNumber.toNumber();
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
|
|
101
|
-
* @param mergeInputs - The inputs to store
|
|
102
|
-
* @param indexWithinMerge - The index in the set of inputs to this merge circuit
|
|
103
|
-
* @param indexOfMerge - The global index of this merge circuit
|
|
104
|
-
* @returns True if the merge circuit is ready to be executed, false otherwise
|
|
105
|
-
*/
|
|
106
|
-
storeMergeInputs(mergeInputs, indexWithinMerge, indexOfMerge) {
|
|
107
|
-
if (!this.mergeRollupInputs[indexOfMerge]) {
|
|
108
|
-
const mergeInputData = {
|
|
109
|
-
inputs: [undefined, undefined],
|
|
110
|
-
proofs: [undefined, undefined],
|
|
111
|
-
verificationKeys: [undefined, undefined],
|
|
112
|
-
};
|
|
113
|
-
mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
|
|
114
|
-
mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
|
|
115
|
-
mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
|
|
116
|
-
this.mergeRollupInputs[indexOfMerge] = mergeInputData;
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
const mergeInputData = this.mergeRollupInputs[indexOfMerge];
|
|
120
|
-
mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
|
|
121
|
-
mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
|
|
122
|
-
mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
|
|
123
|
-
return true;
|
|
124
|
-
}
|
|
125
|
-
// Returns a specific transaction proving state
|
|
126
|
-
getTxProvingState(txIndex) {
|
|
127
|
-
return this.txs[txIndex];
|
|
128
|
-
}
|
|
129
|
-
// Returns a set of merge rollup inputs
|
|
130
|
-
getMergeInputs(indexOfMerge) {
|
|
131
|
-
return this.mergeRollupInputs[indexOfMerge];
|
|
132
|
-
}
|
|
133
|
-
// Returns true if we have sufficient inputs to execute the block root rollup
|
|
134
|
-
isReadyForBlockRootRollup() {
|
|
135
|
-
return !(this.mergeRollupInputs[0] === undefined ||
|
|
136
|
-
this.finalRootParityInput === undefined ||
|
|
137
|
-
this.mergeRollupInputs[0].inputs.findIndex(p => !p) !== -1);
|
|
138
|
-
}
|
|
139
|
-
// Stores a set of root parity inputs at the given index
|
|
140
|
-
setRootParityInputs(inputs, index) {
|
|
141
|
-
this.rootParityInputs[index] = inputs;
|
|
142
|
-
}
|
|
143
|
-
// Returns true if we have sufficient root parity inputs to execute the root parity circuit
|
|
144
|
-
areRootParityInputsReady() {
|
|
145
|
-
return this.rootParityInputs.findIndex(p => !p) === -1;
|
|
146
|
-
}
|
|
147
|
-
// Attempts to reject the proving state promise with a reason of 'cancelled'
|
|
148
|
-
cancel() {
|
|
149
|
-
this.reject('Proving cancelled');
|
|
150
|
-
}
|
|
151
|
-
// Attempts to reject the proving state promise with the given reason
|
|
152
|
-
// Does nothing if not in a valid state
|
|
153
|
-
reject(reason) {
|
|
154
|
-
if (!this.verifyState()) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_REJECTED;
|
|
158
|
-
this.rejectionCallback(reason);
|
|
159
|
-
}
|
|
160
|
-
// Attempts to resolve the proving state promise with the given result
|
|
161
|
-
// Does nothing if not in a valid state
|
|
162
|
-
resolve(result) {
|
|
163
|
-
if (!this.verifyState()) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_RESOLVED;
|
|
167
|
-
this.completionCallback(result);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQkEsSUFBSyx1QkFLSjtBQUxELFdBQUssdUJBQXVCO0lBQzFCLHVHQUFxQixDQUFBO0lBQ3JCLGlHQUFrQixDQUFBO0lBQ2xCLHlHQUFzQixDQUFBO0lBQ3RCLHlHQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFMSSx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSzNCO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBU3ZCLFlBQ2tCLFdBQW1CLEVBQzNCLGtCQUFtRCxFQUNuRCxpQkFBMkMsRUFDbkMsZUFBZ0MsRUFDaEMsaUJBQXdFLEVBQ3hGLG1CQUEyQixFQUNYLG1CQUEyQyxFQUMzQywwQkFBc0Y7UUFQdEYsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDM0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFpQztRQUNuRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBQ25DLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXVEO1FBRXhFLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0RDtRQWhCaEcsMEJBQXFCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFDdEUsc0JBQWlCLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxxQkFBZ0IsR0FBc0UsRUFBRSxDQUFDO1FBS3pGLFFBQUcsR0FBcUIsRUFBRSxDQUFDO1FBV2pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxRixD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
|