@aztec/prover-client 3.0.0-devnet.2 → 3.0.0-manual.20251030
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.js +1 -1
- 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 +8 -8
- package/dest/orchestrator/epoch-proving-state.d.ts +2 -2
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +3 -3
- package/dest/orchestrator/orchestrator.d.ts +5 -5
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +30 -30
- package/dest/orchestrator/tx-proving-state.d.ts +4 -4
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +12 -12
- package/dest/prover-client/server-epoch-prover.d.ts +1 -1
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +2 -2
- package/dest/proving_broker/broker_prover_facade.d.ts +2 -2
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +2 -2
- package/dest/proving_broker/proving_broker.js +2 -2
- package/dest/proving_broker/proving_job_controller.js +2 -2
- package/dest/test/mock_prover.d.ts +2 -2
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +3 -3
- package/package.json +15 -15
- package/src/config.ts +1 -1
- package/src/orchestrator/block-building-helpers.ts +8 -10
- package/src/orchestrator/epoch-proving-state.ts +6 -4
- package/src/orchestrator/orchestrator.ts +44 -35
- package/src/orchestrator/tx-proving-state.ts +20 -16
- package/src/prover-client/server-epoch-prover.ts +2 -2
- package/src/proving_broker/broker_prover_facade.ts +9 -7
- package/src/proving_broker/proving_broker.ts +2 -2
- package/src/proving_broker/proving_job_controller.ts +2 -2
- package/src/test/mock_prover.ts +9 -7
package/dest/config.js
CHANGED
|
@@ -25,7 +25,7 @@ export const bbConfigMappings = {
|
|
|
25
25
|
},
|
|
26
26
|
numConcurrentIVCVerifiers: {
|
|
27
27
|
env: 'BB_NUM_IVC_VERIFIERS',
|
|
28
|
-
description: 'Max number of
|
|
28
|
+
description: 'Max number of chonk verifiers to run concurrently',
|
|
29
29
|
...numberConfigHelper(8)
|
|
30
30
|
},
|
|
31
31
|
bbIVCConcurrency: {
|
|
@@ -5,7 +5,7 @@ import { MembershipWitness } from '@aztec/foundation/trees';
|
|
|
5
5
|
import { Body, L2BlockHeader } from '@aztec/stdlib/block';
|
|
6
6
|
import type { MerkleTreeWriteOperations, PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
7
7
|
import { ProofData, RecursiveProof } from '@aztec/stdlib/proofs';
|
|
8
|
-
import { BlockRollupPublicInputs, PrivateBaseRollupHints, PublicBaseRollupHints,
|
|
8
|
+
import { BlockRollupPublicInputs, PrivateBaseRollupHints, PublicBaseRollupHints, PublicChonkVerifierPrivateInputs } from '@aztec/stdlib/rollup';
|
|
9
9
|
import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
10
10
|
import { BlockHeader, GlobalVariables, PartialStateReference, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
11
11
|
import type { MerkleTreeReadOperations } from '@aztec/world-state';
|
|
@@ -18,8 +18,8 @@ type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree' | 'Public
|
|
|
18
18
|
*/
|
|
19
19
|
export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
|
|
20
20
|
export declare const insertSideEffectsAndBuildBaseRollupHints: (tx: ProcessedTx, lastArchive: AppendOnlyTreeSnapshot, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, startSpongeBlob: SpongeBlob, proverId: Fr, db: MerkleTreeWriteOperations) => Promise<PublicBaseRollupHints | PrivateBaseRollupHints>;
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function
|
|
21
|
+
export declare function getChonkProofFromTx(tx: Tx | ProcessedTx): RecursiveProof<2084>;
|
|
22
|
+
export declare function getPublicChonkVerifierPrivateInputsFromTx(tx: Tx | ProcessedTx, proverId: Fr): PublicChonkVerifierPrivateInputs;
|
|
23
23
|
export declare const buildBlobHints: (blobFields: Fr[]) => {
|
|
24
24
|
blobCommitments: import("@aztec/foundation/fields").BLS12Point[];
|
|
25
25
|
blobs: import("@aztec/blob-lib").Blob[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,UAAU,EAIX,MAAM,iBAAiB,CAAC;AAkBzB,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,KAAK,EAAgC,MAAM,6BAA6B,CAAC;AACxG,OAAO,EACL,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAE9E,OAAO,KAAK,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhH,OAAO,EAAS,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAEL,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BatchedBlob, SpongeBlob, computeBlobsHashFromBlobs, getBlobCommitmentsFromBlobs, getBlobsPerL1Block } from '@aztec/blob-lib';
|
|
2
|
-
import { ARCHIVE_HEIGHT,
|
|
2
|
+
import { ARCHIVE_HEIGHT, CHONK_PROOF_LENGTH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PUBLIC_DATA_TREE_HEIGHT } from '@aztec/constants';
|
|
3
3
|
import { makeTuple } from '@aztec/foundation/array';
|
|
4
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
5
5
|
import { sha256Trunc } from '@aztec/foundation/crypto';
|
|
@@ -13,7 +13,7 @@ import { Body, L2BlockHeader, getBlockBlobFields } from '@aztec/stdlib/block';
|
|
|
13
13
|
import { getCheckpointBlobFields } from '@aztec/stdlib/checkpoint';
|
|
14
14
|
import { ContractClassLogFields } from '@aztec/stdlib/logs';
|
|
15
15
|
import { Proof, ProofData, RecursiveProof } from '@aztec/stdlib/proofs';
|
|
16
|
-
import { BlockConstantData, PrivateBaseRollupHints, PublicBaseRollupHints,
|
|
16
|
+
import { BlockConstantData, PrivateBaseRollupHints, PublicBaseRollupHints, PublicChonkVerifierPrivateInputs, TreeSnapshotDiffHints } from '@aztec/stdlib/rollup';
|
|
17
17
|
import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeafPreimage, PublicDataTreeLeaf, getTreeHeight } from '@aztec/stdlib/trees';
|
|
18
18
|
import { BlockHeader, ContentCommitment, GlobalVariables, PartialStateReference, StateReference } from '@aztec/stdlib/tx';
|
|
19
19
|
import { VkData } from '@aztec/stdlib/vks';
|
|
@@ -88,14 +88,14 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
|
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
});
|
|
91
|
-
export function
|
|
91
|
+
export function getChonkProofFromTx(tx) {
|
|
92
92
|
const publicInputs = tx.data.publicInputs().toFields();
|
|
93
|
-
const binaryProof = new Proof(Buffer.concat(tx.
|
|
94
|
-
return new RecursiveProof(tx.
|
|
93
|
+
const binaryProof = new Proof(Buffer.concat(tx.chonkProof.attachPublicInputs(publicInputs).fieldsWithPublicInputs.map((field)=>field.toBuffer())), publicInputs.length);
|
|
94
|
+
return new RecursiveProof(tx.chonkProof.fields, binaryProof, true, CHONK_PROOF_LENGTH);
|
|
95
95
|
}
|
|
96
|
-
export function
|
|
97
|
-
const proofData = new ProofData(tx.data.toPrivateToPublicKernelCircuitPublicInputs(),
|
|
98
|
-
return new
|
|
96
|
+
export function getPublicChonkVerifierPrivateInputsFromTx(tx, proverId) {
|
|
97
|
+
const proofData = new ProofData(tx.data.toPrivateToPublicKernelCircuitPublicInputs(), getChonkProofFromTx(tx), getVkData('HidingKernelToPublic'));
|
|
98
|
+
return new PublicChonkVerifierPrivateInputs(proofData, proverId);
|
|
99
99
|
}
|
|
100
100
|
// Build "hints" as the private inputs for the checkpoint root rollup circuit.
|
|
101
101
|
// The `blobCommitments` will be accumulated and checked in the root rollup against the `finalBlobChallenges`.
|
|
@@ -5,7 +5,7 @@ import type { Tuple } from '@aztec/foundation/serialize';
|
|
|
5
5
|
import { type TreeNodeLocation } from '@aztec/foundation/trees';
|
|
6
6
|
import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
7
7
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
8
|
-
import { CheckpointConstantData, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs,
|
|
8
|
+
import { CheckpointConstantData, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, PublicChonkVerifierPublicInputs, RootRollupPrivateInputs, type RootRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
9
9
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
10
10
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
11
11
|
import { CheckpointProvingState } from './checkpoint-proving-state.js';
|
|
@@ -38,7 +38,7 @@ export declare class EpochProvingState {
|
|
|
38
38
|
private endBlobAccumulator;
|
|
39
39
|
private finalBatchedBlob;
|
|
40
40
|
private provingStateLifecycle;
|
|
41
|
-
readonly
|
|
41
|
+
readonly cachedChonkVerifierProofs: Map<string, Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, 535>>>;
|
|
42
42
|
constructor(epochNumber: number, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, onCheckpointBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => void, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
|
|
43
43
|
startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, totalNumBlocks: number, totalNumBlobFields: number, previousBlockHeader: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>): CheckpointProvingState;
|
|
44
44
|
getCheckpointProvingState(index: number): CheckpointProvingState | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0B,KAAK,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACxG,OAAO,KAAK,EACV,cAAc,EACd,6CAA6C,EAE7C,yCAAyC,EAC1C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,8 +30,8 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
30
30
|
endBlobAccumulator;
|
|
31
31
|
finalBatchedBlob;
|
|
32
32
|
provingStateLifecycle;
|
|
33
|
-
// Map from tx hash to
|
|
34
|
-
|
|
33
|
+
// Map from tx hash to chonk verifier proof promise. Used when kickstarting chonk verifier proofs before tx processing.
|
|
34
|
+
cachedChonkVerifierProofs;
|
|
35
35
|
constructor(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges, onCheckpointBlobAccumulatorSet, completionCallback, rejectionCallback){
|
|
36
36
|
this.epochNumber = epochNumber;
|
|
37
37
|
this.totalNumCheckpoints = totalNumCheckpoints;
|
|
@@ -41,7 +41,7 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
41
41
|
this.rejectionCallback = rejectionCallback;
|
|
42
42
|
this.checkpoints = [];
|
|
43
43
|
this.provingStateLifecycle = 0;
|
|
44
|
-
this.
|
|
44
|
+
this.cachedChonkVerifierProofs = new Map();
|
|
45
45
|
this.checkpointProofs = new UnbalancedTreeStore(totalNumCheckpoints);
|
|
46
46
|
this.startBlobAccumulator = BatchedBlobAccumulator.newWithChallenges(finalBlobBatchingChallenges);
|
|
47
47
|
}
|
|
@@ -50,10 +50,10 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
50
50
|
*/
|
|
51
51
|
addTxs(txs: ProcessedTx[]): Promise<void>;
|
|
52
52
|
/**
|
|
53
|
-
* Kickstarts
|
|
54
|
-
* Note that if the
|
|
53
|
+
* Kickstarts chonk verifier circuits for the specified txs. These will be used during epoch proving.
|
|
54
|
+
* Note that if the chonk verifier circuits are not started this way, they will be started nontheless after processing.
|
|
55
55
|
*/
|
|
56
|
-
|
|
56
|
+
startChonkVerifierCircuits(txs: Tx[]): Promise<void>;
|
|
57
57
|
/**
|
|
58
58
|
* Marks the block as completed.
|
|
59
59
|
* Computes the block header and updates the archive tree.
|
|
@@ -83,8 +83,8 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
83
83
|
private updateL1ToL2MessageTree;
|
|
84
84
|
private prepareBaseRollupInputs;
|
|
85
85
|
private enqueueBaseRollup;
|
|
86
|
-
private
|
|
87
|
-
private
|
|
86
|
+
private getOrEnqueueChonkVerifier;
|
|
87
|
+
private doEnqueueChonkVerifier;
|
|
88
88
|
private enqueueMergeRollup;
|
|
89
89
|
private enqueueBlockRootRollup;
|
|
90
90
|
private enqueueBaseParityCircuit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAc,MAAM,iBAAiB,CAAC;AAUvF,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAQ9C,OAAO,EAAE,UAAU,EAAwB,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAML,sBAAsB,EAKtB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAgBjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAQlE;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IASnD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,GAAG,CAAqD;gBAGtD,UAAU,EAAE,wBAAwB,EACpC,MAAM,EAAE,mBAAmB,EAClB,QAAQ,EAAE,UAAU,EACrC,eAAe,GAAE,eAAsC;IAKzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,UAAU;IAIzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,aAAa,CAClB,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,2BAA2B,EAAE,2BAA2B;IAsB7C,kBAAkB,CAC7B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,sBAAsB,EACjC,cAAc,EAAE,EAAE,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,EAC1B,qCAAqC,EAAE,WAAW;IA2CpD;;;;;;OAMG;IAIU,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAwDtF;;;OAGG;IAIU,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqFtD;;;OAGG;IAEI,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ import { BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateIn
|
|
|
19
19
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
20
20
|
import { Attributes, getTelemetryClient, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
|
|
21
21
|
import { inspect } from 'util';
|
|
22
|
-
import { buildBlockHeaderFromTxs, buildHeaderFromCircuitOutputs, getLastSiblingPath,
|
|
22
|
+
import { buildBlockHeaderFromTxs, buildHeaderFromCircuitOutputs, getLastSiblingPath, getPublicChonkVerifierPrivateInputsFromTx, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, insertSideEffectsAndBuildBaseRollupHints, validatePartialState, validateTx } from './block-building-helpers.js';
|
|
23
23
|
import { EpochProvingState } from './epoch-proving-state.js';
|
|
24
24
|
import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
|
|
25
25
|
import { TxProvingState } from './tx-proving-state.js';
|
|
@@ -188,7 +188,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
188
188
|
const txProvingState = new TxProvingState(tx, hints, treeSnapshots, this.proverId.toField());
|
|
189
189
|
const txIndex = provingState.addNewTx(txProvingState);
|
|
190
190
|
if (txProvingState.requireAvmProof) {
|
|
191
|
-
this.
|
|
191
|
+
this.getOrEnqueueChonkVerifier(provingState, txIndex);
|
|
192
192
|
logger.debug(`Enqueueing public VM for tx ${txIndex}`);
|
|
193
193
|
this.enqueueVM(provingState, txIndex);
|
|
194
194
|
} else {
|
|
@@ -209,22 +209,22 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
209
209
|
await this.provingState.setBlobAccumulators();
|
|
210
210
|
}
|
|
211
211
|
/**
|
|
212
|
-
* Kickstarts
|
|
213
|
-
* Note that if the
|
|
214
|
-
*/
|
|
212
|
+
* Kickstarts chonk verifier circuits for the specified txs. These will be used during epoch proving.
|
|
213
|
+
* Note that if the chonk verifier circuits are not started this way, they will be started nontheless after processing.
|
|
214
|
+
*/ startChonkVerifierCircuits(txs) {
|
|
215
215
|
if (!this.provingState?.verifyState()) {
|
|
216
|
-
throw new Error(`Empty epoch proving state. call startNewEpoch before starting
|
|
216
|
+
throw new Error(`Empty epoch proving state. call startNewEpoch before starting chonk verifier circuits.`);
|
|
217
217
|
}
|
|
218
218
|
const publicTxs = txs.filter((tx)=>tx.data.forPublic);
|
|
219
219
|
for (const tx of publicTxs){
|
|
220
220
|
const txHash = tx.getTxHash().toString();
|
|
221
|
-
const privateInputs =
|
|
221
|
+
const privateInputs = getPublicChonkVerifierPrivateInputsFromTx(tx, this.proverId.toField());
|
|
222
222
|
const tubeProof = promiseWithResolvers();
|
|
223
|
-
logger.debug(`Starting
|
|
224
|
-
this.
|
|
223
|
+
logger.debug(`Starting chonk verifier circuit for tx ${txHash}`);
|
|
224
|
+
this.doEnqueueChonkVerifier(txHash, privateInputs, (proof)=>{
|
|
225
225
|
tubeProof.resolve(proof);
|
|
226
226
|
});
|
|
227
|
-
this.provingState.
|
|
227
|
+
this.provingState.cachedChonkVerifierProofs.set(txHash, tubeProof.promise);
|
|
228
228
|
}
|
|
229
229
|
return Promise.resolve();
|
|
230
230
|
}
|
|
@@ -406,7 +406,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
406
406
|
// Updates the merkle trees for a transaction. The first enqueued job for a transaction
|
|
407
407
|
async prepareBaseRollupInputs(tx, lastArchive, newL1ToL2MessageTreeSnapshot, startSpongeBlob, db) {
|
|
408
408
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
409
|
-
// These will be overwritten later once we have proven the
|
|
409
|
+
// These will be overwritten later once we have proven the chonk verifier circuit and any public kernels
|
|
410
410
|
const [ms, hints] = await elapsed(insertSideEffectsAndBuildBaseRollupHints(tx, lastArchive, newL1ToL2MessageTreeSnapshot, startSpongeBlob, this.proverId.toField(), db));
|
|
411
411
|
this.metrics.recordBaseRollupInputs(ms);
|
|
412
412
|
const promises = [
|
|
@@ -463,43 +463,43 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
463
463
|
}
|
|
464
464
|
});
|
|
465
465
|
}
|
|
466
|
-
// Enqueues the public
|
|
466
|
+
// Enqueues the public chonk verifier circuit for a given transaction index, or reuses the one already enqueued.
|
|
467
467
|
// Once completed, will enqueue the the public tx base rollup.
|
|
468
|
-
|
|
468
|
+
getOrEnqueueChonkVerifier(provingState, txIndex) {
|
|
469
469
|
if (!provingState.verifyState()) {
|
|
470
|
-
logger.debug('Not running
|
|
470
|
+
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
471
471
|
return;
|
|
472
472
|
}
|
|
473
473
|
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
474
474
|
const txHash = txProvingState.processedTx.hash.toString();
|
|
475
475
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH;
|
|
476
476
|
const handleResult = (result)=>{
|
|
477
|
-
logger.debug(`Got
|
|
477
|
+
logger.debug(`Got chonk verifier proof for tx index: ${txIndex}`, {
|
|
478
478
|
txHash
|
|
479
479
|
});
|
|
480
|
-
txProvingState.
|
|
481
|
-
this.provingState?.
|
|
480
|
+
txProvingState.setPublicChonkVerifierProof(result);
|
|
481
|
+
this.provingState?.cachedChonkVerifierProofs.delete(txHash);
|
|
482
482
|
this.checkAndEnqueueBaseRollup(provingState, txIndex);
|
|
483
483
|
};
|
|
484
|
-
if (this.provingState?.
|
|
485
|
-
logger.debug(`
|
|
484
|
+
if (this.provingState?.cachedChonkVerifierProofs.has(txHash)) {
|
|
485
|
+
logger.debug(`Chonk verifier proof already enqueued for tx index: ${txIndex}`, {
|
|
486
486
|
txHash
|
|
487
487
|
});
|
|
488
|
-
void this.provingState.
|
|
488
|
+
void this.provingState.cachedChonkVerifierProofs.get(txHash).then(handleResult);
|
|
489
489
|
return;
|
|
490
490
|
}
|
|
491
|
-
logger.debug(`Enqueuing
|
|
492
|
-
this.
|
|
491
|
+
logger.debug(`Enqueuing chonk verifier circuit for tx index: ${txIndex}`);
|
|
492
|
+
this.doEnqueueChonkVerifier(txHash, txProvingState.getPublicChonkVerifierPrivateInputs(), handleResult);
|
|
493
493
|
}
|
|
494
|
-
|
|
494
|
+
doEnqueueChonkVerifier(txHash, inputs, handler, provingState = this.provingState) {
|
|
495
495
|
if (!provingState.verifyState()) {
|
|
496
|
-
logger.debug('Not running
|
|
496
|
+
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
497
497
|
return;
|
|
498
498
|
}
|
|
499
|
-
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.
|
|
499
|
+
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getPublicChonkVerifierProof', {
|
|
500
500
|
[Attributes.TX_HASH]: txHash,
|
|
501
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: '
|
|
502
|
-
}, (signal)=>this.prover.
|
|
501
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'chonk-verifier-public'
|
|
502
|
+
}, (signal)=>this.prover.getPublicChonkVerifierProof(inputs, signal, provingState.epochNumber)), handler);
|
|
503
503
|
}
|
|
504
504
|
// Executes the merge rollup circuit and stored the output as intermediate state for the parent merge/block root circuit
|
|
505
505
|
// Enqueues the next level of merge if all inputs are available
|
|
@@ -818,7 +818,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
818
818
|
if (!txProvingState.ready()) {
|
|
819
819
|
return;
|
|
820
820
|
}
|
|
821
|
-
// We must have completed all proving (
|
|
821
|
+
// We must have completed all proving (chonk verifier proof and (if required) vm proof are generated), we now move to the base rollup.
|
|
822
822
|
logger.debug(`Public functions completed for tx ${txIndex} enqueueing base rollup`);
|
|
823
823
|
this.enqueueBaseRollup(provingState, txIndex);
|
|
824
824
|
}
|
|
@@ -834,8 +834,8 @@ _ts_decorate([
|
|
|
834
834
|
}))
|
|
835
835
|
], ProvingOrchestrator.prototype, "addTxs", null);
|
|
836
836
|
_ts_decorate([
|
|
837
|
-
trackSpan('ProvingOrchestrator.
|
|
838
|
-
], ProvingOrchestrator.prototype, "
|
|
837
|
+
trackSpan('ProvingOrchestrator.startChonkVerifierCircuits')
|
|
838
|
+
], ProvingOrchestrator.prototype, "startChonkVerifierCircuits", null);
|
|
839
839
|
_ts_decorate([
|
|
840
840
|
trackSpan('ProvingOrchestrator.setBlockCompleted', (blockNumber)=>({
|
|
841
841
|
[Attributes.BLOCK_NUMBER]: blockNumber
|
|
@@ -2,7 +2,7 @@ import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_ROLLUP_HONK_PROO
|
|
|
2
2
|
import type { Fr } from '@aztec/foundation/fields';
|
|
3
3
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
4
4
|
import type { ProofAndVerificationKey, PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
5
|
-
import { type BaseRollupHints, PrivateTxBaseRollupPrivateInputs,
|
|
5
|
+
import { type BaseRollupHints, PrivateTxBaseRollupPrivateInputs, PublicChonkVerifierPublicInputs, PublicTxBaseRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
6
6
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
7
7
|
import type { ProcessedTx } from '@aztec/stdlib/tx';
|
|
8
8
|
/**
|
|
@@ -16,13 +16,13 @@ export declare class TxProvingState {
|
|
|
16
16
|
private readonly baseRollupHints;
|
|
17
17
|
readonly treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>;
|
|
18
18
|
private readonly proverId;
|
|
19
|
-
private
|
|
19
|
+
private publicChonkVerifier?;
|
|
20
20
|
private avm?;
|
|
21
21
|
constructor(processedTx: ProcessedTx, baseRollupHints: BaseRollupHints, treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>, proverId: Fr);
|
|
22
22
|
get requireAvmProof(): boolean;
|
|
23
23
|
ready(): boolean;
|
|
24
24
|
getAvmInputs(): AvmCircuitInputs;
|
|
25
|
-
|
|
25
|
+
getPublicChonkVerifierPrivateInputs(): import("@aztec/stdlib/rollup").PublicChonkVerifierPrivateInputs;
|
|
26
26
|
getBaseRollupTypeAndInputs(): {
|
|
27
27
|
rollupType: string;
|
|
28
28
|
inputs: PublicTxBaseRollupPrivateInputs;
|
|
@@ -30,7 +30,7 @@ export declare class TxProvingState {
|
|
|
30
30
|
rollupType: string;
|
|
31
31
|
inputs: PrivateTxBaseRollupPrivateInputs;
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
setPublicChonkVerifierProof(publicChonkVerifierProofAndVk: PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
|
|
34
34
|
setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>): void;
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=tx-proving-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tx-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EAEpC,yCAAyC,EAC1C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAE9G,OAAO,EACL,KAAK,eAAe,EAEpB,gCAAgC,EAEhC,
|
|
1
|
+
{"version":3,"file":"tx-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/tx-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EAEpC,yCAAyC,EAC1C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAE9G,OAAO,EACL,KAAK,eAAe,EAEpB,gCAAgC,EAEhC,+BAA+B,EAC/B,+BAA+B,EAChC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AASpD;;;;GAIG;AACH,qBAAa,cAAc;;aAQP,WAAW,EAAE,WAAW;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe;aAChB,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC;IACxE,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,mBAAmB,CAAC,CAG1B;IACF,OAAO,CAAC,GAAG,CAAC,CAAuE;gBAGjE,WAAW,EAAE,WAAW,EACvB,eAAe,EAAE,eAAe,EACjC,aAAa,EAAE,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,EACvD,QAAQ,EAAE,EAAE;IAG/B,IAAI,eAAe,YAElB;IAEM,KAAK;IAIL,YAAY,IAAI,gBAAgB;IAIhC,mCAAmC;IAInC,0BAA0B;;;;;;;IAc1B,2BAA2B,CAChC,6BAA6B,EAAE,6BAA6B,CAC1D,+BAA+B,EAC/B,OAAO,yCAAyC,CACjD;IAKI,WAAW,CAAC,aAAa,EAAE,uBAAuB,CAAC,OAAO,oCAAoC,CAAC;CAiDvG"}
|
|
@@ -4,7 +4,7 @@ import { getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
|
4
4
|
import { ProofData } from '@aztec/stdlib/proofs';
|
|
5
5
|
import { PrivateBaseRollupHints, PrivateTxBaseRollupPrivateInputs, PublicBaseRollupHints, PublicTxBaseRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
6
6
|
import { VkData } from '@aztec/stdlib/vks';
|
|
7
|
-
import {
|
|
7
|
+
import { getChonkProofFromTx, getPublicChonkVerifierPrivateInputsFromTx, toProofData } from './block-building-helpers.js';
|
|
8
8
|
/**
|
|
9
9
|
* Helper class to manage the proving cycle of a transaction
|
|
10
10
|
* This includes the public VMs and the public kernels
|
|
@@ -14,7 +14,7 @@ import { getCivcProofFromTx, getPublicTubePrivateInputsFromTx, toProofData } fro
|
|
|
14
14
|
baseRollupHints;
|
|
15
15
|
treeSnapshots;
|
|
16
16
|
proverId;
|
|
17
|
-
|
|
17
|
+
publicChonkVerifier;
|
|
18
18
|
avm;
|
|
19
19
|
constructor(processedTx, baseRollupHints, treeSnapshots, proverId){
|
|
20
20
|
this.processedTx = processedTx;
|
|
@@ -26,13 +26,13 @@ import { getCivcProofFromTx, getPublicTubePrivateInputsFromTx, toProofData } fro
|
|
|
26
26
|
return !!this.processedTx.avmProvingRequest;
|
|
27
27
|
}
|
|
28
28
|
ready() {
|
|
29
|
-
return !this.requireAvmProof || !!this.avm && !!this.
|
|
29
|
+
return !this.requireAvmProof || !!this.avm && !!this.publicChonkVerifier;
|
|
30
30
|
}
|
|
31
31
|
getAvmInputs() {
|
|
32
32
|
return this.processedTx.avmProvingRequest.inputs;
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
return
|
|
34
|
+
getPublicChonkVerifierPrivateInputs() {
|
|
35
|
+
return getPublicChonkVerifierPrivateInputsFromTx(this.processedTx, this.proverId);
|
|
36
36
|
}
|
|
37
37
|
getBaseRollupTypeAndInputs() {
|
|
38
38
|
if (this.requireAvmProof) {
|
|
@@ -47,8 +47,8 @@ import { getCivcProofFromTx, getPublicTubePrivateInputsFromTx, toProofData } fro
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
this.
|
|
50
|
+
setPublicChonkVerifierProof(publicChonkVerifierProofAndVk) {
|
|
51
|
+
this.publicChonkVerifier = publicChonkVerifierProofAndVk;
|
|
52
52
|
}
|
|
53
53
|
setAvmProof(avmProofAndVk) {
|
|
54
54
|
this.avm = avmProofAndVk;
|
|
@@ -57,15 +57,15 @@ import { getCivcProofFromTx, getPublicTubePrivateInputsFromTx, toProofData } fro
|
|
|
57
57
|
if (!(this.baseRollupHints instanceof PrivateBaseRollupHints)) {
|
|
58
58
|
throw new Error('Mismatched base rollup hints, expected private base rollup hints');
|
|
59
59
|
}
|
|
60
|
-
const privateTailProofData = new ProofData(this.processedTx.data.toPrivateToRollupKernelCircuitPublicInputs(),
|
|
60
|
+
const privateTailProofData = new ProofData(this.processedTx.data.toPrivateToRollupKernelCircuitPublicInputs(), getChonkProofFromTx(this.processedTx), getVkData('HidingKernelToRollup'));
|
|
61
61
|
return new PrivateTxBaseRollupPrivateInputs(privateTailProofData, this.baseRollupHints);
|
|
62
62
|
}
|
|
63
63
|
#getPublicBaseInputs() {
|
|
64
64
|
if (!this.processedTx.avmProvingRequest) {
|
|
65
65
|
throw new Error('Should create private base rollup for a tx not requiring avm proof.');
|
|
66
66
|
}
|
|
67
|
-
if (!this.
|
|
68
|
-
throw new Error('Tx not ready for proving base rollup: public
|
|
67
|
+
if (!this.publicChonkVerifier) {
|
|
68
|
+
throw new Error('Tx not ready for proving base rollup: public chonk verifier proof undefined');
|
|
69
69
|
}
|
|
70
70
|
if (!this.avm) {
|
|
71
71
|
throw new Error('Tx not ready for proving base rollup: avm proof undefined');
|
|
@@ -73,9 +73,9 @@ import { getCivcProofFromTx, getPublicTubePrivateInputsFromTx, toProofData } fro
|
|
|
73
73
|
if (!(this.baseRollupHints instanceof PublicBaseRollupHints)) {
|
|
74
74
|
throw new Error('Mismatched base rollup hints, expected public base rollup hints');
|
|
75
75
|
}
|
|
76
|
-
const
|
|
76
|
+
const publicChonkVerifierProofData = toProofData(this.publicChonkVerifier);
|
|
77
77
|
const avmProofData = new ProofData(this.processedTx.avmProvingRequest.inputs.publicInputs, this.avm.proof, this.#getVkData(this.avm.verificationKey, AVM_VK_INDEX));
|
|
78
|
-
return new PublicTxBaseRollupPrivateInputs(
|
|
78
|
+
return new PublicTxBaseRollupPrivateInputs(publicChonkVerifierProofData, avmProofData, this.baseRollupHints);
|
|
79
79
|
}
|
|
80
80
|
#getVkData(verificationKey, vkIndex) {
|
|
81
81
|
// TODO(#17162): Add avm vk hash to the tree and call `getVkData('AVM')` instead.
|
|
@@ -15,7 +15,7 @@ export declare class ServerEpochProver implements EpochProver {
|
|
|
15
15
|
constructor(facade: BrokerCircuitProverFacade, orchestrator: ProvingOrchestrator);
|
|
16
16
|
startNewEpoch(epochNumber: number, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges): void;
|
|
17
17
|
startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, totalNumBlobFields: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader): Promise<void>;
|
|
18
|
-
|
|
18
|
+
startChonkVerifierCircuits(txs: Tx[]): Promise<void>;
|
|
19
19
|
setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise<BlockHeader>;
|
|
20
20
|
finalizeEpoch(): Promise<{
|
|
21
21
|
publicInputs: RootRollupPublicInputs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-epoch-prover.d.ts","sourceRoot":"","sources":["../../src/prover-client/server-epoch-prover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAE3F,kEAAkE;AAClE,qBAAa,iBAAkB,YAAW,WAAW;IAEjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBADZ,MAAM,EAAE,yBAAyB,EACjC,YAAY,EAAE,mBAAmB;IAG3C,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,2BAA2B,EAAE,2BAA2B,GACvD,IAAI;IAIP,kBAAkB,CAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,sBAAsB,EACjC,cAAc,EAAE,EAAE,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,EAC1B,qCAAqC,EAAE,WAAW,GACjD,OAAO,CAAC,IAAI,CAAC;IAUhB,
|
|
1
|
+
{"version":3,"file":"server-epoch-prover.d.ts","sourceRoot":"","sources":["../../src/prover-client/server-epoch-prover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAE3F,kEAAkE;AAClE,qBAAa,iBAAkB,YAAW,WAAW;IAEjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBADZ,MAAM,EAAE,yBAAyB,EACjC,YAAY,EAAE,mBAAmB;IAG3C,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,MAAM,EAC3B,2BAA2B,EAAE,2BAA2B,GACvD,IAAI;IAIP,kBAAkB,CAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,sBAAsB,EACjC,cAAc,EAAE,EAAE,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,MAAM,EAC1B,qCAAqC,EAAE,WAAW,GACjD,OAAO,CAAC,IAAI,CAAC;IAUhB,0BAA0B,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpD,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAG/F,aAAa,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,sBAAsB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,iBAAiB,EAAE,WAAW,CAAA;KAAE,CAAC;IAGhH,MAAM,IAAI,IAAI;IAGd,WAAW,IAAI,UAAU;IAGnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGzF,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAG1C"}
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, totalNumBlobFields, headerOfLastBlockInPreviousCheckpoint) {
|
|
13
13
|
return this.orchestrator.startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, totalNumBlobFields, headerOfLastBlockInPreviousCheckpoint);
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
return this.orchestrator.
|
|
15
|
+
startChonkVerifierCircuits(txs) {
|
|
16
|
+
return this.orchestrator.startChonkVerifierCircuits(txs);
|
|
17
17
|
}
|
|
18
18
|
setBlockCompleted(blockNumber, expectedBlockHeader) {
|
|
19
19
|
return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
|
|
@@ -2,7 +2,7 @@ import type { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGT
|
|
|
2
2
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
3
3
|
import { type ProofAndVerificationKey, type ProvingJobProducer, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
5
|
-
import type { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, PrivateTxBaseRollupPrivateInputs,
|
|
5
|
+
import type { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, PrivateTxBaseRollupPrivateInputs, PublicChonkVerifierPrivateInputs, PublicChonkVerifierPublicInputs, PublicTxBaseRollupPrivateInputs, RootRollupPrivateInputs, RootRollupPublicInputs, TxMergeRollupPrivateInputs, TxRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
6
6
|
import { type ProofStore } from './proof_store/index.js';
|
|
7
7
|
export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
8
8
|
private broker;
|
|
@@ -33,7 +33,7 @@ export declare class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
33
33
|
signal?: AbortSignal, epochNumber?: number): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
|
|
34
34
|
getBaseParityProof(inputs: ParityBasePrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
35
35
|
getTxMergeRollupProof(input: TxMergeRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
36
|
-
|
|
36
|
+
getPublicChonkVerifierProof(inputs: PublicChonkVerifierPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
37
37
|
getPrivateTxBaseRollupProof(baseRollupInput: PrivateTxBaseRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
38
38
|
getPublicTxBaseRollupProof(inputs: PublicTxBaseRollupPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
39
39
|
getRootParityProof(inputs: ParityRootPrivateInputs, signal?: AbortSignal, epochNumber?: number): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oCAAoC,EACpC,6BAA6B,EAC7B,yCAAyC,EACzC,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,KAAK,uBAAuB,EAI5B,KAAK,kBAAkB,EAGvB,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAEzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEjH,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,wCAAwC,EACxC,iCAAiC,EACjC,4BAA4B,EAC5B,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,iCAAiC,EACjC,4CAA4C,EAC5C,gCAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"broker_prover_facade.d.ts","sourceRoot":"","sources":["../../src/proving_broker/broker_prover_facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -317,8 +317,8 @@ export class BrokerCircuitProverFacade {
|
|
|
317
317
|
getTxMergeRollupProof(input, signal, epochNumber) {
|
|
318
318
|
return this.enqueueJob(this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber), ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber, signal);
|
|
319
319
|
}
|
|
320
|
-
|
|
321
|
-
return this.enqueueJob(this.generateId(ProvingRequestType.
|
|
320
|
+
getPublicChonkVerifierProof(inputs, signal, epochNumber) {
|
|
321
|
+
return this.enqueueJob(this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber), ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber, signal);
|
|
322
322
|
}
|
|
323
323
|
getPrivateTxBaseRollupProof(baseRollupInput, signal, epochNumber) {
|
|
324
324
|
return this.enqueueJob(this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber), ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber, signal);
|
|
@@ -61,7 +61,7 @@ import { ProvingBrokerInstrumentation } from './proving_broker_instrumentation.j
|
|
|
61
61
|
this.logger = logger;
|
|
62
62
|
this.queues = {
|
|
63
63
|
[ProvingRequestType.PUBLIC_VM]: new PriorityMemoryQueue(provingJobComparator),
|
|
64
|
-
[ProvingRequestType.
|
|
64
|
+
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: new PriorityMemoryQueue(provingJobComparator),
|
|
65
65
|
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: new PriorityMemoryQueue(provingJobComparator),
|
|
66
66
|
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: new PriorityMemoryQueue(provingJobComparator),
|
|
67
67
|
[ProvingRequestType.TX_MERGE_ROLLUP]: new PriorityMemoryQueue(provingJobComparator),
|
|
@@ -576,7 +576,7 @@ _ts_decorate([
|
|
|
576
576
|
ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
|
|
577
577
|
ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
|
|
578
578
|
ProvingRequestType.PUBLIC_VM,
|
|
579
|
-
ProvingRequestType.
|
|
579
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
580
580
|
ProvingRequestType.PARITY_ROOT,
|
|
581
581
|
ProvingRequestType.PARITY_BASE
|
|
582
582
|
];
|
|
@@ -116,9 +116,9 @@ export class ProvingJobController {
|
|
|
116
116
|
// TODO(#14234)[Unconditional PIs validation]: Remove argument "undefined".
|
|
117
117
|
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
118
118
|
}
|
|
119
|
-
case ProvingRequestType.
|
|
119
|
+
case ProvingRequestType.PUBLIC_CHONK_VERIFIER:
|
|
120
120
|
{
|
|
121
|
-
return await this.circuitProver.
|
|
121
|
+
return await this.circuitProver.getPublicChonkVerifierProof(inputs, signal, this.epochNumber);
|
|
122
122
|
}
|
|
123
123
|
case ProvingRequestType.PRIVATE_TX_BASE_ROLLUP:
|
|
124
124
|
{
|
|
@@ -2,7 +2,7 @@ import { NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
|
2
2
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
3
3
|
import { type ProvingJob, type ProvingJobId, type ProvingJobProducer, type ProvingJobStatus, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import type { ParityBasePrivateInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
5
|
-
import type { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, PrivateTxBaseRollupPrivateInputs,
|
|
5
|
+
import type { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, PrivateTxBaseRollupPrivateInputs, PublicChonkVerifierPrivateInputs, PublicChonkVerifierPublicInputs, PublicTxBaseRollupPrivateInputs, RootRollupPrivateInputs, RootRollupPublicInputs, TxMergeRollupPrivateInputs, TxRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
6
6
|
import { type ProofStore } from '../proving_broker/proof_store/index.js';
|
|
7
7
|
export declare class TestBroker implements ProvingJobProducer {
|
|
8
8
|
private proofStore;
|
|
@@ -23,7 +23,7 @@ export declare class MockProver implements ServerCircuitProver {
|
|
|
23
23
|
_signal?: AbortSignal, _epochNumber?: number): Promise<import("@aztec/stdlib/interfaces/server").ProofAndVerificationKey<20000>>;
|
|
24
24
|
getBaseParityProof(_inputs: ParityBasePrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 457>>;
|
|
25
25
|
getRootParityProof(_inputs: ParityRootPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<import("@aztec/stdlib/parity").ParityPublicInputs, 457>>;
|
|
26
|
-
|
|
26
|
+
getPublicChonkVerifierProof(_inputs: PublicChonkVerifierPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
27
27
|
getPrivateTxBaseRollupProof(_baseRollupInput: PrivateTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
28
28
|
getPublicTxBaseRollupProof(_inputs: PublicTxBaseRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
29
29
|
getTxMergeRollupProof(_input: TxMergeRollupPrivateInputs, _signal?: AbortSignal, _epochNumber?: number): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_prover.d.ts","sourceRoot":"","sources":["../../src/test/mock_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,yCAAyC,EAE1C,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAGzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE7F,OAAO,KAAK,EACV,6BAA6B,EAC7B,uBAAuB,EACvB,wCAAwC,EACxC,iCAAiC,EACjC,4BAA4B,EAC5B,yCAAyC,EACzC,oCAAoC,EACpC,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,iCAAiC,EACjC,4CAA4C,EAC5C,gCAAgC,EAChC,
|
|
1
|
+
{"version":3,"file":"mock_prover.d.ts","sourceRoot":"","sources":["../../src/test/mock_prover.ts"],"names":[],"mappings":"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"}
|
package/dest/test/mock_prover.js
CHANGED
|
@@ -2,7 +2,7 @@ import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AVM_V2_VERIFICATION_KEY_LENGTH_IN
|
|
|
2
2
|
import { times } from '@aztec/foundation/collection';
|
|
3
3
|
import { makeProofAndVerificationKey, makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import { makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
|
|
5
|
-
import { makeBlockRollupPublicInputs, makeCheckpointRollupPublicInputs, makeParityPublicInputs,
|
|
5
|
+
import { makeBlockRollupPublicInputs, makeCheckpointRollupPublicInputs, makeParityPublicInputs, makePublicChonkVerifierPublicInputs, makeRootRollupPublicInputs, makeTxRollupPublicInputs } from '@aztec/stdlib/testing';
|
|
6
6
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
7
7
|
import { InlineProofStore } from '../proving_broker/proof_store/index.js';
|
|
8
8
|
import { ProvingAgent } from '../proving_broker/proving_agent.js';
|
|
@@ -52,8 +52,8 @@ export class MockProver {
|
|
|
52
52
|
getRootParityProof(_inputs, _signal, _epochNumber) {
|
|
53
53
|
return Promise.resolve(makePublicInputsAndRecursiveProof(makeParityPublicInputs(), makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk()));
|
|
54
54
|
}
|
|
55
|
-
|
|
56
|
-
return Promise.resolve(makePublicInputsAndRecursiveProof(
|
|
55
|
+
getPublicChonkVerifierProof(_inputs, _signal, _epochNumber) {
|
|
56
|
+
return Promise.resolve(makePublicInputsAndRecursiveProof(makePublicChonkVerifierPublicInputs(), makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH), VerificationKeyData.makeFakeRollupHonk()));
|
|
57
57
|
}
|
|
58
58
|
getPrivateTxBaseRollupProof(_baseRollupInput, _signal, _epochNumber) {
|
|
59
59
|
return Promise.resolve(makePublicInputsAndRecursiveProof(makeTxRollupPublicInputs(), makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH), VerificationKeyData.makeFakeRollupHonk()));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-client",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-manual.20251030",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -67,19 +67,19 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/bb-prover": "3.0.0-
|
|
71
|
-
"@aztec/blob-lib": "3.0.0-
|
|
72
|
-
"@aztec/constants": "3.0.0-
|
|
73
|
-
"@aztec/ethereum": "3.0.0-
|
|
74
|
-
"@aztec/foundation": "3.0.0-
|
|
75
|
-
"@aztec/kv-store": "3.0.0-
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-
|
|
77
|
-
"@aztec/noir-types": "3.0.0-
|
|
78
|
-
"@aztec/protocol-contracts": "3.0.0-
|
|
79
|
-
"@aztec/simulator": "3.0.0-
|
|
80
|
-
"@aztec/stdlib": "3.0.0-
|
|
81
|
-
"@aztec/telemetry-client": "3.0.0-
|
|
82
|
-
"@aztec/world-state": "3.0.0-
|
|
70
|
+
"@aztec/bb-prover": "3.0.0-manual.20251030",
|
|
71
|
+
"@aztec/blob-lib": "3.0.0-manual.20251030",
|
|
72
|
+
"@aztec/constants": "3.0.0-manual.20251030",
|
|
73
|
+
"@aztec/ethereum": "3.0.0-manual.20251030",
|
|
74
|
+
"@aztec/foundation": "3.0.0-manual.20251030",
|
|
75
|
+
"@aztec/kv-store": "3.0.0-manual.20251030",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-manual.20251030",
|
|
77
|
+
"@aztec/noir-types": "3.0.0-manual.20251030",
|
|
78
|
+
"@aztec/protocol-contracts": "3.0.0-manual.20251030",
|
|
79
|
+
"@aztec/simulator": "3.0.0-manual.20251030",
|
|
80
|
+
"@aztec/stdlib": "3.0.0-manual.20251030",
|
|
81
|
+
"@aztec/telemetry-client": "3.0.0-manual.20251030",
|
|
82
|
+
"@aztec/world-state": "3.0.0-manual.20251030",
|
|
83
83
|
"@google-cloud/storage": "^7.15.0",
|
|
84
84
|
"@iarna/toml": "^2.2.5",
|
|
85
85
|
"commander": "^12.1.0",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"zod": "^3.23.8"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
|
-
"@aztec/noir-contracts.js": "3.0.0-
|
|
92
|
+
"@aztec/noir-contracts.js": "3.0.0-manual.20251030",
|
|
93
93
|
"@jest/globals": "^30.0.0",
|
|
94
94
|
"@types/jest": "^30.0.0",
|
|
95
95
|
"@types/node": "^22.15.17",
|
package/src/config.ts
CHANGED
|
@@ -44,7 +44,7 @@ export const bbConfigMappings: ConfigMappingsType<BBConfig & ACVMConfig> = {
|
|
|
44
44
|
},
|
|
45
45
|
numConcurrentIVCVerifiers: {
|
|
46
46
|
env: 'BB_NUM_IVC_VERIFIERS',
|
|
47
|
-
description: 'Max number of
|
|
47
|
+
description: 'Max number of chonk verifiers to run concurrently',
|
|
48
48
|
...numberConfigHelper(8),
|
|
49
49
|
},
|
|
50
50
|
bbIVCConcurrency: {
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from '@aztec/blob-lib';
|
|
9
9
|
import {
|
|
10
10
|
ARCHIVE_HEIGHT,
|
|
11
|
-
|
|
11
|
+
CHONK_PROOF_LENGTH,
|
|
12
12
|
MAX_CONTRACT_CLASS_LOGS_PER_TX,
|
|
13
13
|
MAX_NOTE_HASHES_PER_TX,
|
|
14
14
|
MAX_NULLIFIERS_PER_TX,
|
|
@@ -43,7 +43,7 @@ import {
|
|
|
43
43
|
BlockRollupPublicInputs,
|
|
44
44
|
PrivateBaseRollupHints,
|
|
45
45
|
PublicBaseRollupHints,
|
|
46
|
-
|
|
46
|
+
PublicChonkVerifierPrivateInputs,
|
|
47
47
|
TreeSnapshotDiffHints,
|
|
48
48
|
} from '@aztec/stdlib/rollup';
|
|
49
49
|
import {
|
|
@@ -217,25 +217,23 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan(
|
|
|
217
217
|
},
|
|
218
218
|
);
|
|
219
219
|
|
|
220
|
-
export function
|
|
220
|
+
export function getChonkProofFromTx(tx: Tx | ProcessedTx) {
|
|
221
221
|
const publicInputs = tx.data.publicInputs().toFields();
|
|
222
222
|
|
|
223
223
|
const binaryProof = new Proof(
|
|
224
|
-
Buffer.concat(
|
|
225
|
-
tx.clientIvcProof.attachPublicInputs(publicInputs).fieldsWithPublicInputs.map(field => field.toBuffer()),
|
|
226
|
-
),
|
|
224
|
+
Buffer.concat(tx.chonkProof.attachPublicInputs(publicInputs).fieldsWithPublicInputs.map(field => field.toBuffer())),
|
|
227
225
|
publicInputs.length,
|
|
228
226
|
);
|
|
229
|
-
return new RecursiveProof(tx.
|
|
227
|
+
return new RecursiveProof(tx.chonkProof.fields, binaryProof, true, CHONK_PROOF_LENGTH);
|
|
230
228
|
}
|
|
231
229
|
|
|
232
|
-
export function
|
|
230
|
+
export function getPublicChonkVerifierPrivateInputsFromTx(tx: Tx | ProcessedTx, proverId: Fr) {
|
|
233
231
|
const proofData = new ProofData(
|
|
234
232
|
tx.data.toPrivateToPublicKernelCircuitPublicInputs(),
|
|
235
|
-
|
|
233
|
+
getChonkProofFromTx(tx),
|
|
236
234
|
getVkData('HidingKernelToPublic'),
|
|
237
235
|
);
|
|
238
|
-
return new
|
|
236
|
+
return new PublicChonkVerifierPrivateInputs(proofData, proverId);
|
|
239
237
|
}
|
|
240
238
|
|
|
241
239
|
// Build "hints" as the private inputs for the checkpoint root rollup circuit.
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
CheckpointMergeRollupPrivateInputs,
|
|
16
16
|
CheckpointPaddingRollupPrivateInputs,
|
|
17
17
|
CheckpointRollupPublicInputs,
|
|
18
|
-
|
|
18
|
+
PublicChonkVerifierPublicInputs,
|
|
19
19
|
RootRollupPrivateInputs,
|
|
20
20
|
type RootRollupPublicInputs,
|
|
21
21
|
} from '@aztec/stdlib/rollup';
|
|
@@ -57,10 +57,12 @@ export class EpochProvingState {
|
|
|
57
57
|
private finalBatchedBlob: BatchedBlob | undefined;
|
|
58
58
|
private provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
|
|
59
59
|
|
|
60
|
-
// Map from tx hash to
|
|
61
|
-
public readonly
|
|
60
|
+
// Map from tx hash to chonk verifier proof promise. Used when kickstarting chonk verifier proofs before tx processing.
|
|
61
|
+
public readonly cachedChonkVerifierProofs = new Map<
|
|
62
62
|
string,
|
|
63
|
-
Promise<
|
|
63
|
+
Promise<
|
|
64
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
65
|
+
>
|
|
64
66
|
>();
|
|
65
67
|
|
|
66
68
|
constructor(
|
|
@@ -34,8 +34,8 @@ import {
|
|
|
34
34
|
CheckpointConstantData,
|
|
35
35
|
CheckpointRootSingleBlockRollupPrivateInputs,
|
|
36
36
|
PrivateTxBaseRollupPrivateInputs,
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
PublicChonkVerifierPrivateInputs,
|
|
38
|
+
PublicChonkVerifierPublicInputs,
|
|
39
39
|
RootRollupPublicInputs,
|
|
40
40
|
} from '@aztec/stdlib/rollup';
|
|
41
41
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
buildBlockHeaderFromTxs,
|
|
58
58
|
buildHeaderFromCircuitOutputs,
|
|
59
59
|
getLastSiblingPath,
|
|
60
|
-
|
|
60
|
+
getPublicChonkVerifierPrivateInputsFromTx,
|
|
61
61
|
getRootTreeSiblingPath,
|
|
62
62
|
getSubtreeSiblingPath,
|
|
63
63
|
getTreeSnapshot,
|
|
@@ -327,7 +327,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
327
327
|
const txProvingState = new TxProvingState(tx, hints, treeSnapshots, this.proverId.toField());
|
|
328
328
|
const txIndex = provingState.addNewTx(txProvingState);
|
|
329
329
|
if (txProvingState.requireAvmProof) {
|
|
330
|
-
this.
|
|
330
|
+
this.getOrEnqueueChonkVerifier(provingState, txIndex);
|
|
331
331
|
logger.debug(`Enqueueing public VM for tx ${txIndex}`);
|
|
332
332
|
this.enqueueVM(provingState, txIndex);
|
|
333
333
|
} else {
|
|
@@ -350,27 +350,30 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
350
350
|
}
|
|
351
351
|
|
|
352
352
|
/**
|
|
353
|
-
* Kickstarts
|
|
354
|
-
* Note that if the
|
|
353
|
+
* Kickstarts chonk verifier circuits for the specified txs. These will be used during epoch proving.
|
|
354
|
+
* Note that if the chonk verifier circuits are not started this way, they will be started nontheless after processing.
|
|
355
355
|
*/
|
|
356
|
-
@trackSpan('ProvingOrchestrator.
|
|
357
|
-
public
|
|
356
|
+
@trackSpan('ProvingOrchestrator.startChonkVerifierCircuits')
|
|
357
|
+
public startChonkVerifierCircuits(txs: Tx[]) {
|
|
358
358
|
if (!this.provingState?.verifyState()) {
|
|
359
|
-
throw new Error(`Empty epoch proving state. call startNewEpoch before starting
|
|
359
|
+
throw new Error(`Empty epoch proving state. call startNewEpoch before starting chonk verifier circuits.`);
|
|
360
360
|
}
|
|
361
361
|
const publicTxs = txs.filter(tx => tx.data.forPublic);
|
|
362
362
|
for (const tx of publicTxs) {
|
|
363
363
|
const txHash = tx.getTxHash().toString();
|
|
364
|
-
const privateInputs =
|
|
364
|
+
const privateInputs = getPublicChonkVerifierPrivateInputsFromTx(tx, this.proverId.toField());
|
|
365
365
|
const tubeProof =
|
|
366
366
|
promiseWithResolvers<
|
|
367
|
-
PublicInputsAndRecursiveProof<
|
|
367
|
+
PublicInputsAndRecursiveProof<
|
|
368
|
+
PublicChonkVerifierPublicInputs,
|
|
369
|
+
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
370
|
+
>
|
|
368
371
|
>();
|
|
369
|
-
logger.debug(`Starting
|
|
370
|
-
this.
|
|
372
|
+
logger.debug(`Starting chonk verifier circuit for tx ${txHash}`);
|
|
373
|
+
this.doEnqueueChonkVerifier(txHash, privateInputs, proof => {
|
|
371
374
|
tubeProof.resolve(proof);
|
|
372
375
|
});
|
|
373
|
-
this.provingState.
|
|
376
|
+
this.provingState.cachedChonkVerifierProofs.set(txHash, tubeProof.promise);
|
|
374
377
|
}
|
|
375
378
|
return Promise.resolve();
|
|
376
379
|
}
|
|
@@ -643,7 +646,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
643
646
|
db: MerkleTreeWriteOperations,
|
|
644
647
|
): Promise<[BaseRollupHints, TreeSnapshots]> {
|
|
645
648
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
646
|
-
// These will be overwritten later once we have proven the
|
|
649
|
+
// These will be overwritten later once we have proven the chonk verifier circuit and any public kernels
|
|
647
650
|
const [ms, hints] = await elapsed(
|
|
648
651
|
insertSideEffectsAndBuildBaseRollupHints(
|
|
649
652
|
tx,
|
|
@@ -720,11 +723,11 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
720
723
|
);
|
|
721
724
|
}
|
|
722
725
|
|
|
723
|
-
// Enqueues the public
|
|
726
|
+
// Enqueues the public chonk verifier circuit for a given transaction index, or reuses the one already enqueued.
|
|
724
727
|
// Once completed, will enqueue the the public tx base rollup.
|
|
725
|
-
private
|
|
728
|
+
private getOrEnqueueChonkVerifier(provingState: BlockProvingState, txIndex: number) {
|
|
726
729
|
if (!provingState.verifyState()) {
|
|
727
|
-
logger.debug('Not running
|
|
730
|
+
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
728
731
|
return;
|
|
729
732
|
}
|
|
730
733
|
|
|
@@ -732,34 +735,40 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
732
735
|
const txHash = txProvingState.processedTx.hash.toString();
|
|
733
736
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH;
|
|
734
737
|
const handleResult = (
|
|
735
|
-
result: PublicInputsAndRecursiveProof<
|
|
738
|
+
result: PublicInputsAndRecursiveProof<
|
|
739
|
+
PublicChonkVerifierPublicInputs,
|
|
740
|
+
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
741
|
+
>,
|
|
736
742
|
) => {
|
|
737
|
-
logger.debug(`Got
|
|
738
|
-
txProvingState.
|
|
739
|
-
this.provingState?.
|
|
743
|
+
logger.debug(`Got chonk verifier proof for tx index: ${txIndex}`, { txHash });
|
|
744
|
+
txProvingState.setPublicChonkVerifierProof(result);
|
|
745
|
+
this.provingState?.cachedChonkVerifierProofs.delete(txHash);
|
|
740
746
|
this.checkAndEnqueueBaseRollup(provingState, txIndex);
|
|
741
747
|
};
|
|
742
748
|
|
|
743
|
-
if (this.provingState?.
|
|
744
|
-
logger.debug(`
|
|
745
|
-
void this.provingState!.
|
|
749
|
+
if (this.provingState?.cachedChonkVerifierProofs.has(txHash)) {
|
|
750
|
+
logger.debug(`Chonk verifier proof already enqueued for tx index: ${txIndex}`, { txHash });
|
|
751
|
+
void this.provingState!.cachedChonkVerifierProofs.get(txHash)!.then(handleResult);
|
|
746
752
|
return;
|
|
747
753
|
}
|
|
748
754
|
|
|
749
|
-
logger.debug(`Enqueuing
|
|
750
|
-
this.
|
|
755
|
+
logger.debug(`Enqueuing chonk verifier circuit for tx index: ${txIndex}`);
|
|
756
|
+
this.doEnqueueChonkVerifier(txHash, txProvingState.getPublicChonkVerifierPrivateInputs(), handleResult);
|
|
751
757
|
}
|
|
752
758
|
|
|
753
|
-
private
|
|
759
|
+
private doEnqueueChonkVerifier(
|
|
754
760
|
txHash: string,
|
|
755
|
-
inputs:
|
|
761
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
756
762
|
handler: (
|
|
757
|
-
result: PublicInputsAndRecursiveProof<
|
|
763
|
+
result: PublicInputsAndRecursiveProof<
|
|
764
|
+
PublicChonkVerifierPublicInputs,
|
|
765
|
+
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
766
|
+
>,
|
|
758
767
|
) => void,
|
|
759
768
|
provingState: EpochProvingState | BlockProvingState = this.provingState!,
|
|
760
769
|
) {
|
|
761
770
|
if (!provingState.verifyState()) {
|
|
762
|
-
logger.debug('Not running
|
|
771
|
+
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
763
772
|
return;
|
|
764
773
|
}
|
|
765
774
|
|
|
@@ -767,12 +776,12 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
767
776
|
provingState,
|
|
768
777
|
wrapCallbackInSpan(
|
|
769
778
|
this.tracer,
|
|
770
|
-
'ProvingOrchestrator.prover.
|
|
779
|
+
'ProvingOrchestrator.prover.getPublicChonkVerifierProof',
|
|
771
780
|
{
|
|
772
781
|
[Attributes.TX_HASH]: txHash,
|
|
773
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: '
|
|
782
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'chonk-verifier-public' satisfies CircuitName,
|
|
774
783
|
},
|
|
775
|
-
signal => this.prover.
|
|
784
|
+
signal => this.prover.getPublicChonkVerifierProof(inputs, signal, provingState.epochNumber),
|
|
776
785
|
),
|
|
777
786
|
handler,
|
|
778
787
|
);
|
|
@@ -1255,7 +1264,7 @@ export class ProvingOrchestrator implements EpochProver {
|
|
|
1255
1264
|
return;
|
|
1256
1265
|
}
|
|
1257
1266
|
|
|
1258
|
-
// We must have completed all proving (
|
|
1267
|
+
// We must have completed all proving (chonk verifier proof and (if required) vm proof are generated), we now move to the base rollup.
|
|
1259
1268
|
logger.debug(`Public functions completed for tx ${txIndex} enqueueing base rollup`);
|
|
1260
1269
|
|
|
1261
1270
|
this.enqueueBaseRollup(provingState, txIndex);
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
PrivateBaseRollupHints,
|
|
15
15
|
PrivateTxBaseRollupPrivateInputs,
|
|
16
16
|
PublicBaseRollupHints,
|
|
17
|
-
|
|
17
|
+
PublicChonkVerifierPublicInputs,
|
|
18
18
|
PublicTxBaseRollupPrivateInputs,
|
|
19
19
|
} from '@aztec/stdlib/rollup';
|
|
20
20
|
import type { CircuitName } from '@aztec/stdlib/stats';
|
|
@@ -22,7 +22,11 @@ import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
22
22
|
import type { ProcessedTx } from '@aztec/stdlib/tx';
|
|
23
23
|
import { VerificationKeyData, VkData } from '@aztec/stdlib/vks';
|
|
24
24
|
|
|
25
|
-
import {
|
|
25
|
+
import {
|
|
26
|
+
getChonkProofFromTx,
|
|
27
|
+
getPublicChonkVerifierPrivateInputsFromTx,
|
|
28
|
+
toProofData,
|
|
29
|
+
} from './block-building-helpers.js';
|
|
26
30
|
|
|
27
31
|
/**
|
|
28
32
|
* Helper class to manage the proving cycle of a transaction
|
|
@@ -30,8 +34,8 @@ import { getCivcProofFromTx, getPublicTubePrivateInputsFromTx, toProofData } fro
|
|
|
30
34
|
* Also stores the inputs to the base rollup for this transaction and the tree snapshots
|
|
31
35
|
*/
|
|
32
36
|
export class TxProvingState {
|
|
33
|
-
private
|
|
34
|
-
|
|
37
|
+
private publicChonkVerifier?: PublicInputsAndRecursiveProof<
|
|
38
|
+
PublicChonkVerifierPublicInputs,
|
|
35
39
|
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
36
40
|
>;
|
|
37
41
|
private avm?: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
|
|
@@ -48,15 +52,15 @@ export class TxProvingState {
|
|
|
48
52
|
}
|
|
49
53
|
|
|
50
54
|
public ready() {
|
|
51
|
-
return !this.requireAvmProof || (!!this.avm && !!this.
|
|
55
|
+
return !this.requireAvmProof || (!!this.avm && !!this.publicChonkVerifier);
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
public getAvmInputs(): AvmCircuitInputs {
|
|
55
59
|
return this.processedTx.avmProvingRequest!.inputs;
|
|
56
60
|
}
|
|
57
61
|
|
|
58
|
-
public
|
|
59
|
-
return
|
|
62
|
+
public getPublicChonkVerifierPrivateInputs() {
|
|
63
|
+
return getPublicChonkVerifierPrivateInputsFromTx(this.processedTx, this.proverId);
|
|
60
64
|
}
|
|
61
65
|
|
|
62
66
|
public getBaseRollupTypeAndInputs() {
|
|
@@ -73,13 +77,13 @@ export class TxProvingState {
|
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
79
|
|
|
76
|
-
public
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
public setPublicChonkVerifierProof(
|
|
81
|
+
publicChonkVerifierProofAndVk: PublicInputsAndRecursiveProof<
|
|
82
|
+
PublicChonkVerifierPublicInputs,
|
|
79
83
|
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
80
84
|
>,
|
|
81
85
|
) {
|
|
82
|
-
this.
|
|
86
|
+
this.publicChonkVerifier = publicChonkVerifierProofAndVk;
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>) {
|
|
@@ -93,7 +97,7 @@ export class TxProvingState {
|
|
|
93
97
|
|
|
94
98
|
const privateTailProofData = new ProofData(
|
|
95
99
|
this.processedTx.data.toPrivateToRollupKernelCircuitPublicInputs(),
|
|
96
|
-
|
|
100
|
+
getChonkProofFromTx(this.processedTx),
|
|
97
101
|
getVkData('HidingKernelToRollup'),
|
|
98
102
|
);
|
|
99
103
|
|
|
@@ -104,8 +108,8 @@ export class TxProvingState {
|
|
|
104
108
|
if (!this.processedTx.avmProvingRequest) {
|
|
105
109
|
throw new Error('Should create private base rollup for a tx not requiring avm proof.');
|
|
106
110
|
}
|
|
107
|
-
if (!this.
|
|
108
|
-
throw new Error('Tx not ready for proving base rollup: public
|
|
111
|
+
if (!this.publicChonkVerifier) {
|
|
112
|
+
throw new Error('Tx not ready for proving base rollup: public chonk verifier proof undefined');
|
|
109
113
|
}
|
|
110
114
|
if (!this.avm) {
|
|
111
115
|
throw new Error('Tx not ready for proving base rollup: avm proof undefined');
|
|
@@ -114,7 +118,7 @@ export class TxProvingState {
|
|
|
114
118
|
throw new Error('Mismatched base rollup hints, expected public base rollup hints');
|
|
115
119
|
}
|
|
116
120
|
|
|
117
|
-
const
|
|
121
|
+
const publicChonkVerifierProofData = toProofData(this.publicChonkVerifier);
|
|
118
122
|
|
|
119
123
|
const avmProofData = new ProofData(
|
|
120
124
|
this.processedTx.avmProvingRequest.inputs.publicInputs,
|
|
@@ -122,7 +126,7 @@ export class TxProvingState {
|
|
|
122
126
|
this.#getVkData(this.avm!.verificationKey, AVM_VK_INDEX),
|
|
123
127
|
);
|
|
124
128
|
|
|
125
|
-
return new PublicTxBaseRollupPrivateInputs(
|
|
129
|
+
return new PublicTxBaseRollupPrivateInputs(publicChonkVerifierProofData, avmProofData, this.baseRollupHints);
|
|
126
130
|
}
|
|
127
131
|
|
|
128
132
|
#getVkData(verificationKey: VerificationKeyData, vkIndex: number) {
|
|
@@ -42,8 +42,8 @@ export class ServerEpochProver implements EpochProver {
|
|
|
42
42
|
headerOfLastBlockInPreviousCheckpoint,
|
|
43
43
|
);
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
return this.orchestrator.
|
|
45
|
+
startChonkVerifierCircuits(txs: Tx[]): Promise<void> {
|
|
46
|
+
return this.orchestrator.startChonkVerifierCircuits(txs);
|
|
47
47
|
}
|
|
48
48
|
setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise<BlockHeader> {
|
|
49
49
|
return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
|
|
@@ -38,8 +38,8 @@ import type {
|
|
|
38
38
|
CheckpointRootRollupPrivateInputs,
|
|
39
39
|
CheckpointRootSingleBlockRollupPrivateInputs,
|
|
40
40
|
PrivateTxBaseRollupPrivateInputs,
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
PublicChonkVerifierPrivateInputs,
|
|
42
|
+
PublicChonkVerifierPublicInputs,
|
|
43
43
|
PublicTxBaseRollupPrivateInputs,
|
|
44
44
|
RootRollupPrivateInputs,
|
|
45
45
|
RootRollupPublicInputs,
|
|
@@ -445,14 +445,16 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
|
|
|
445
445
|
);
|
|
446
446
|
}
|
|
447
447
|
|
|
448
|
-
|
|
449
|
-
inputs:
|
|
448
|
+
getPublicChonkVerifierProof(
|
|
449
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
450
450
|
signal?: AbortSignal,
|
|
451
451
|
epochNumber?: number,
|
|
452
|
-
): Promise<
|
|
452
|
+
): Promise<
|
|
453
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
454
|
+
> {
|
|
453
455
|
return this.enqueueJob(
|
|
454
|
-
this.generateId(ProvingRequestType.
|
|
455
|
-
ProvingRequestType.
|
|
456
|
+
this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
|
|
457
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
456
458
|
inputs,
|
|
457
459
|
epochNumber,
|
|
458
460
|
signal,
|
|
@@ -44,7 +44,7 @@ type EnqueuedProvingJob = Pick<ProvingJob, 'id' | 'epochNumber'>;
|
|
|
44
44
|
export class ProvingBroker implements ProvingJobProducer, ProvingJobConsumer, Traceable {
|
|
45
45
|
private queues: ProvingQueues = {
|
|
46
46
|
[ProvingRequestType.PUBLIC_VM]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
47
|
-
[ProvingRequestType.
|
|
47
|
+
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
48
48
|
|
|
49
49
|
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
50
50
|
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: new PriorityMemoryQueue<EnqueuedProvingJob>(provingJobComparator),
|
|
@@ -700,7 +700,7 @@ export const PROOF_TYPES_IN_PRIORITY_ORDER: ProvingRequestType[] = [
|
|
|
700
700
|
ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
|
|
701
701
|
ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
|
|
702
702
|
ProvingRequestType.PUBLIC_VM,
|
|
703
|
-
ProvingRequestType.
|
|
703
|
+
ProvingRequestType.PUBLIC_CHONK_VERIFIER,
|
|
704
704
|
ProvingRequestType.PARITY_ROOT,
|
|
705
705
|
ProvingRequestType.PARITY_BASE,
|
|
706
706
|
];
|
|
@@ -128,8 +128,8 @@ export class ProvingJobController {
|
|
|
128
128
|
return await this.circuitProver.getAvmProof(inputs, undefined, signal, this.epochNumber);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
case ProvingRequestType.
|
|
132
|
-
return await this.circuitProver.
|
|
131
|
+
case ProvingRequestType.PUBLIC_CHONK_VERIFIER: {
|
|
132
|
+
return await this.circuitProver.getPublicChonkVerifierProof(inputs, signal, this.epochNumber);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
case ProvingRequestType.PRIVATE_TX_BASE_ROLLUP: {
|
package/src/test/mock_prover.ts
CHANGED
|
@@ -33,8 +33,8 @@ import type {
|
|
|
33
33
|
CheckpointRootRollupPrivateInputs,
|
|
34
34
|
CheckpointRootSingleBlockRollupPrivateInputs,
|
|
35
35
|
PrivateTxBaseRollupPrivateInputs,
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
PublicChonkVerifierPrivateInputs,
|
|
37
|
+
PublicChonkVerifierPublicInputs,
|
|
38
38
|
PublicTxBaseRollupPrivateInputs,
|
|
39
39
|
RootRollupPrivateInputs,
|
|
40
40
|
RootRollupPublicInputs,
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
makeBlockRollupPublicInputs,
|
|
46
46
|
makeCheckpointRollupPublicInputs,
|
|
47
47
|
makeParityPublicInputs,
|
|
48
|
-
|
|
48
|
+
makePublicChonkVerifierPublicInputs,
|
|
49
49
|
makeRootRollupPublicInputs,
|
|
50
50
|
makeTxRollupPublicInputs,
|
|
51
51
|
} from '@aztec/stdlib/testing';
|
|
@@ -139,14 +139,16 @@ export class MockProver implements ServerCircuitProver {
|
|
|
139
139
|
);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
_inputs:
|
|
142
|
+
getPublicChonkVerifierProof(
|
|
143
|
+
_inputs: PublicChonkVerifierPrivateInputs,
|
|
144
144
|
_signal?: AbortSignal,
|
|
145
145
|
_epochNumber?: number,
|
|
146
|
-
): Promise<
|
|
146
|
+
): Promise<
|
|
147
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
148
|
+
> {
|
|
147
149
|
return Promise.resolve(
|
|
148
150
|
makePublicInputsAndRecursiveProof(
|
|
149
|
-
|
|
151
|
+
makePublicChonkVerifierPublicInputs(),
|
|
150
152
|
makeRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
151
153
|
VerificationKeyData.makeFakeRollupHonk(),
|
|
152
154
|
),
|