@aztec/prover-client 0.49.2 → 0.51.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/mocks/test_context.js +2 -2
- package/dest/orchestrator/block-building-helpers.d.ts +14 -3
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +34 -8
- package/dest/orchestrator/orchestrator.d.ts +8 -2
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +51 -25
- package/dest/orchestrator/proving-state.d.ts +4 -4
- package/dest/orchestrator/proving-state.d.ts.map +1 -1
- package/dest/orchestrator/proving-state.js +3 -3
- package/dest/prover-agent/memory-proving-queue.d.ts +11 -1
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +15 -1
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +7 -1
- package/dest/prover-agent/rpc.d.ts.map +1 -1
- package/dest/prover-agent/rpc.js +8 -2
- package/package.json +10 -10
- package/src/mocks/test_context.ts +1 -1
- package/src/orchestrator/block-building-helpers.ts +75 -8
- package/src/orchestrator/orchestrator.ts +75 -24
- package/src/orchestrator/proving-state.ts +4 -4
- package/src/prover-agent/memory-proving-queue.ts +27 -0
- package/src/prover-agent/prover-agent.ts +8 -0
- package/src/prover-agent/rpc.ts +9 -0
|
@@ -134,6 +134,12 @@ export class ProverAgent {
|
|
|
134
134
|
case ProvingRequestType.MERGE_ROLLUP: {
|
|
135
135
|
return this.circuitProver.getMergeRollupProof(inputs);
|
|
136
136
|
}
|
|
137
|
+
case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
|
|
138
|
+
return this.circuitProver.getBlockRootRollupProof(inputs);
|
|
139
|
+
}
|
|
140
|
+
case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
|
|
141
|
+
return this.circuitProver.getBlockMergeRollupProof(inputs);
|
|
142
|
+
}
|
|
137
143
|
case ProvingRequestType.ROOT_ROLLUP: {
|
|
138
144
|
return this.circuitProver.getRootRollupProof(inputs);
|
|
139
145
|
}
|
|
@@ -156,4 +162,4 @@ export class ProverAgent {
|
|
|
156
162
|
}
|
|
157
163
|
}
|
|
158
164
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1hZ2VudC9wcm92ZXItYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLGtCQUFrQixHQUVuQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLENBQUMsYUFBYTtBQUU5Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBV3RCO0lBQ0UsaURBQWlEO0lBQ3pDLGFBQWtDO0lBQzFDLDhEQUE4RDtJQUN0RCxpQkFBaUIsQ0FBQztJQUMxQixvQ0FBb0M7SUFDNUIsaUJBQWlCLEdBQUcsRUFDcEIsTUFBTSxpQkFBaUIsQ0FBQyxrQ0FBa0MsQ0FBQztRQUwzRCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFFbEMsbUJBQWMsR0FBZCxjQUFjLENBQUk7UUFFbEIsbUJBQWMsR0FBZCxjQUFjLENBQU07UUFDcEIsUUFBRyxHQUFILEdBQUcsQ0FBd0Q7UUFqQjdELHFCQUFnQixHQUFHLElBQUksR0FBRyxFQU8vQixDQUFDO0lBV0QsQ0FBQztJQUVKLGlCQUFpQixDQUFDLGNBQXNCO1FBQ3RDLElBQUksY0FBYyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLGFBQWtDO1FBQ2pELElB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
|
|
@@ -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;AA4B7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAIlE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CAgCnF;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,yFAA8B,GAClC,gBAAgB,CAmClB"}
|
package/dest/prover-agent/rpc.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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';
|
|
1
|
+
import { AvmCircuitInputs, BaseOrMergeRollupPublicInputs, BaseParityInputs, BaseRollupInputs, BlockMergeRollupInputs, BlockRootOrBlockMergePublicInputs, BlockRootRollupInputs, 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';
|
|
@@ -26,6 +26,9 @@ export function createProvingJobSourceServer(queue) {
|
|
|
26
26
|
RootRollupPublicInputs,
|
|
27
27
|
TubeInputs,
|
|
28
28
|
VerificationKeyData,
|
|
29
|
+
BlockRootOrBlockMergePublicInputs,
|
|
30
|
+
BlockMergeRollupInputs,
|
|
31
|
+
BlockRootRollupInputs,
|
|
29
32
|
}, {});
|
|
30
33
|
}
|
|
31
34
|
export function createProvingJobSourceClient(url, namespace, fetch = makeFetch([1, 2, 3], false)) {
|
|
@@ -52,6 +55,9 @@ export function createProvingJobSourceClient(url, namespace, fetch = makeFetch([
|
|
|
52
55
|
RootRollupInputs,
|
|
53
56
|
TubeInputs,
|
|
54
57
|
VerificationKeyData,
|
|
58
|
+
BlockRootOrBlockMergePublicInputs,
|
|
59
|
+
BlockMergeRollupInputs,
|
|
60
|
+
BlockRootRollupInputs,
|
|
55
61
|
}, {}, false, namespace, fetch);
|
|
56
62
|
}
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1hZ2VudC9ycGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw2QkFBNkIsRUFDN0IsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsaUNBQWlDLEVBQ2pDLHFCQUFxQixFQUNyQixFQUFFLEVBQ0YsTUFBTSxFQUNOLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixLQUFLLEVBQ0wsZ0NBQWdDLEVBQ2hDLCtCQUErQixFQUMvQixvQ0FBb0MsRUFDcEMsY0FBYyxFQUNkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLEtBQXVCO0lBQ2xFLE9BQU8sSUFBSSxhQUFhLENBQ3RCLEtBQUssRUFDTDtRQUNFLGdCQUFnQjtRQUNoQiw2QkFBNkI7UUFDN0IsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixFQUFFO1FBQ0YsTUFBTTtRQUNOLHlCQUF5QjtRQUN6QixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLEtBQUs7UUFDTCxZQUFZO1FBQ1osMkJBQTJCO1FBQzNCLGdDQUFnQztRQUNoQywrQkFBK0I7UUFDL0Isb0NBQW9DO1FBQ3BDLGNBQWM7UUFDZCxlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsVUFBVTtRQUNWLG1CQUFtQjtRQUNuQixpQ0FBaUM7UUFDakMsc0JBQXNCO1FBQ3RCLHFCQUFxQjtLQUN0QixFQUNELEVBQUUsQ0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsR0FBVyxFQUNYLFNBQWtCLEVBQ2xCLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUVuQyxPQUFPLG1CQUFtQixDQUN4QixHQUFHLEVBQ0g7UUFDRSxnQkFBZ0I7UUFDaEIsNkJBQTZCO1FBQzdCLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsRUFBRTtRQUNGLE1BQU07UUFDTix5QkFBeUI7UUFDekIsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixLQUFLO1FBQ0wsWUFBWTtRQUNaLDJCQUEyQjtRQUMzQixnQ0FBZ0M7UUFDaEMsK0JBQStCO1FBQy9CLG9DQUFvQztRQUNwQyxjQUFjO1FBQ2QsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsZ0JBQWdCO1FBQ2hCLFVBQVU7UUFDVixtQkFBbUI7UUFDbkIsaUNBQWlDO1FBQ2pDLHNCQUFzQjtRQUN0QixxQkFBcUI7S0FDdEIsRUFDRCxFQUFFLEVBQ0YsS0FBSyxFQUNMLFNBQVMsRUFDVCxLQUFLLENBQ2MsQ0FBQztBQUN4QixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.51.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -59,15 +59,15 @@
|
|
|
59
59
|
]
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@aztec/bb-prover": "0.
|
|
63
|
-
"@aztec/circuit-types": "0.
|
|
64
|
-
"@aztec/circuits.js": "0.
|
|
65
|
-
"@aztec/foundation": "0.
|
|
66
|
-
"@aztec/kv-store": "0.
|
|
67
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
68
|
-
"@aztec/simulator": "0.
|
|
69
|
-
"@aztec/telemetry-client": "0.
|
|
70
|
-
"@aztec/world-state": "0.
|
|
62
|
+
"@aztec/bb-prover": "0.51.0",
|
|
63
|
+
"@aztec/circuit-types": "0.51.0",
|
|
64
|
+
"@aztec/circuits.js": "0.51.0",
|
|
65
|
+
"@aztec/foundation": "0.51.0",
|
|
66
|
+
"@aztec/kv-store": "0.51.0",
|
|
67
|
+
"@aztec/noir-protocol-circuits-types": "0.51.0",
|
|
68
|
+
"@aztec/simulator": "0.51.0",
|
|
69
|
+
"@aztec/telemetry-client": "0.51.0",
|
|
70
|
+
"@aztec/world-state": "0.51.0",
|
|
71
71
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
72
72
|
"commander": "^12.1.0",
|
|
73
73
|
"lodash.chunk": "^4.2.0",
|
|
@@ -68,8 +68,8 @@ export class TestContext {
|
|
|
68
68
|
const publicContractsDB = mock<ContractsDataSourcePublicDB>();
|
|
69
69
|
const publicWorldStateDB = mock<WorldStatePublicDB>();
|
|
70
70
|
const publicKernel = new RealPublicKernelCircuitSimulator(new WASMSimulator());
|
|
71
|
-
const actualDb = await MerkleTrees.new(openTmpStore()).then(t => t.asLatest());
|
|
72
71
|
const telemetry = new NoopTelemetryClient();
|
|
72
|
+
const actualDb = await MerkleTrees.new(openTmpStore(), telemetry).then(t => t.asLatest());
|
|
73
73
|
const processor = new PublicProcessor(
|
|
74
74
|
actualDb,
|
|
75
75
|
publicExecutor,
|
|
@@ -4,9 +4,13 @@ import {
|
|
|
4
4
|
AppendOnlyTreeSnapshot,
|
|
5
5
|
type BaseOrMergeRollupPublicInputs,
|
|
6
6
|
BaseRollupInputs,
|
|
7
|
+
BlockMergeRollupInputs,
|
|
8
|
+
type BlockRootOrBlockMergePublicInputs,
|
|
9
|
+
BlockRootRollupInputs,
|
|
7
10
|
ConstantRollupData,
|
|
8
11
|
Fr,
|
|
9
12
|
type GlobalVariables,
|
|
13
|
+
type Header,
|
|
10
14
|
KernelData,
|
|
11
15
|
type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
12
16
|
MAX_NULLIFIERS_PER_TX,
|
|
@@ -25,6 +29,7 @@ import {
|
|
|
25
29
|
PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH,
|
|
26
30
|
PUBLIC_DATA_TREE_HEIGHT,
|
|
27
31
|
PartialStateReference,
|
|
32
|
+
PreviousRollupBlockData,
|
|
28
33
|
PreviousRollupData,
|
|
29
34
|
PublicDataHint,
|
|
30
35
|
PublicDataTreeLeaf,
|
|
@@ -34,7 +39,6 @@ import {
|
|
|
34
39
|
type RecursiveProof,
|
|
35
40
|
type RootParityInput,
|
|
36
41
|
RootRollupInputs,
|
|
37
|
-
type RootRollupPublicInputs,
|
|
38
42
|
StateDiffHints,
|
|
39
43
|
type StateReference,
|
|
40
44
|
VK_TREE_HEIGHT,
|
|
@@ -185,11 +189,35 @@ export function createMergeRollupInputs(
|
|
|
185
189
|
return mergeInputs;
|
|
186
190
|
}
|
|
187
191
|
|
|
192
|
+
// TODO(#7346): Integrate batch rollup circuits and test below
|
|
193
|
+
export function createBlockMergeRollupInputs(
|
|
194
|
+
left: [
|
|
195
|
+
BlockRootOrBlockMergePublicInputs,
|
|
196
|
+
RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
197
|
+
VerificationKeyAsFields,
|
|
198
|
+
],
|
|
199
|
+
right: [
|
|
200
|
+
BlockRootOrBlockMergePublicInputs,
|
|
201
|
+
RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
202
|
+
VerificationKeyAsFields,
|
|
203
|
+
],
|
|
204
|
+
) {
|
|
205
|
+
const mergeInputs = new BlockMergeRollupInputs([
|
|
206
|
+
getPreviousRollupBlockDataFromPublicInputs(left[0], left[1], left[2]),
|
|
207
|
+
getPreviousRollupBlockDataFromPublicInputs(right[0], right[1], right[2]),
|
|
208
|
+
]);
|
|
209
|
+
return mergeInputs;
|
|
210
|
+
}
|
|
211
|
+
|
|
188
212
|
// Validate that the roots of all local trees match the output of the root circuit simulation
|
|
189
|
-
export async function
|
|
213
|
+
export async function validateBlockRootOutput(
|
|
214
|
+
blockRootOutput: BlockRootOrBlockMergePublicInputs,
|
|
215
|
+
blockHeader: Header,
|
|
216
|
+
db: MerkleTreeOperations,
|
|
217
|
+
) {
|
|
190
218
|
await Promise.all([
|
|
191
|
-
validateState(
|
|
192
|
-
validateSimulatedTree(await getTreeSnapshot(MerkleTreeId.ARCHIVE, db),
|
|
219
|
+
validateState(blockHeader.state, db),
|
|
220
|
+
validateSimulatedTree(await getTreeSnapshot(MerkleTreeId.ARCHIVE, db), blockRootOutput.newArchive, 'Archive'),
|
|
193
221
|
]);
|
|
194
222
|
}
|
|
195
223
|
|
|
@@ -210,8 +238,8 @@ export async function validateState(state: StateReference, db: MerkleTreeOperati
|
|
|
210
238
|
);
|
|
211
239
|
}
|
|
212
240
|
|
|
213
|
-
// Builds the inputs for the root rollup circuit, without making any changes to trees
|
|
214
|
-
export async function
|
|
241
|
+
// Builds the inputs for the block root rollup circuit, without making any changes to trees
|
|
242
|
+
export async function getBlockRootRollupInput(
|
|
215
243
|
rollupOutputLeft: BaseOrMergeRollupPublicInputs,
|
|
216
244
|
rollupProofLeft: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
217
245
|
verificationKeyLeft: VerificationKeyAsFields,
|
|
@@ -225,7 +253,7 @@ export async function getRootRollupInput(
|
|
|
225
253
|
db: MerkleTreeOperations,
|
|
226
254
|
proverId: Fr,
|
|
227
255
|
) {
|
|
228
|
-
const previousRollupData:
|
|
256
|
+
const previousRollupData: BlockRootRollupInputs['previousRollupData'] = [
|
|
229
257
|
getPreviousRollupDataFromPublicInputs(rollupOutputLeft, rollupProofLeft, verificationKeyLeft),
|
|
230
258
|
getPreviousRollupDataFromPublicInputs(rollupOutputRight, rollupProofRight, verificationKeyRight),
|
|
231
259
|
];
|
|
@@ -246,7 +274,7 @@ export async function getRootRollupInput(
|
|
|
246
274
|
0,
|
|
247
275
|
);
|
|
248
276
|
|
|
249
|
-
return
|
|
277
|
+
return BlockRootRollupInputs.from({
|
|
250
278
|
previousRollupData,
|
|
251
279
|
l1ToL2Roots,
|
|
252
280
|
newL1ToL2Messages,
|
|
@@ -254,6 +282,30 @@ export async function getRootRollupInput(
|
|
|
254
282
|
startL1ToL2MessageTreeSnapshot: messageTreeSnapshot,
|
|
255
283
|
startArchiveSnapshot,
|
|
256
284
|
newArchiveSiblingPath,
|
|
285
|
+
// TODO(#7346): Inject previous block hash (required when integrating batch rollup circuits)
|
|
286
|
+
previousBlockHash: Fr.ZERO,
|
|
287
|
+
proverId,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Builds the inputs for the final root rollup circuit, without making any changes to trees
|
|
292
|
+
// TODO(#7346): Integrate batch rollup circuits and test below
|
|
293
|
+
export function getRootRollupInput(
|
|
294
|
+
rollupOutputLeft: BlockRootOrBlockMergePublicInputs,
|
|
295
|
+
rollupProofLeft: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
296
|
+
verificationKeyLeft: VerificationKeyAsFields,
|
|
297
|
+
rollupOutputRight: BlockRootOrBlockMergePublicInputs,
|
|
298
|
+
rollupProofRight: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
299
|
+
verificationKeyRight: VerificationKeyAsFields,
|
|
300
|
+
proverId: Fr,
|
|
301
|
+
) {
|
|
302
|
+
const previousRollupData: RootRollupInputs['previousRollupData'] = [
|
|
303
|
+
getPreviousRollupBlockDataFromPublicInputs(rollupOutputLeft, rollupProofLeft, verificationKeyLeft),
|
|
304
|
+
getPreviousRollupBlockDataFromPublicInputs(rollupOutputRight, rollupProofRight, verificationKeyRight),
|
|
305
|
+
];
|
|
306
|
+
|
|
307
|
+
return RootRollupInputs.from({
|
|
308
|
+
previousRollupData,
|
|
257
309
|
proverId,
|
|
258
310
|
});
|
|
259
311
|
}
|
|
@@ -273,6 +325,21 @@ export function getPreviousRollupDataFromPublicInputs(
|
|
|
273
325
|
);
|
|
274
326
|
}
|
|
275
327
|
|
|
328
|
+
export function getPreviousRollupBlockDataFromPublicInputs(
|
|
329
|
+
rollupOutput: BlockRootOrBlockMergePublicInputs,
|
|
330
|
+
rollupProof: RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
331
|
+
vk: VerificationKeyAsFields,
|
|
332
|
+
) {
|
|
333
|
+
const leafIndex = getVKIndex(vk);
|
|
334
|
+
|
|
335
|
+
return new PreviousRollupBlockData(
|
|
336
|
+
rollupOutput,
|
|
337
|
+
rollupProof,
|
|
338
|
+
vk,
|
|
339
|
+
new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)),
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
|
|
276
343
|
export async function getConstantRollupData(
|
|
277
344
|
globalVariables: GlobalVariables,
|
|
278
345
|
db: MerkleTreeOperations,
|
|
@@ -32,8 +32,10 @@ import {
|
|
|
32
32
|
type BaseOrMergeRollupPublicInputs,
|
|
33
33
|
BaseParityInputs,
|
|
34
34
|
type BaseRollupInputs,
|
|
35
|
+
ContentCommitment,
|
|
35
36
|
Fr,
|
|
36
37
|
type GlobalVariables,
|
|
38
|
+
Header,
|
|
37
39
|
type KernelCircuitPublicInputs,
|
|
38
40
|
L1_TO_L2_MSG_SUBTREE_HEIGHT,
|
|
39
41
|
L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
@@ -47,6 +49,7 @@ import {
|
|
|
47
49
|
type RecursiveProof,
|
|
48
50
|
type RootParityInput,
|
|
49
51
|
RootParityInputs,
|
|
52
|
+
StateReference,
|
|
50
53
|
type TUBE_PROOF_LENGTH,
|
|
51
54
|
TubeInputs,
|
|
52
55
|
type VerificationKeyAsFields,
|
|
@@ -56,6 +59,7 @@ import {
|
|
|
56
59
|
} from '@aztec/circuits.js';
|
|
57
60
|
import { makeTuple } from '@aztec/foundation/array';
|
|
58
61
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
62
|
+
import { sha256Trunc } from '@aztec/foundation/crypto';
|
|
59
63
|
import { AbortError } from '@aztec/foundation/error';
|
|
60
64
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
61
65
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
@@ -71,11 +75,11 @@ import { inspect } from 'util';
|
|
|
71
75
|
import {
|
|
72
76
|
buildBaseRollupInput,
|
|
73
77
|
createMergeRollupInputs,
|
|
74
|
-
|
|
78
|
+
getBlockRootRollupInput,
|
|
75
79
|
getSubtreeSiblingPath,
|
|
76
80
|
getTreeSnapshot,
|
|
81
|
+
validateBlockRootOutput,
|
|
77
82
|
validatePartialState,
|
|
78
|
-
validateRootOutput,
|
|
79
83
|
validateTx,
|
|
80
84
|
} from './block-building-helpers.js';
|
|
81
85
|
import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
|
|
@@ -392,6 +396,52 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
392
396
|
this.provingState?.cancel();
|
|
393
397
|
}
|
|
394
398
|
|
|
399
|
+
/**
|
|
400
|
+
* Extract the block header from public inputs.
|
|
401
|
+
* TODO(#7346): Refactor this once new batch rollup circuits are integrated
|
|
402
|
+
* @returns The header of this proving state's block.
|
|
403
|
+
*/
|
|
404
|
+
private async extractBlockHeader() {
|
|
405
|
+
if (
|
|
406
|
+
!this.provingState ||
|
|
407
|
+
!this.provingState.blockRootRollupPublicInputs ||
|
|
408
|
+
!this.provingState.finalRootParityInput?.publicInputs.shaRoot
|
|
409
|
+
) {
|
|
410
|
+
throw new Error(`Invalid proving state, a block must be proven before its header can be extracted.`);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
const rootRollupOutputs = this.provingState.blockRootRollupPublicInputs;
|
|
414
|
+
const previousMergeData = this.provingState.getMergeInputs(0).inputs;
|
|
415
|
+
|
|
416
|
+
if (!previousMergeData[0] || !previousMergeData[1]) {
|
|
417
|
+
throw new Error(`Invalid proving state, final merge inputs before block root circuit missing.`);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
const contentCommitment = new ContentCommitment(
|
|
421
|
+
new Fr(previousMergeData[0].numTxs + previousMergeData[1].numTxs),
|
|
422
|
+
sha256Trunc(
|
|
423
|
+
Buffer.concat([previousMergeData[0].txsEffectsHash.toBuffer(), previousMergeData[1].txsEffectsHash.toBuffer()]),
|
|
424
|
+
),
|
|
425
|
+
this.provingState.finalRootParityInput.publicInputs.shaRoot.toBuffer(),
|
|
426
|
+
sha256Trunc(Buffer.concat([previousMergeData[0].outHash.toBuffer(), previousMergeData[1].outHash.toBuffer()])),
|
|
427
|
+
);
|
|
428
|
+
const state = new StateReference(
|
|
429
|
+
await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.db),
|
|
430
|
+
previousMergeData[1].end,
|
|
431
|
+
);
|
|
432
|
+
const header = new Header(
|
|
433
|
+
rootRollupOutputs.previousArchive,
|
|
434
|
+
contentCommitment,
|
|
435
|
+
state,
|
|
436
|
+
previousMergeData[0].constants.globalVariables,
|
|
437
|
+
previousMergeData[0].accumulatedFees.add(previousMergeData[1].accumulatedFees),
|
|
438
|
+
);
|
|
439
|
+
if (!header.hash().equals(rootRollupOutputs.endBlockHash)) {
|
|
440
|
+
throw new Error(`Block header mismatch in finalise.`);
|
|
441
|
+
}
|
|
442
|
+
return header;
|
|
443
|
+
}
|
|
444
|
+
|
|
395
445
|
/**
|
|
396
446
|
* Performs the final tree update for the block and returns the fully proven block.
|
|
397
447
|
* @returns The fully proven block and proof.
|
|
@@ -407,7 +457,7 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
407
457
|
try {
|
|
408
458
|
if (
|
|
409
459
|
!this.provingState ||
|
|
410
|
-
!this.provingState.
|
|
460
|
+
!this.provingState.blockRootRollupPublicInputs ||
|
|
411
461
|
!this.provingState.finalProof ||
|
|
412
462
|
!this.provingState.finalAggregationObject
|
|
413
463
|
) {
|
|
@@ -417,12 +467,13 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
417
467
|
throw new Error('Block already finalised');
|
|
418
468
|
}
|
|
419
469
|
|
|
420
|
-
const rootRollupOutputs = this.provingState.
|
|
470
|
+
const rootRollupOutputs = this.provingState.blockRootRollupPublicInputs;
|
|
471
|
+
const header = await this.extractBlockHeader();
|
|
421
472
|
|
|
422
473
|
logger?.debug(`Updating and validating root trees`);
|
|
423
|
-
await this.db.updateArchive(
|
|
474
|
+
await this.db.updateArchive(header);
|
|
424
475
|
|
|
425
|
-
await
|
|
476
|
+
await validateBlockRootOutput(rootRollupOutputs, header, this.db);
|
|
426
477
|
|
|
427
478
|
// Collect all new nullifiers, commitments, and contracts from all txs in this block
|
|
428
479
|
const gasFees = this.provingState.globalVariables.gasFees;
|
|
@@ -432,21 +483,21 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
432
483
|
const blockBody = new Body(nonEmptyTxEffects);
|
|
433
484
|
|
|
434
485
|
const l2Block = L2Block.fromFields({
|
|
435
|
-
archive: rootRollupOutputs.
|
|
436
|
-
header:
|
|
486
|
+
archive: rootRollupOutputs.newArchive,
|
|
487
|
+
header: header,
|
|
437
488
|
body: blockBody,
|
|
438
489
|
});
|
|
439
490
|
|
|
440
|
-
if (!l2Block.body.getTxsEffectsHash().equals(
|
|
491
|
+
if (!l2Block.body.getTxsEffectsHash().equals(header.contentCommitment.txsEffectsHash)) {
|
|
441
492
|
logger.debug(inspect(blockBody));
|
|
442
493
|
throw new Error(
|
|
443
494
|
`Txs effects hash mismatch, ${l2Block.body
|
|
444
495
|
.getTxsEffectsHash()
|
|
445
|
-
.toString('hex')} == ${
|
|
496
|
+
.toString('hex')} == ${header.contentCommitment.txsEffectsHash.toString('hex')} `,
|
|
446
497
|
);
|
|
447
498
|
}
|
|
448
499
|
|
|
449
|
-
logger.info(`
|
|
500
|
+
logger.info(`Orchestrator finalised block ${l2Block.number}`);
|
|
450
501
|
|
|
451
502
|
this.provingState.block = l2Block;
|
|
452
503
|
|
|
@@ -756,7 +807,7 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
756
807
|
);
|
|
757
808
|
}
|
|
758
809
|
|
|
759
|
-
// Executes the merge rollup circuit and stored the output as intermediate state for the parent merge/root circuit
|
|
810
|
+
// Executes the merge rollup circuit and stored the output as intermediate state for the parent merge/block root circuit
|
|
760
811
|
// Enqueues the next level of merge if all inputs are available
|
|
761
812
|
private enqueueMergeRollup(
|
|
762
813
|
provingState: ProvingState,
|
|
@@ -790,8 +841,8 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
790
841
|
);
|
|
791
842
|
}
|
|
792
843
|
|
|
793
|
-
// Executes the root rollup circuit
|
|
794
|
-
private async
|
|
844
|
+
// Executes the block root rollup circuit
|
|
845
|
+
private async enqueueBlockRootRollup(provingState: ProvingState | undefined) {
|
|
795
846
|
if (!provingState?.verifyState()) {
|
|
796
847
|
logger.debug('Not running root rollup, state no longer valid');
|
|
797
848
|
return;
|
|
@@ -799,7 +850,7 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
799
850
|
const mergeInputData = provingState.getMergeInputs(0);
|
|
800
851
|
const rootParityInput = provingState.finalRootParityInput!;
|
|
801
852
|
|
|
802
|
-
const inputs = await
|
|
853
|
+
const inputs = await getBlockRootRollupInput(
|
|
803
854
|
mergeInputData.inputs[0]!,
|
|
804
855
|
mergeInputData.proofs[0]!,
|
|
805
856
|
mergeInputData.verificationKeys[0]!,
|
|
@@ -818,15 +869,15 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
818
869
|
provingState,
|
|
819
870
|
wrapCallbackInSpan(
|
|
820
871
|
this.tracer,
|
|
821
|
-
'ProvingOrchestrator.prover.
|
|
872
|
+
'ProvingOrchestrator.prover.getBlockRootRollupProof',
|
|
822
873
|
{
|
|
823
874
|
[Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
|
|
824
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'root-rollup' as CircuitName,
|
|
875
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'block-root-rollup' as CircuitName,
|
|
825
876
|
},
|
|
826
|
-
signal => this.prover.
|
|
877
|
+
signal => this.prover.getBlockRootRollupProof(inputs, signal, provingState.epochNumber),
|
|
827
878
|
),
|
|
828
879
|
result => {
|
|
829
|
-
provingState.
|
|
880
|
+
provingState.blockRootRollupPublicInputs = result.inputs;
|
|
830
881
|
provingState.finalAggregationObject = extractAggregationObject(
|
|
831
882
|
result.proof.binaryProof,
|
|
832
883
|
result.verificationKey.numPublicInputs,
|
|
@@ -886,17 +937,17 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
886
937
|
),
|
|
887
938
|
async rootInput => {
|
|
888
939
|
provingState!.finalRootParityInput = rootInput;
|
|
889
|
-
await this.
|
|
940
|
+
await this.checkAndEnqueueBlockRootRollup(provingState);
|
|
890
941
|
},
|
|
891
942
|
);
|
|
892
943
|
}
|
|
893
944
|
|
|
894
|
-
private async
|
|
895
|
-
if (!provingState?.
|
|
945
|
+
private async checkAndEnqueueBlockRootRollup(provingState: ProvingState | undefined) {
|
|
946
|
+
if (!provingState?.isReadyForBlockRootRollup()) {
|
|
896
947
|
logger.debug('Not ready for root rollup');
|
|
897
948
|
return;
|
|
898
949
|
}
|
|
899
|
-
await this.
|
|
950
|
+
await this.enqueueBlockRootRollup(provingState);
|
|
900
951
|
}
|
|
901
952
|
|
|
902
953
|
/**
|
|
@@ -925,7 +976,7 @@ export class ProvingOrchestrator implements BlockProver {
|
|
|
925
976
|
|
|
926
977
|
if (result.mergeLevel === 0n) {
|
|
927
978
|
// TODO (alexg) remove this `void`
|
|
928
|
-
void this.
|
|
979
|
+
void this.checkAndEnqueueBlockRootRollup(provingState);
|
|
929
980
|
} else {
|
|
930
981
|
// onto the next merge level
|
|
931
982
|
this.enqueueMergeRollup(provingState, result.mergeLevel, result.indexWithinMergeLevel, result.mergeInputData);
|
|
@@ -2,6 +2,7 @@ import { type L2Block, type MerkleTreeId, type ProvingResult } from '@aztec/circ
|
|
|
2
2
|
import {
|
|
3
3
|
type AppendOnlyTreeSnapshot,
|
|
4
4
|
type BaseOrMergeRollupPublicInputs,
|
|
5
|
+
type BlockRootOrBlockMergePublicInputs,
|
|
5
6
|
type Fr,
|
|
6
7
|
type GlobalVariables,
|
|
7
8
|
type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH,
|
|
@@ -11,7 +12,6 @@ import {
|
|
|
11
12
|
type RECURSIVE_PROOF_LENGTH,
|
|
12
13
|
type RecursiveProof,
|
|
13
14
|
type RootParityInput,
|
|
14
|
-
type RootRollupPublicInputs,
|
|
15
15
|
type VerificationKeyAsFields,
|
|
16
16
|
} from '@aztec/circuits.js';
|
|
17
17
|
import { type Tuple } from '@aztec/foundation/serialize';
|
|
@@ -46,7 +46,7 @@ export class ProvingState {
|
|
|
46
46
|
private mergeRollupInputs: MergeRollupInputData[] = [];
|
|
47
47
|
private rootParityInputs: Array<RootParityInput<typeof RECURSIVE_PROOF_LENGTH> | undefined> = [];
|
|
48
48
|
private finalRootParityInputs: RootParityInput<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined;
|
|
49
|
-
public
|
|
49
|
+
public blockRootRollupPublicInputs: BlockRootOrBlockMergePublicInputs | undefined;
|
|
50
50
|
public finalAggregationObject: Fr[] | undefined;
|
|
51
51
|
public finalProof: Proof | undefined;
|
|
52
52
|
public block: L2Block | undefined;
|
|
@@ -193,8 +193,8 @@ export class ProvingState {
|
|
|
193
193
|
return this.mergeRollupInputs[indexOfMerge];
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
// Returns true if we have sufficient inputs to execute the root rollup
|
|
197
|
-
public
|
|
196
|
+
// Returns true if we have sufficient inputs to execute the block root rollup
|
|
197
|
+
public isReadyForBlockRootRollup() {
|
|
198
198
|
return !(
|
|
199
199
|
this.mergeRollupInputs[0] === undefined ||
|
|
200
200
|
this.finalRootParityInput === undefined ||
|
|
@@ -15,6 +15,9 @@ import type {
|
|
|
15
15
|
BaseOrMergeRollupPublicInputs,
|
|
16
16
|
BaseParityInputs,
|
|
17
17
|
BaseRollupInputs,
|
|
18
|
+
BlockMergeRollupInputs,
|
|
19
|
+
BlockRootOrBlockMergePublicInputs,
|
|
20
|
+
BlockRootRollupInputs,
|
|
18
21
|
KernelCircuitPublicInputs,
|
|
19
22
|
MergeRollupInputs,
|
|
20
23
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
@@ -330,6 +333,30 @@ export class MemoryProvingQueue implements ServerCircuitProver, ProvingJobSource
|
|
|
330
333
|
return this.enqueue({ type: ProvingRequestType.MERGE_ROLLUP, inputs: input }, signal, epochNumber);
|
|
331
334
|
}
|
|
332
335
|
|
|
336
|
+
/**
|
|
337
|
+
* Creates a proof for the given input.
|
|
338
|
+
* @param input - Input to the circuit.
|
|
339
|
+
*/
|
|
340
|
+
getBlockRootRollupProof(
|
|
341
|
+
input: BlockRootRollupInputs,
|
|
342
|
+
signal?: AbortSignal,
|
|
343
|
+
epochNumber?: number,
|
|
344
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>> {
|
|
345
|
+
return this.enqueue({ type: ProvingRequestType.BLOCK_ROOT_ROLLUP, inputs: input }, signal, epochNumber);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Creates a proof for the given input.
|
|
350
|
+
* @param input - Input to the circuit.
|
|
351
|
+
*/
|
|
352
|
+
getBlockMergeRollupProof(
|
|
353
|
+
input: BlockMergeRollupInputs,
|
|
354
|
+
signal?: AbortSignal,
|
|
355
|
+
epochNumber?: number,
|
|
356
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs>> {
|
|
357
|
+
return this.enqueue({ type: ProvingRequestType.BLOCK_MERGE_ROLLUP, inputs: input }, signal, epochNumber);
|
|
358
|
+
}
|
|
359
|
+
|
|
333
360
|
/**
|
|
334
361
|
* Creates a proof for the given input.
|
|
335
362
|
* @param input - Input to the circuit.
|
|
@@ -183,6 +183,14 @@ export class ProverAgent {
|
|
|
183
183
|
return this.circuitProver.getMergeRollupProof(inputs);
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
+
case ProvingRequestType.BLOCK_ROOT_ROLLUP: {
|
|
187
|
+
return this.circuitProver.getBlockRootRollupProof(inputs);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
case ProvingRequestType.BLOCK_MERGE_ROLLUP: {
|
|
191
|
+
return this.circuitProver.getBlockMergeRollupProof(inputs);
|
|
192
|
+
}
|
|
193
|
+
|
|
186
194
|
case ProvingRequestType.ROOT_ROLLUP: {
|
|
187
195
|
return this.circuitProver.getRootRollupProof(inputs);
|
|
188
196
|
}
|
package/src/prover-agent/rpc.ts
CHANGED
|
@@ -4,6 +4,9 @@ import {
|
|
|
4
4
|
BaseOrMergeRollupPublicInputs,
|
|
5
5
|
BaseParityInputs,
|
|
6
6
|
BaseRollupInputs,
|
|
7
|
+
BlockMergeRollupInputs,
|
|
8
|
+
BlockRootOrBlockMergePublicInputs,
|
|
9
|
+
BlockRootRollupInputs,
|
|
7
10
|
Fr,
|
|
8
11
|
Header,
|
|
9
12
|
KernelCircuitPublicInputs,
|
|
@@ -53,6 +56,9 @@ export function createProvingJobSourceServer(queue: ProvingJobSource): JsonRpcSe
|
|
|
53
56
|
RootRollupPublicInputs,
|
|
54
57
|
TubeInputs,
|
|
55
58
|
VerificationKeyData,
|
|
59
|
+
BlockRootOrBlockMergePublicInputs,
|
|
60
|
+
BlockMergeRollupInputs,
|
|
61
|
+
BlockRootRollupInputs,
|
|
56
62
|
},
|
|
57
63
|
{},
|
|
58
64
|
);
|
|
@@ -88,6 +94,9 @@ export function createProvingJobSourceClient(
|
|
|
88
94
|
RootRollupInputs,
|
|
89
95
|
TubeInputs,
|
|
90
96
|
VerificationKeyData,
|
|
97
|
+
BlockRootOrBlockMergePublicInputs,
|
|
98
|
+
BlockMergeRollupInputs,
|
|
99
|
+
BlockRootRollupInputs,
|
|
91
100
|
},
|
|
92
101
|
{},
|
|
93
102
|
false,
|