@aztec/bb-prover 3.0.0-nightly.20250917 → 3.0.0-nightly.20250919
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/bb/execute.js +2 -2
- package/dest/honk.d.ts +1 -1
- package/dest/honk.js +2 -2
- package/dest/prover/client/bb_private_kernel_prover.d.ts +1 -1
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.js +1 -1
- package/dest/prover/server/bb_prover.d.ts +19 -29
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +51 -102
- package/dest/test/delay_values.d.ts.map +1 -1
- package/dest/test/delay_values.js +28 -18
- package/dest/test/test_circuit_prover.d.ts +18 -28
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +70 -53
- package/dest/verifier/bb_verifier.d.ts +1 -1
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +1 -1
- package/package.json +16 -16
- package/src/bb/execute.ts +2 -2
- package/src/honk.ts +1 -1
- package/src/prover/client/bb_private_kernel_prover.ts +5 -3
- package/src/prover/server/bb_prover.ts +205 -233
- package/src/test/delay_values.ts +28 -18
- package/src/test/test_circuit_prover.ts +204 -135
- package/src/verifier/bb_verifier.ts +5 -5
- package/dest/stats.d.ts +0 -4
- package/dest/stats.d.ts.map +0 -1
- package/dest/stats.js +0 -47
- package/src/stats.ts +0 -49
package/dest/bb/execute.js
CHANGED
|
@@ -212,7 +212,7 @@ function getArgs(flavor) {
|
|
|
212
212
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
213
213
|
};
|
|
214
214
|
}
|
|
215
|
-
// The bytecode is written to e.g. /workingDirectory/
|
|
215
|
+
// The bytecode is written to e.g. /workingDirectory/ParityBaseArtifact-bytecode
|
|
216
216
|
const bytecodePath = `${workingDirectory}/${circuitName}-bytecode`;
|
|
217
217
|
const vkPath = `${workingDirectory}/${circuitName}-vk`;
|
|
218
218
|
// The proof is written to e.g. /workingDirectory/ultra_honk/proof
|
|
@@ -583,7 +583,7 @@ export async function generateContractForVerificationKey(pathToBB, vkFilePath, c
|
|
|
583
583
|
reason: `Working directory ${workingDirectory} does not exist`
|
|
584
584
|
};
|
|
585
585
|
}
|
|
586
|
-
// The bytecode is written to e.g. /workingDirectory/
|
|
586
|
+
// The bytecode is written to e.g. /workingDirectory/ParityBaseArtifact-bytecode
|
|
587
587
|
const bytecodePath = `${workingDirectory}/${circuitName}-bytecode`;
|
|
588
588
|
const binaryPresent = await fs.access(pathToBB, fs.constants.R_OK).then((_)=>true).catch((_)=>false);
|
|
589
589
|
if (!binaryPresent) {
|
package/dest/honk.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
|
|
2
2
|
export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk' | 'ultra_starknet_honk' | 'ultra_rollup_honk';
|
|
3
3
|
declare const UltraKeccakHonkCircuits: ["RootRollupArtifact"];
|
|
4
|
-
declare const UltraHonkCircuits: ["
|
|
4
|
+
declare const UltraHonkCircuits: ["ParityBaseArtifact", "ParityRootArtifact"];
|
|
5
5
|
export type UltraKeccakHonkServerProtocolArtifact = (typeof UltraKeccakHonkCircuits)[number];
|
|
6
6
|
export type UltraHonkServerProtocolArtifact = (typeof UltraHonkCircuits)[number];
|
|
7
7
|
export type UltraRollupHonkServerProtocolArtifact = Exclude<Exclude<ServerProtocolArtifact, UltraKeccakHonkServerProtocolArtifact>, UltraHonkServerProtocolArtifact>;
|
package/dest/honk.js
CHANGED
|
@@ -2,8 +2,8 @@ const UltraKeccakHonkCircuits = [
|
|
|
2
2
|
'RootRollupArtifact'
|
|
3
3
|
];
|
|
4
4
|
const UltraHonkCircuits = [
|
|
5
|
-
'
|
|
6
|
-
'
|
|
5
|
+
'ParityBaseArtifact',
|
|
6
|
+
'ParityRootArtifact'
|
|
7
7
|
];
|
|
8
8
|
export function getUltraHonkFlavorForCircuit(artifact) {
|
|
9
9
|
// STARKNET: how to allow for the distinction between keccak/starknet? ultra_keccak_honk is returned in both cases
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ArtifactProvider, type ClientProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
2
2
|
import type { Abi, WitnessMap } from '@aztec/noir-types';
|
|
3
3
|
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
4
4
|
import type { PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/client/bb_private_kernel_prover.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"bb_private_kernel_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/client/bb_private_kernel_prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { convertHidingKernelPublicInputsToWitnessMapWithAbi, convertHidingKernelToRollupInputsToWitnessMapWithAbi, convertPrivateKernelInitInputsToWitnessMapWithAbi, convertPrivateKernelInitOutputsFromWitnessMapWithAbi, convertPrivateKernelInnerInputsToWitnessMapWithAbi, convertPrivateKernelInnerOutputsFromWitnessMapWithAbi, convertPrivateKernelResetInputsToWitnessMapWithAbi, convertPrivateKernelResetOutputsFromWitnessMapWithAbi, convertPrivateKernelTailForPublicOutputsFromWitnessMapWithAbi, convertPrivateKernelTailInputsToWitnessMapWithAbi, convertPrivateKernelTailOutputsFromWitnessMapWithAbi, convertPrivateKernelTailToPublicInputsToWitnessMapWithAbi, foreignCallHandler, getPrivateKernelResetArtifactName, updateResetCircuitSampleInputs } from '@aztec/noir-protocol-circuits-types/client';
|
|
3
|
-
import { mapProtocolArtifactNameToCircuitName } from '
|
|
3
|
+
import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
|
|
4
4
|
export class BBPrivateKernelProver {
|
|
5
5
|
artifactProvider;
|
|
6
6
|
simulator;
|
|
@@ -3,9 +3,9 @@ import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types
|
|
|
3
3
|
import type { AvmCircuitInputs, AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
4
4
|
import { type ProofAndVerificationKey, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
5
5
|
import type { PrivateToPublicKernelCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
6
|
-
import type {
|
|
6
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
7
7
|
import { Proof } from '@aztec/stdlib/proofs';
|
|
8
|
-
import {
|
|
8
|
+
import { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, type PrivateTxBaseRollupPrivateInputs, PublicTubePrivateInputs, PublicTxBaseRollupPrivateInputs, type RootRollupPrivateInputs, type RootRollupPublicInputs, type TxMergeRollupPrivateInputs, type TxRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
9
9
|
import type { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
10
10
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
11
11
|
import type { ACVMConfig, BBConfig } from '../../config.js';
|
|
@@ -27,13 +27,13 @@ export declare class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
27
27
|
* @param inputs - Inputs to the circuit.
|
|
28
28
|
* @returns The public inputs of the parity circuit.
|
|
29
29
|
*/
|
|
30
|
-
getBaseParityProof(inputs:
|
|
30
|
+
getBaseParityProof(inputs: ParityBasePrivateInputs): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
31
31
|
/**
|
|
32
32
|
* Simulates the root parity circuit from its inputs.
|
|
33
33
|
* @param inputs - Inputs to the circuit.
|
|
34
34
|
* @returns The public inputs of the parity circuit.
|
|
35
35
|
*/
|
|
36
|
-
getRootParityProof(inputs:
|
|
36
|
+
getRootParityProof(inputs: ParityRootPrivateInputs): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>>;
|
|
37
37
|
/**
|
|
38
38
|
* Creates an AVM proof and verifies it.
|
|
39
39
|
* @param inputs - The inputs to the AVM circuit.
|
|
@@ -46,47 +46,37 @@ export declare class BBNativeRollupProver implements ServerCircuitProver {
|
|
|
46
46
|
* @param inputs - Inputs to the circuit.
|
|
47
47
|
* @returns The public inputs as outputs of the simulation.
|
|
48
48
|
*/
|
|
49
|
-
|
|
49
|
+
getPrivateTxBaseRollupProof(inputs: PrivateTxBaseRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
50
50
|
/**
|
|
51
51
|
* Requests that the public kernel tail circuit be executed and the proof generated
|
|
52
52
|
* @param kernelRequest - The object encapsulating the request for a proof
|
|
53
53
|
* @returns The requested circuit's public inputs and proof
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
getPublicTxBaseRollupProof(inputs: PublicTxBaseRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
56
56
|
/**
|
|
57
57
|
* Simulates the merge rollup circuit from its inputs.
|
|
58
58
|
* @param input - Inputs to the circuit.
|
|
59
59
|
* @returns The public inputs as outputs of the simulation.
|
|
60
60
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
* @returns The public inputs as outputs of the simulation.
|
|
73
|
-
*/
|
|
74
|
-
getEmptyBlockRootRollupProof(input: EmptyBlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
75
|
-
getPaddingBlockRootRollupProof(input: PaddingBlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
76
|
-
/**
|
|
77
|
-
* Simulates the block merge rollup circuit from its inputs.
|
|
78
|
-
* @param input - Inputs to the circuit.
|
|
79
|
-
* @returns The public inputs as outputs of the simulation.
|
|
80
|
-
*/
|
|
81
|
-
getBlockMergeRollupProof(input: BlockMergeRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
61
|
+
getTxMergeRollupProof(input: TxMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
62
|
+
getBlockRootFirstRollupProof(input: BlockRootFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
63
|
+
getBlockRootSingleTxFirstRollupProof(input: BlockRootSingleTxFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
64
|
+
getBlockRootEmptyTxFirstRollupProof(input: BlockRootEmptyTxFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
65
|
+
getBlockRootRollupProof(input: BlockRootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
66
|
+
getBlockRootSingleTxRollupProof(input: BlockRootSingleTxRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
67
|
+
getBlockMergeRollupProof(input: BlockMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
68
|
+
getCheckpointRootRollupProof(input: CheckpointRootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
69
|
+
getCheckpointRootSingleBlockRollupProof(input: CheckpointRootSingleBlockRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
70
|
+
getCheckpointPaddingRollupProof(input: CheckpointPaddingRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
71
|
+
getCheckpointMergeRollupProof(input: CheckpointMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
82
72
|
/**
|
|
83
73
|
* Simulates the root rollup circuit from its inputs.
|
|
84
74
|
* @param input - Inputs to the circuit.
|
|
85
75
|
* @returns The public inputs as outputs of the simulation.
|
|
86
76
|
*/
|
|
87
|
-
getRootRollupProof(input:
|
|
77
|
+
getRootRollupProof(input: RootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>>;
|
|
78
|
+
private createRecursiveProofAndVerify;
|
|
88
79
|
private generateProofWithBB;
|
|
89
|
-
private createProof;
|
|
90
80
|
private generateAvmProofWithBB;
|
|
91
81
|
private createAvmProof;
|
|
92
82
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/server/bb_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,yCAAyC,EAEzC,sBAAsB,EAEvB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"bb_prover.d.ts","sourceRoot":"","sources":["../../../src/prover/server/bb_prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,9 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
9
9
|
import { runInDirectory } from '@aztec/foundation/fs';
|
|
10
10
|
import { createLogger } from '@aztec/foundation/log';
|
|
11
11
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
12
|
-
import {
|
|
12
|
+
import { convertBlockMergeRollupOutputsFromWitnessMap, convertBlockMergeRollupPrivateInputsToWitnessMap, convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap, convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootFirstRollupOutputsFromWitnessMap, convertBlockRootFirstRollupPrivateInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap, convertBlockRootRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap, convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxRollupOutputsFromWitnessMap, convertBlockRootSingleTxRollupPrivateInputsToWitnessMap, convertCheckpointMergeRollupOutputsFromWitnessMap, convertCheckpointMergeRollupPrivateInputsToWitnessMap, convertCheckpointPaddingRollupOutputsFromWitnessMap, convertCheckpointPaddingRollupPrivateInputsToWitnessMap, convertCheckpointRootRollupOutputsFromWitnessMap, convertCheckpointRootRollupPrivateInputsToWitnessMap, convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap, convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap, convertParityBaseOutputsFromWitnessMap, convertParityBasePrivateInputsToWitnessMap, convertParityRootOutputsFromWitnessMap, convertParityRootPrivateInputsToWitnessMap, convertPrivateTxBaseRollupOutputsFromWitnessMap, convertPrivateTxBaseRollupPrivateInputsToWitnessMap, convertPublicTubeOutputsFromWitnessMap, convertPublicTubePrivateInputsToWitnessMap, convertPublicTxBaseRollupOutputsFromWitnessMap, convertPublicTxBaseRollupPrivateInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertRootRollupPrivateInputsToWitnessMap, convertTxMergeRollupOutputsFromWitnessMap, convertTxMergeRollupPrivateInputsToWitnessMap, getServerCircuitArtifact } from '@aztec/noir-protocol-circuits-types/server';
|
|
13
13
|
import { ServerCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
14
|
+
import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
|
|
14
15
|
import { NativeACVMSimulator } from '@aztec/simulator/server';
|
|
15
16
|
import { ProvingError } from '@aztec/stdlib/errors';
|
|
16
17
|
import { makeProofAndVerificationKey, makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
@@ -22,7 +23,6 @@ import * as path from 'path';
|
|
|
22
23
|
import { BB_RESULT, PROOF_FILENAME, PUBLIC_INPUTS_FILENAME, VK_FILENAME, generateAvmProof, generateProof, verifyAvmProof, verifyProof } from '../../bb/execute.js';
|
|
23
24
|
import { getUltraHonkFlavorForCircuit } from '../../honk.js';
|
|
24
25
|
import { ProverInstrumentation } from '../../instrumentation.js';
|
|
25
|
-
import { mapProtocolArtifactNameToCircuitName } from '../../stats.js';
|
|
26
26
|
import { extractAvmVkData } from '../../verification_key/verification_key_data.js';
|
|
27
27
|
import { readProofsFromOutputDirectory } from '../proof_utils.js';
|
|
28
28
|
const logger = createLogger('bb-prover');
|
|
@@ -55,21 +55,15 @@ const logger = createLogger('bb-prover');
|
|
|
55
55
|
* Simulates the base parity circuit from its inputs.
|
|
56
56
|
* @param inputs - Inputs to the circuit.
|
|
57
57
|
* @returns The public inputs of the parity circuit.
|
|
58
|
-
*/
|
|
59
|
-
|
|
60
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('BaseParityArtifact');
|
|
61
|
-
await this.verifyProof('BaseParityArtifact', proof.binaryProof);
|
|
62
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
58
|
+
*/ getBaseParityProof(inputs) {
|
|
59
|
+
return this.createRecursiveProofAndVerify(inputs, 'ParityBaseArtifact', RECURSIVE_PROOF_LENGTH, convertParityBasePrivateInputsToWitnessMap, convertParityBaseOutputsFromWitnessMap);
|
|
63
60
|
}
|
|
64
61
|
/**
|
|
65
62
|
* Simulates the root parity circuit from its inputs.
|
|
66
63
|
* @param inputs - Inputs to the circuit.
|
|
67
64
|
* @returns The public inputs of the parity circuit.
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('RootParityArtifact');
|
|
71
|
-
await this.verifyProof('RootParityArtifact', proof.binaryProof);
|
|
72
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
65
|
+
*/ getRootParityProof(inputs) {
|
|
66
|
+
return this.createRecursiveProofAndVerify(inputs, 'ParityRootArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertParityRootPrivateInputsToWitnessMap, convertParityRootOutputsFromWitnessMap);
|
|
73
67
|
}
|
|
74
68
|
/**
|
|
75
69
|
* Creates an AVM proof and verifies it.
|
|
@@ -93,88 +87,72 @@ const logger = createLogger('bb-prover');
|
|
|
93
87
|
* Simulates the base rollup circuit from its inputs.
|
|
94
88
|
* @param inputs - Inputs to the circuit.
|
|
95
89
|
* @returns The public inputs as outputs of the simulation.
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(inputs, artifactName, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPrivateBaseRollupInputsToWitnessMap, convertPrivateBaseRollupOutputsFromWitnessMap);
|
|
99
|
-
const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
|
|
100
|
-
await this.verifyProof(artifactName, proof.binaryProof);
|
|
101
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
90
|
+
*/ getPrivateTxBaseRollupProof(inputs) {
|
|
91
|
+
return this.createRecursiveProofAndVerify(inputs, 'PrivateTxBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPrivateTxBaseRollupPrivateInputsToWitnessMap, convertPrivateTxBaseRollupOutputsFromWitnessMap);
|
|
102
92
|
}
|
|
103
93
|
/**
|
|
104
94
|
* Requests that the public kernel tail circuit be executed and the proof generated
|
|
105
95
|
* @param kernelRequest - The object encapsulating the request for a proof
|
|
106
96
|
* @returns The requested circuit's public inputs and proof
|
|
107
|
-
*/
|
|
108
|
-
|
|
109
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(inputs, artifactName, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPublicBaseRollupInputsToWitnessMap, convertPublicBaseRollupOutputsFromWitnessMap);
|
|
110
|
-
const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
|
|
111
|
-
await this.verifyProof(artifactName, proof.binaryProof);
|
|
112
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
97
|
+
*/ getPublicTxBaseRollupProof(inputs) {
|
|
98
|
+
return this.createRecursiveProofAndVerify(inputs, 'PublicTxBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPublicTxBaseRollupPrivateInputsToWitnessMap, convertPublicTxBaseRollupOutputsFromWitnessMap);
|
|
113
99
|
}
|
|
114
100
|
/**
|
|
115
101
|
* Simulates the merge rollup circuit from its inputs.
|
|
116
102
|
* @param input - Inputs to the circuit.
|
|
117
103
|
* @returns The public inputs as outputs of the simulation.
|
|
118
|
-
*/
|
|
119
|
-
|
|
120
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('MergeRollupArtifact');
|
|
121
|
-
await this.verifyProof('MergeRollupArtifact', proof.binaryProof);
|
|
122
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
104
|
+
*/ getTxMergeRollupProof(input) {
|
|
105
|
+
return this.createRecursiveProofAndVerify(input, 'TxMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertTxMergeRollupPrivateInputsToWitnessMap, convertTxMergeRollupOutputsFromWitnessMap);
|
|
123
106
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
* @param input - Inputs to the circuit.
|
|
127
|
-
* @returns The public inputs as outputs of the simulation.
|
|
128
|
-
*/ async getBlockRootRollupProof(input) {
|
|
129
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootRollupInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap);
|
|
130
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('BlockRootRollupArtifact');
|
|
131
|
-
await this.verifyProof('BlockRootRollupArtifact', proof.binaryProof);
|
|
132
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
107
|
+
getBlockRootFirstRollupProof(input) {
|
|
108
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootFirstRollupPrivateInputsToWitnessMap, convertBlockRootFirstRollupOutputsFromWitnessMap);
|
|
133
109
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('SingleTxBlockRootRollupArtifact');
|
|
137
|
-
await this.verifyProof('SingleTxBlockRootRollupArtifact', proof.binaryProof);
|
|
138
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
110
|
+
getBlockRootSingleTxFirstRollupProof(input) {
|
|
111
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootSingleTxFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap);
|
|
139
112
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
* @param input - Inputs to the circuit.
|
|
143
|
-
* @returns The public inputs as outputs of the simulation.
|
|
144
|
-
*/ async getEmptyBlockRootRollupProof(input) {
|
|
145
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(input, 'EmptyBlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap);
|
|
146
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('EmptyBlockRootRollupArtifact');
|
|
147
|
-
await this.verifyProof('EmptyBlockRootRollupArtifact', proof.binaryProof);
|
|
148
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
113
|
+
getBlockRootEmptyTxFirstRollupProof(input) {
|
|
114
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootEmptyTxFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap);
|
|
149
115
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('PaddingBlockRootRollupArtifact');
|
|
153
|
-
await this.verifyProof('PaddingBlockRootRollupArtifact', proof.binaryProof);
|
|
154
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
116
|
+
getBlockRootRollupProof(input) {
|
|
117
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootRollupPrivateInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap);
|
|
155
118
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
119
|
+
getBlockRootSingleTxRollupProof(input) {
|
|
120
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootSingleTxRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootSingleTxRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxRollupOutputsFromWitnessMap);
|
|
121
|
+
}
|
|
122
|
+
getBlockMergeRollupProof(input) {
|
|
123
|
+
return this.createRecursiveProofAndVerify(input, 'BlockMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockMergeRollupPrivateInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap);
|
|
124
|
+
}
|
|
125
|
+
getCheckpointRootRollupProof(input) {
|
|
126
|
+
return this.createRecursiveProofAndVerify(input, 'CheckpointRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointRootRollupPrivateInputsToWitnessMap, convertCheckpointRootRollupOutputsFromWitnessMap);
|
|
127
|
+
}
|
|
128
|
+
getCheckpointRootSingleBlockRollupProof(input) {
|
|
129
|
+
return this.createRecursiveProofAndVerify(input, 'CheckpointRootSingleBlockRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap, convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap);
|
|
130
|
+
}
|
|
131
|
+
getCheckpointPaddingRollupProof(input) {
|
|
132
|
+
return this.createRecursiveProofAndVerify(input, 'CheckpointPaddingRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointPaddingRollupPrivateInputsToWitnessMap, convertCheckpointPaddingRollupOutputsFromWitnessMap);
|
|
133
|
+
}
|
|
134
|
+
getCheckpointMergeRollupProof(input) {
|
|
135
|
+
return this.createRecursiveProofAndVerify(input, 'CheckpointMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointMergeRollupPrivateInputsToWitnessMap, convertCheckpointMergeRollupOutputsFromWitnessMap);
|
|
165
136
|
}
|
|
166
137
|
/**
|
|
167
138
|
* Simulates the root rollup circuit from its inputs.
|
|
168
139
|
* @param input - Inputs to the circuit.
|
|
169
140
|
* @returns The public inputs as outputs of the simulation.
|
|
170
141
|
*/ async getRootRollupProof(input) {
|
|
171
|
-
const {
|
|
172
|
-
const recursiveProof = makeRecursiveProofFromBinary(proof, NESTED_RECURSIVE_PROOF_LENGTH);
|
|
173
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('RootRollupArtifact');
|
|
174
|
-
await this.verifyProof('RootRollupArtifact', proof);
|
|
142
|
+
const { proof, ...output } = await this.createRecursiveProofAndVerify(input, 'RootRollupArtifact', ULTRA_KECCAK_PROOF_LENGTH, convertRootRollupPrivateInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap);
|
|
143
|
+
const recursiveProof = makeRecursiveProofFromBinary(proof.binaryProof, NESTED_RECURSIVE_PROOF_LENGTH);
|
|
175
144
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13188): Remove this hack.
|
|
176
145
|
recursiveProof.binaryProof.numPublicInputs += PAIRING_POINTS_SIZE;
|
|
177
|
-
return
|
|
146
|
+
return {
|
|
147
|
+
...output,
|
|
148
|
+
proof: recursiveProof
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
async createRecursiveProofAndVerify(input, artifactName, proofLength, convertInput, convertOutput) {
|
|
152
|
+
const { circuitOutput, proof } = await this.createRecursiveProof(input, artifactName, proofLength, convertInput, convertOutput);
|
|
153
|
+
await this.verifyProof(artifactName, proof.binaryProof);
|
|
154
|
+
const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
|
|
155
|
+
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
178
156
|
}
|
|
179
157
|
async generateProofWithBB(input, circuitType, convertInput, convertOutput, workingDirectory) {
|
|
180
158
|
// Have the ACVM write the partial witness here
|
|
@@ -211,35 +189,6 @@ const logger = createLogger('bb-prover');
|
|
|
211
189
|
provingResult
|
|
212
190
|
};
|
|
213
191
|
}
|
|
214
|
-
async createProof(input, circuitType, convertInput, convertOutput) {
|
|
215
|
-
const operation = async (bbWorkingDirectory)=>{
|
|
216
|
-
const { provingResult, circuitOutput: output } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
|
|
217
|
-
const vkData = this.getVerificationKeyDataForCircuit(circuitType);
|
|
218
|
-
const PROOF_LENGTH = circuitType == 'RootRollupArtifact' ? ULTRA_KECCAK_PROOF_LENGTH : RECURSIVE_PROOF_LENGTH;
|
|
219
|
-
const proof = await readProofsFromOutputDirectory(provingResult.proofPath, vkData, PROOF_LENGTH, logger);
|
|
220
|
-
const circuitName = mapProtocolArtifactNameToCircuitName(circuitType);
|
|
221
|
-
this.instrumentation.recordDuration('provingDuration', circuitName, provingResult.durationMs);
|
|
222
|
-
this.instrumentation.recordSize('proofSize', circuitName, proof.binaryProof.buffer.length);
|
|
223
|
-
this.instrumentation.recordSize('circuitPublicInputCount', circuitName, vkData.numPublicInputs);
|
|
224
|
-
this.instrumentation.recordSize('circuitSize', circuitName, vkData.circuitSize);
|
|
225
|
-
logger.info(`Generated proof for ${circuitType} in ${Math.ceil(provingResult.durationMs)} ms`, {
|
|
226
|
-
circuitName,
|
|
227
|
-
// does not include reading the proof from disk
|
|
228
|
-
duration: provingResult.durationMs,
|
|
229
|
-
proofSize: proof.binaryProof.buffer.length,
|
|
230
|
-
eventName: 'circuit-proving',
|
|
231
|
-
// circuitOutput is the partial witness that became the input to the proof
|
|
232
|
-
inputSize: output.toBuffer().length,
|
|
233
|
-
circuitSize: vkData.circuitSize,
|
|
234
|
-
numPublicInputs: vkData.numPublicInputs
|
|
235
|
-
});
|
|
236
|
-
return {
|
|
237
|
-
circuitOutput: output,
|
|
238
|
-
proof: proof.binaryProof
|
|
239
|
-
};
|
|
240
|
-
};
|
|
241
|
-
return await this.runInDirectory(operation);
|
|
242
|
-
}
|
|
243
192
|
async generateAvmProofWithBB(input, workingDirectory) {
|
|
244
193
|
logger.info(`Proving avm-circuit for TX ${input.hints.tx.hash}...`);
|
|
245
194
|
const provingResult = await generateAvmProof(this.config.bbBinaryPath, workingDirectory, input, logger);
|
|
@@ -375,12 +324,12 @@ const logger = createLogger('bb-prover');
|
|
|
375
324
|
}
|
|
376
325
|
_ts_decorate([
|
|
377
326
|
trackSpan('BBNativeRollupProver.getBaseParityProof', {
|
|
378
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'base
|
|
327
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-base'
|
|
379
328
|
})
|
|
380
329
|
], BBNativeRollupProver.prototype, "getBaseParityProof", null);
|
|
381
330
|
_ts_decorate([
|
|
382
331
|
trackSpan('BBNativeRollupProver.getRootParityProof', {
|
|
383
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'root
|
|
332
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-root'
|
|
384
333
|
})
|
|
385
334
|
], BBNativeRollupProver.prototype, "getRootParityProof", null);
|
|
386
335
|
_ts_decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delay_values.d.ts","sourceRoot":"","sources":["../../src/test/delay_values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"delay_values.d.ts","sourceRoot":"","sources":["../../src/test/delay_values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAmB9D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAmB7D,CAAC"}
|
|
@@ -1,30 +1,40 @@
|
|
|
1
1
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
2
|
export const WITGEN_DELAY_MS = {
|
|
3
|
-
[ProvingRequestType.
|
|
3
|
+
[ProvingRequestType.PARITY_BASE]: 60,
|
|
4
4
|
[ProvingRequestType.BLOCK_MERGE_ROLLUP]: 650,
|
|
5
|
-
[ProvingRequestType.
|
|
6
|
-
[ProvingRequestType.
|
|
7
|
-
[ProvingRequestType.
|
|
8
|
-
[ProvingRequestType.
|
|
9
|
-
[ProvingRequestType.
|
|
10
|
-
[ProvingRequestType.
|
|
11
|
-
[ProvingRequestType.
|
|
12
|
-
[ProvingRequestType.
|
|
5
|
+
[ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 60_000,
|
|
6
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 40_000,
|
|
7
|
+
[ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 20_000,
|
|
8
|
+
[ProvingRequestType.BLOCK_ROOT_ROLLUP]: 40_000,
|
|
9
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: 20_000,
|
|
10
|
+
[ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: 40_000,
|
|
11
|
+
[ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: 20_000,
|
|
12
|
+
[ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
|
|
13
|
+
[ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 650,
|
|
14
|
+
[ProvingRequestType.TX_MERGE_ROLLUP]: 0,
|
|
15
|
+
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 400_000,
|
|
16
|
+
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 470_000,
|
|
17
|
+
[ProvingRequestType.PARITY_ROOT]: 100,
|
|
13
18
|
[ProvingRequestType.ROOT_ROLLUP]: 650,
|
|
14
19
|
[ProvingRequestType.PUBLIC_TUBE]: 0,
|
|
15
20
|
[ProvingRequestType.PUBLIC_VM]: 0
|
|
16
21
|
};
|
|
17
22
|
export const PROOF_DELAY_MS = {
|
|
18
|
-
[ProvingRequestType.
|
|
23
|
+
[ProvingRequestType.PARITY_BASE]: 3_000,
|
|
19
24
|
[ProvingRequestType.BLOCK_MERGE_ROLLUP]: 15_000,
|
|
20
|
-
[ProvingRequestType.
|
|
21
|
-
[ProvingRequestType.
|
|
22
|
-
[ProvingRequestType.
|
|
23
|
-
[ProvingRequestType.
|
|
24
|
-
[ProvingRequestType.
|
|
25
|
-
[ProvingRequestType.
|
|
26
|
-
[ProvingRequestType.
|
|
27
|
-
[ProvingRequestType.
|
|
25
|
+
[ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 55_000,
|
|
26
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 35_000,
|
|
27
|
+
[ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 15_000,
|
|
28
|
+
[ProvingRequestType.BLOCK_ROOT_ROLLUP]: 35_000,
|
|
29
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: 15_000,
|
|
30
|
+
[ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: 35_000,
|
|
31
|
+
[ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: 15_000,
|
|
32
|
+
[ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
|
|
33
|
+
[ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 15_000,
|
|
34
|
+
[ProvingRequestType.TX_MERGE_ROLLUP]: 0,
|
|
35
|
+
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 145_000,
|
|
36
|
+
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 160_000,
|
|
37
|
+
[ProvingRequestType.PARITY_ROOT]: 30_000,
|
|
28
38
|
[ProvingRequestType.ROOT_ROLLUP]: 15_000,
|
|
29
39
|
[ProvingRequestType.PUBLIC_TUBE]: 30_000,
|
|
30
40
|
[ProvingRequestType.PUBLIC_VM]: 0
|
|
@@ -4,9 +4,9 @@ import { type CircuitSimulator } from '@aztec/simulator/server';
|
|
|
4
4
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
5
5
|
import { type ProofAndVerificationKey, type PublicInputsAndRecursiveProof, type ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
6
6
|
import type { PrivateToPublicKernelCircuitPublicInputs } from '@aztec/stdlib/kernel';
|
|
7
|
-
import type {
|
|
7
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
8
8
|
import { type Proof } from '@aztec/stdlib/proofs';
|
|
9
|
-
import type {
|
|
9
|
+
import type { BlockMergeRollupPrivateInputs, BlockRollupPublicInputs, BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, PrivateTxBaseRollupPrivateInputs, PublicTubePrivateInputs, PublicTxBaseRollupPrivateInputs, RootRollupPrivateInputs, RootRollupPublicInputs, TxMergeRollupPrivateInputs, TxRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
10
10
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
11
11
|
type TestDelay = {
|
|
12
12
|
proverTestDelayType: 'fixed';
|
|
@@ -32,48 +32,38 @@ export declare class TestCircuitProver implements ServerCircuitProver {
|
|
|
32
32
|
* @param inputs - Inputs to the circuit.
|
|
33
33
|
* @returns The public inputs of the parity circuit.
|
|
34
34
|
*/
|
|
35
|
-
getBaseParityProof(inputs:
|
|
35
|
+
getBaseParityProof(inputs: ParityBasePrivateInputs): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
36
36
|
/**
|
|
37
37
|
* Simulates the root parity circuit from its inputs.
|
|
38
38
|
* @param inputs - Inputs to the circuit.
|
|
39
39
|
* @returns The public inputs of the parity circuit.
|
|
40
40
|
*/
|
|
41
|
-
getRootParityProof(inputs:
|
|
41
|
+
getRootParityProof(inputs: ParityRootPrivateInputs): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>>;
|
|
42
42
|
getPublicTubeProof(inputs: PublicTubePrivateInputs): Promise<PublicInputsAndRecursiveProof<PrivateToPublicKernelCircuitPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
getPrivateTxBaseRollupProof(inputs: PrivateTxBaseRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
44
|
+
getPublicTxBaseRollupProof(inputs: PublicTxBaseRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
45
45
|
/**
|
|
46
46
|
* Simulates the merge rollup circuit from its inputs.
|
|
47
47
|
* @param input - Inputs to the circuit.
|
|
48
48
|
* @returns The public inputs as outputs of the simulation.
|
|
49
49
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
* @returns The public inputs as outputs of the simulation.
|
|
62
|
-
*/
|
|
63
|
-
getEmptyBlockRootRollupProof(input: EmptyBlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
64
|
-
getPaddingBlockRootRollupProof(input: PaddingBlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
65
|
-
/**
|
|
66
|
-
* Simulates the block merge rollup circuit from its inputs.
|
|
67
|
-
* @param input - Inputs to the circuit.
|
|
68
|
-
* @returns The public inputs as outputs of the simulation.
|
|
69
|
-
*/
|
|
70
|
-
getBlockMergeRollupProof(input: BlockMergeRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
50
|
+
getTxMergeRollupProof(input: TxMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
51
|
+
getBlockRootFirstRollupProof(input: BlockRootFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
52
|
+
getBlockRootSingleTxFirstRollupProof(input: BlockRootSingleTxFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
53
|
+
getBlockRootEmptyTxFirstRollupProof(input: BlockRootEmptyTxFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
54
|
+
getBlockRootRollupProof(input: BlockRootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
55
|
+
getBlockRootSingleTxRollupProof(input: BlockRootSingleTxRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
56
|
+
getBlockMergeRollupProof(input: BlockMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
57
|
+
getCheckpointRootRollupProof(input: CheckpointRootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
58
|
+
getCheckpointRootSingleBlockRollupProof(input: CheckpointRootSingleBlockRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
59
|
+
getCheckpointPaddingRollupProof(input: CheckpointPaddingRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
60
|
+
getCheckpointMergeRollupProof(input: CheckpointMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
71
61
|
/**
|
|
72
62
|
* Simulates the root rollup circuit from its inputs.
|
|
73
63
|
* @param input - Inputs to the circuit.
|
|
74
64
|
* @returns The public inputs as outputs of the simulation.
|
|
75
65
|
*/
|
|
76
|
-
getRootRollupProof(input:
|
|
66
|
+
getRootRollupProof(input: RootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>>;
|
|
77
67
|
getAvmProof(_inputs: AvmCircuitInputs): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
|
|
78
68
|
private applyDelay;
|
|
79
69
|
verifyProof(_1: ServerProtocolArtifact, _2: Proof): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EAEpC,6BAA6B,EAC7B,yCAAyC,EACzC,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"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"}
|