@aztec/bb-prover 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1
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/avm_proving_tests/avm_proving_tester.d.ts +7 -6
- package/dest/avm_proving_tests/avm_proving_tester.d.ts.map +1 -1
- package/dest/avm_proving_tests/avm_proving_tester.js +33 -13
- package/dest/bb/cli.d.ts +1 -1
- package/dest/bb/execute.d.ts +5 -13
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +30 -92
- package/dest/bb/index.d.ts +1 -1
- package/dest/config.d.ts +1 -1
- package/dest/honk.d.ts +2 -2
- package/dest/honk.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/instrumentation.d.ts +3 -3
- package/dest/instrumentation.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.d.ts +12 -6
- package/dest/prover/client/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/client/bb_private_kernel_prover.js +36 -7
- package/dest/prover/client/bundle.d.ts +6 -0
- package/dest/prover/client/bundle.d.ts.map +1 -0
- package/dest/prover/client/bundle.js +7 -0
- package/dest/prover/client/lazy.d.ts +6 -0
- package/dest/prover/client/lazy.d.ts.map +1 -0
- package/dest/prover/client/lazy.js +7 -0
- package/dest/prover/index.d.ts +1 -1
- package/dest/prover/proof_utils.d.ts +9 -9
- package/dest/prover/proof_utils.d.ts.map +1 -1
- package/dest/prover/proof_utils.js +42 -25
- package/dest/prover/server/bb_prover.d.ts +22 -42
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +66 -143
- package/dest/test/delay_values.d.ts +1 -1
- package/dest/test/delay_values.d.ts.map +1 -1
- package/dest/test/delay_values.js +33 -23
- package/dest/test/index.d.ts +1 -1
- package/dest/test/test_circuit_prover.d.ts +21 -31
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +74 -56
- package/dest/test/test_verifier.d.ts +3 -1
- package/dest/test/test_verifier.d.ts.map +1 -1
- package/dest/test/test_verifier.js +15 -0
- package/dest/verification_key/verification_key_data.d.ts +1 -1
- package/dest/verification_key/verification_key_data.js +1 -1
- package/dest/verifier/bb_verifier.d.ts +3 -5
- package/dest/verifier/bb_verifier.d.ts.map +1 -1
- package/dest/verifier/bb_verifier.js +24 -26
- package/dest/verifier/index.d.ts +2 -2
- package/dest/verifier/index.d.ts.map +1 -1
- package/dest/verifier/index.js +1 -1
- package/dest/verifier/queued_chonk_verifier.d.ts +15 -0
- package/dest/verifier/queued_chonk_verifier.d.ts.map +1 -0
- package/dest/verifier/{queued_ivc_verifier.js → queued_chonk_verifier.js} +3 -3
- package/package.json +23 -23
- package/src/avm_proving_tests/avm_proving_tester.ts +43 -19
- package/src/bb/execute.ts +20 -90
- package/src/honk.ts +1 -1
- package/src/instrumentation.ts +2 -2
- package/src/prover/client/bb_private_kernel_prover.ts +49 -10
- package/src/prover/client/bundle.ts +10 -0
- package/src/prover/client/lazy.ts +10 -0
- package/src/prover/proof_utils.ts +53 -31
- package/src/prover/server/bb_prover.ts +231 -288
- package/src/test/delay_values.ts +33 -23
- package/src/test/test_circuit_prover.ts +219 -142
- package/src/test/test_verifier.ts +8 -0
- package/src/verification_key/verification_key_data.ts +1 -1
- package/src/verifier/bb_verifier.ts +34 -33
- package/src/verifier/index.ts +1 -1
- package/src/verifier/{queued_ivc_verifier.ts → queued_chonk_verifier.ts} +3 -3
- package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts +0 -23
- package/dest/prover/client/native/bb_native_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/client/native/bb_native_private_kernel_prover.js +0 -66
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts +0 -15
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.d.ts.map +0 -1
- package/dest/prover/client/wasm/bb_wasm_private_kernel_prover.js +0 -48
- package/dest/prover/client/wasm/bundle.d.ts +0 -6
- package/dest/prover/client/wasm/bundle.d.ts.map +0 -1
- package/dest/prover/client/wasm/bundle.js +0 -8
- package/dest/prover/client/wasm/lazy.d.ts +0 -6
- package/dest/prover/client/wasm/lazy.d.ts.map +0 -1
- package/dest/prover/client/wasm/lazy.js +0 -8
- package/dest/stats.d.ts +0 -4
- package/dest/stats.d.ts.map +0 -1
- package/dest/stats.js +0 -45
- package/dest/verifier/queued_ivc_verifier.d.ts +0 -15
- package/dest/verifier/queued_ivc_verifier.d.ts.map +0 -1
- package/src/prover/client/native/bb_native_private_kernel_prover.ts +0 -105
- package/src/prover/client/wasm/bb_wasm_private_kernel_prover.ts +0 -60
- package/src/prover/client/wasm/bundle.ts +0 -11
- package/src/prover/client/wasm/lazy.ts +0 -11
- package/src/stats.ts +0 -47
|
@@ -4,29 +4,27 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
4
4
|
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
|
-
import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, PAIRING_POINTS_SIZE, RECURSIVE_PROOF_LENGTH,
|
|
8
|
-
import { Fr } from '@aztec/foundation/
|
|
7
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, PAIRING_POINTS_SIZE, RECURSIVE_PROOF_LENGTH, ULTRA_KECCAK_PROOF_LENGTH } from '@aztec/constants';
|
|
8
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
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, convertPublicChonkVerifierOutputsFromWitnessMap, convertPublicChonkVerifierPrivateInputsToWitnessMap, 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';
|
|
17
18
|
import { Proof, RecursiveProof, makeRecursiveProofFromBinary } from '@aztec/stdlib/proofs';
|
|
18
19
|
import { enhanceProofWithPiValidationFlag } from '@aztec/stdlib/rollup';
|
|
19
20
|
import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
20
|
-
import crypto from 'crypto';
|
|
21
21
|
import { promises as fs } from 'fs';
|
|
22
22
|
import * as path from 'path';
|
|
23
|
-
import { BB_RESULT, PROOF_FILENAME, PUBLIC_INPUTS_FILENAME, VK_FILENAME, generateAvmProof, generateProof,
|
|
23
|
+
import { BB_RESULT, PROOF_FILENAME, PUBLIC_INPUTS_FILENAME, VK_FILENAME, generateAvmProof, generateProof, verifyAvmProof, verifyProof } from '../../bb/execute.js';
|
|
24
24
|
import { getUltraHonkFlavorForCircuit } from '../../honk.js';
|
|
25
25
|
import { ProverInstrumentation } from '../../instrumentation.js';
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import { PRIVATE_TAIL_CIVC_VK, PUBLIC_TAIL_CIVC_VK } from '../../verifier/bb_verifier.js';
|
|
29
|
-
import { readProofAsFields, writeClientIVCProofToOutputDirectory } from '../proof_utils.js';
|
|
26
|
+
import { extractAvmVkData } from '../../verification_key/verification_key_data.js';
|
|
27
|
+
import { readProofsFromOutputDirectory } from '../proof_utils.js';
|
|
30
28
|
const logger = createLogger('bb-prover');
|
|
31
29
|
/**
|
|
32
30
|
* Prover implementation that uses barretenberg native proving
|
|
@@ -57,21 +55,15 @@ const logger = createLogger('bb-prover');
|
|
|
57
55
|
* Simulates the base parity circuit from its inputs.
|
|
58
56
|
* @param inputs - Inputs to the circuit.
|
|
59
57
|
* @returns The public inputs of the parity circuit.
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('BaseParityArtifact');
|
|
63
|
-
await this.verifyProof('BaseParityArtifact', proof.binaryProof);
|
|
64
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
58
|
+
*/ getBaseParityProof(inputs) {
|
|
59
|
+
return this.createRecursiveProofAndVerify(inputs, 'ParityBaseArtifact', RECURSIVE_PROOF_LENGTH, convertParityBasePrivateInputsToWitnessMap, convertParityBaseOutputsFromWitnessMap);
|
|
65
60
|
}
|
|
66
61
|
/**
|
|
67
62
|
* Simulates the root parity circuit from its inputs.
|
|
68
63
|
* @param inputs - Inputs to the circuit.
|
|
69
64
|
* @returns The public inputs of the parity circuit.
|
|
70
|
-
*/
|
|
71
|
-
|
|
72
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('RootParityArtifact');
|
|
73
|
-
await this.verifyProof('RootParityArtifact', proof.binaryProof);
|
|
74
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
65
|
+
*/ getRootParityProof(inputs) {
|
|
66
|
+
return this.createRecursiveProofAndVerify(inputs, 'ParityRootArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertParityRootPrivateInputsToWitnessMap, convertParityRootOutputsFromWitnessMap);
|
|
75
67
|
}
|
|
76
68
|
/**
|
|
77
69
|
* Creates an AVM proof and verifies it.
|
|
@@ -84,92 +76,83 @@ const logger = createLogger('bb-prover');
|
|
|
84
76
|
proofAndVk.proof.proof = enhanceProofWithPiValidationFlag(proofAndVk.proof.proof, skipPublicInputsValidation);
|
|
85
77
|
return proofAndVk;
|
|
86
78
|
}
|
|
79
|
+
async getPublicChonkVerifierProof(inputs) {
|
|
80
|
+
const artifactName = 'PublicChonkVerifier';
|
|
81
|
+
const { circuitOutput, proof } = await this.createRecursiveProof(inputs, artifactName, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPublicChonkVerifierPrivateInputsToWitnessMap, convertPublicChonkVerifierOutputsFromWitnessMap);
|
|
82
|
+
const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
|
|
83
|
+
await this.verifyProof(artifactName, proof.binaryProof);
|
|
84
|
+
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
85
|
+
}
|
|
87
86
|
/**
|
|
88
87
|
* Simulates the base rollup circuit from its inputs.
|
|
89
88
|
* @param inputs - Inputs to the circuit.
|
|
90
89
|
* @returns The public inputs as outputs of the simulation.
|
|
91
|
-
*/
|
|
92
|
-
|
|
93
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(inputs, artifactName, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPrivateBaseRollupInputsToWitnessMap, convertPrivateBaseRollupOutputsFromWitnessMap);
|
|
94
|
-
const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
|
|
95
|
-
await this.verifyProof(artifactName, proof.binaryProof);
|
|
96
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
90
|
+
*/ getPrivateTxBaseRollupProof(inputs) {
|
|
91
|
+
return this.createRecursiveProofAndVerify(inputs, 'PrivateTxBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPrivateTxBaseRollupPrivateInputsToWitnessMap, convertPrivateTxBaseRollupOutputsFromWitnessMap);
|
|
97
92
|
}
|
|
98
93
|
/**
|
|
99
94
|
* Requests that the public kernel tail circuit be executed and the proof generated
|
|
100
95
|
* @param kernelRequest - The object encapsulating the request for a proof
|
|
101
96
|
* @returns The requested circuit's public inputs and proof
|
|
102
|
-
*/
|
|
103
|
-
|
|
104
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(inputs, artifactName, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPublicBaseRollupInputsToWitnessMap, convertPublicBaseRollupOutputsFromWitnessMap);
|
|
105
|
-
const verificationKey = this.getVerificationKeyDataForCircuit(artifactName);
|
|
106
|
-
await this.verifyProof(artifactName, proof.binaryProof);
|
|
107
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
97
|
+
*/ getPublicTxBaseRollupProof(inputs) {
|
|
98
|
+
return this.createRecursiveProofAndVerify(inputs, 'PublicTxBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPublicTxBaseRollupPrivateInputsToWitnessMap, convertPublicTxBaseRollupOutputsFromWitnessMap);
|
|
108
99
|
}
|
|
109
100
|
/**
|
|
110
101
|
* Simulates the merge rollup circuit from its inputs.
|
|
111
102
|
* @param input - Inputs to the circuit.
|
|
112
103
|
* @returns The public inputs as outputs of the simulation.
|
|
113
|
-
*/
|
|
114
|
-
|
|
115
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('MergeRollupArtifact');
|
|
116
|
-
await this.verifyProof('MergeRollupArtifact', proof.binaryProof);
|
|
117
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
104
|
+
*/ getTxMergeRollupProof(input) {
|
|
105
|
+
return this.createRecursiveProofAndVerify(input, 'TxMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertTxMergeRollupPrivateInputsToWitnessMap, convertTxMergeRollupOutputsFromWitnessMap);
|
|
118
106
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
* @param input - Inputs to the circuit.
|
|
122
|
-
* @returns The public inputs as outputs of the simulation.
|
|
123
|
-
*/ async getBlockRootRollupProof(input) {
|
|
124
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootRollupInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap);
|
|
125
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('BlockRootRollupArtifact');
|
|
126
|
-
await this.verifyProof('BlockRootRollupArtifact', proof.binaryProof);
|
|
127
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
107
|
+
getBlockRootFirstRollupProof(input) {
|
|
108
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootFirstRollupPrivateInputsToWitnessMap, convertBlockRootFirstRollupOutputsFromWitnessMap);
|
|
128
109
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('SingleTxBlockRootRollupArtifact');
|
|
132
|
-
await this.verifyProof('SingleTxBlockRootRollupArtifact', proof.binaryProof);
|
|
133
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
110
|
+
getBlockRootSingleTxFirstRollupProof(input) {
|
|
111
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootSingleTxFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap);
|
|
134
112
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
* @param input - Inputs to the circuit.
|
|
138
|
-
* @returns The public inputs as outputs of the simulation.
|
|
139
|
-
*/ async getEmptyBlockRootRollupProof(input) {
|
|
140
|
-
const { circuitOutput, proof } = await this.createRecursiveProof(input, 'EmptyBlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap);
|
|
141
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('EmptyBlockRootRollupArtifact');
|
|
142
|
-
await this.verifyProof('EmptyBlockRootRollupArtifact', proof.binaryProof);
|
|
143
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
113
|
+
getBlockRootEmptyTxFirstRollupProof(input) {
|
|
114
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootEmptyTxFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap);
|
|
144
115
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('PaddingBlockRootRollupArtifact');
|
|
148
|
-
await this.verifyProof('PaddingBlockRootRollupArtifact', proof.binaryProof);
|
|
149
|
-
return makePublicInputsAndRecursiveProof(circuitOutput, proof, verificationKey);
|
|
116
|
+
getBlockRootRollupProof(input) {
|
|
117
|
+
return this.createRecursiveProofAndVerify(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootRollupPrivateInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap);
|
|
150
118
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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);
|
|
160
136
|
}
|
|
161
137
|
/**
|
|
162
138
|
* Simulates the root rollup circuit from its inputs.
|
|
163
139
|
* @param input - Inputs to the circuit.
|
|
164
140
|
* @returns The public inputs as outputs of the simulation.
|
|
165
141
|
*/ async getRootRollupProof(input) {
|
|
166
|
-
const {
|
|
167
|
-
const recursiveProof = makeRecursiveProofFromBinary(proof, NESTED_RECURSIVE_PROOF_LENGTH);
|
|
168
|
-
const verificationKey = this.getVerificationKeyDataForCircuit('RootRollupArtifact');
|
|
169
|
-
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);
|
|
170
144
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/13188): Remove this hack.
|
|
171
145
|
recursiveProof.binaryProof.numPublicInputs += PAIRING_POINTS_SIZE;
|
|
172
|
-
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);
|
|
173
156
|
}
|
|
174
157
|
async generateProofWithBB(input, circuitType, convertInput, convertOutput, workingDirectory) {
|
|
175
158
|
// Have the ACVM write the partial witness here
|
|
@@ -196,7 +179,7 @@ const logger = createLogger('bb-prover');
|
|
|
196
179
|
});
|
|
197
180
|
// Now prove the circuit from the generated witness
|
|
198
181
|
logger.debug(`Proving ${circuitType}...`);
|
|
199
|
-
const provingResult = await generateProof(this.config.bbBinaryPath, workingDirectory, circuitType, Buffer.from(artifact.bytecode, 'base64'), outputWitnessFile, getUltraHonkFlavorForCircuit(circuitType), logger);
|
|
182
|
+
const provingResult = await generateProof(this.config.bbBinaryPath, workingDirectory, circuitType, Buffer.from(artifact.bytecode, 'base64'), this.getVerificationKeyDataForCircuit(circuitType).keyAsBytes, outputWitnessFile, getUltraHonkFlavorForCircuit(circuitType), logger);
|
|
200
183
|
if (provingResult.status === BB_RESULT.FAILURE) {
|
|
201
184
|
logger.error(`Failed to generate proof for ${circuitType}: ${provingResult.reason}`);
|
|
202
185
|
throw new ProvingError(provingResult.reason, provingResult, provingResult.retry);
|
|
@@ -206,35 +189,6 @@ const logger = createLogger('bb-prover');
|
|
|
206
189
|
provingResult
|
|
207
190
|
};
|
|
208
191
|
}
|
|
209
|
-
async createProof(input, circuitType, convertInput, convertOutput) {
|
|
210
|
-
const operation = async (bbWorkingDirectory)=>{
|
|
211
|
-
const { provingResult, circuitOutput: output } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
|
|
212
|
-
const vkData = this.getVerificationKeyDataForCircuit(circuitType);
|
|
213
|
-
const PROOF_LENGTH = circuitType == 'RootRollupArtifact' ? ULTRA_KECCAK_PROOF_LENGTH : RECURSIVE_PROOF_LENGTH;
|
|
214
|
-
const proof = await readProofAsFields(provingResult.proofPath, vkData, PROOF_LENGTH, logger);
|
|
215
|
-
const circuitName = mapProtocolArtifactNameToCircuitName(circuitType);
|
|
216
|
-
this.instrumentation.recordDuration('provingDuration', circuitName, provingResult.durationMs);
|
|
217
|
-
this.instrumentation.recordSize('proofSize', circuitName, proof.binaryProof.buffer.length);
|
|
218
|
-
this.instrumentation.recordSize('circuitPublicInputCount', circuitName, vkData.numPublicInputs);
|
|
219
|
-
this.instrumentation.recordSize('circuitSize', circuitName, vkData.circuitSize);
|
|
220
|
-
logger.info(`Generated proof for ${circuitType} in ${Math.ceil(provingResult.durationMs)} ms`, {
|
|
221
|
-
circuitName,
|
|
222
|
-
// does not include reading the proof from disk
|
|
223
|
-
duration: provingResult.durationMs,
|
|
224
|
-
proofSize: proof.binaryProof.buffer.length,
|
|
225
|
-
eventName: 'circuit-proving',
|
|
226
|
-
// circuitOutput is the partial witness that became the input to the proof
|
|
227
|
-
inputSize: output.toBuffer().length,
|
|
228
|
-
circuitSize: vkData.circuitSize,
|
|
229
|
-
numPublicInputs: vkData.numPublicInputs
|
|
230
|
-
});
|
|
231
|
-
return {
|
|
232
|
-
circuitOutput: output,
|
|
233
|
-
proof: proof.binaryProof
|
|
234
|
-
};
|
|
235
|
-
};
|
|
236
|
-
return await this.runInDirectory(operation);
|
|
237
|
-
}
|
|
238
192
|
async generateAvmProofWithBB(input, workingDirectory) {
|
|
239
193
|
logger.info(`Proving avm-circuit for TX ${input.hints.tx.hash}...`);
|
|
240
194
|
const provingResult = await generateAvmProof(this.config.bbBinaryPath, workingDirectory, input, logger);
|
|
@@ -244,18 +198,6 @@ const logger = createLogger('bb-prover');
|
|
|
244
198
|
}
|
|
245
199
|
return provingResult;
|
|
246
200
|
}
|
|
247
|
-
async generateTubeProofWithBB(bbWorkingDirectory, input) {
|
|
248
|
-
logger.debug(`Proving tube...`);
|
|
249
|
-
const hasher = crypto.createHash('sha256');
|
|
250
|
-
hasher.update(input.toBuffer());
|
|
251
|
-
await writeClientIVCProofToOutputDirectory(input.clientIVCData, bbWorkingDirectory);
|
|
252
|
-
const provingResult = await generateTubeProof(this.config.bbBinaryPath, bbWorkingDirectory, input.usePublicTailVk ? PUBLIC_TAIL_CIVC_VK : PRIVATE_TAIL_CIVC_VK, logger.verbose);
|
|
253
|
-
if (provingResult.status === BB_RESULT.FAILURE) {
|
|
254
|
-
logger.error(`Failed to generate proof for tube circuit: ${provingResult.reason}`);
|
|
255
|
-
throw new ProvingError(provingResult.reason, provingResult, provingResult.retry);
|
|
256
|
-
}
|
|
257
|
-
return provingResult;
|
|
258
|
-
}
|
|
259
201
|
async createAvmProof(input) {
|
|
260
202
|
const operation = async (bbWorkingDirectory)=>{
|
|
261
203
|
const provingResult = await this.generateAvmProofWithBB(input, bbWorkingDirectory);
|
|
@@ -280,25 +222,6 @@ const logger = createLogger('bb-prover');
|
|
|
280
222
|
};
|
|
281
223
|
return await this.runInDirectory(operation);
|
|
282
224
|
}
|
|
283
|
-
async getTubeProof(input) {
|
|
284
|
-
const operation = async (bbWorkingDirectory)=>{
|
|
285
|
-
logger.debug(`createTubeProof: ${bbWorkingDirectory}`);
|
|
286
|
-
const provingResult = await this.generateTubeProofWithBB(bbWorkingDirectory, input);
|
|
287
|
-
// Read the proof as fields
|
|
288
|
-
// TODO(AD): this is the only remaining use of extractVkData.
|
|
289
|
-
const tubeVK = await extractVkData(provingResult.vkDirectoryPath);
|
|
290
|
-
const tubeProof = await readProofAsFields(provingResult.proofPath, tubeVK, TUBE_PROOF_LENGTH, logger);
|
|
291
|
-
this.instrumentation.recordDuration('provingDuration', 'tubeCircuit', provingResult.durationMs);
|
|
292
|
-
this.instrumentation.recordSize('proofSize', 'tubeCircuit', tubeProof.binaryProof.buffer.length);
|
|
293
|
-
this.instrumentation.recordSize('circuitPublicInputCount', 'tubeCircuit', tubeVK.numPublicInputs);
|
|
294
|
-
this.instrumentation.recordSize('circuitSize', 'tubeCircuit', tubeVK.circuitSize);
|
|
295
|
-
// Sanity check the tube proof (can be removed later)
|
|
296
|
-
await this.verifyWithKey('ultra_rollup_honk', tubeVK, tubeProof.binaryProof);
|
|
297
|
-
logger.info(`Generated proof for tubeCircuit in ${Math.ceil(provingResult.durationMs)} ms, size: ${tubeProof.proof.length} fields`);
|
|
298
|
-
return makeProofAndVerificationKey(tubeProof, tubeVK);
|
|
299
|
-
};
|
|
300
|
-
return await this.runInDirectory(operation);
|
|
301
|
-
}
|
|
302
225
|
/**
|
|
303
226
|
* Executes a circuit and returns its outputs and corresponding proof with embedded aggregation object
|
|
304
227
|
* @param witnessMap - The input witness
|
|
@@ -308,12 +231,12 @@ const logger = createLogger('bb-prover');
|
|
|
308
231
|
* @param convertOutput - Function for parsing the output witness to it's corresponding object
|
|
309
232
|
* @returns The circuits output object and it's proof
|
|
310
233
|
*/ async createRecursiveProof(input, circuitType, proofLength, convertInput, convertOutput) {
|
|
311
|
-
// this probably is gonna need to call
|
|
234
|
+
// this probably is gonna need to call chonk
|
|
312
235
|
const operation = async (bbWorkingDirectory)=>{
|
|
313
236
|
const { provingResult, circuitOutput: output } = await this.generateProofWithBB(input, circuitType, convertInput, convertOutput, bbWorkingDirectory);
|
|
314
237
|
const vkData = this.getVerificationKeyDataForCircuit(circuitType);
|
|
315
238
|
// Read the proof as fields
|
|
316
|
-
const proof = await
|
|
239
|
+
const proof = await readProofsFromOutputDirectory(provingResult.proofPath, vkData, proofLength, logger);
|
|
317
240
|
const circuitName = mapProtocolArtifactNameToCircuitName(circuitType);
|
|
318
241
|
this.instrumentation.recordDuration('provingDuration', circuitName, provingResult.durationMs);
|
|
319
242
|
this.instrumentation.recordSize('proofSize', circuitName, proof.binaryProof.buffer.length);
|
|
@@ -401,12 +324,12 @@ const logger = createLogger('bb-prover');
|
|
|
401
324
|
}
|
|
402
325
|
_ts_decorate([
|
|
403
326
|
trackSpan('BBNativeRollupProver.getBaseParityProof', {
|
|
404
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'base
|
|
327
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-base'
|
|
405
328
|
})
|
|
406
329
|
], BBNativeRollupProver.prototype, "getBaseParityProof", null);
|
|
407
330
|
_ts_decorate([
|
|
408
331
|
trackSpan('BBNativeRollupProver.getRootParityProof', {
|
|
409
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'root
|
|
332
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'parity-root'
|
|
410
333
|
})
|
|
411
334
|
], BBNativeRollupProver.prototype, "getRootParityProof", null);
|
|
412
335
|
_ts_decorate([
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
2
|
export declare const WITGEN_DELAY_MS: Record<ProvingRequestType, number>;
|
|
3
3
|
export declare const PROOF_DELAY_MS: Record<ProvingRequestType, number>;
|
|
4
|
-
//# sourceMappingURL=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXlfdmFsdWVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9kZWxheV92YWx1ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsZUFBTyxNQUFNLGVBQWUsRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQW1COUQsQ0FBQztBQUVGLGVBQU8sTUFBTSxjQUFjLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FtQjdELENBQUMifQ==
|
|
@@ -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,31 +1,41 @@
|
|
|
1
1
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
2
|
export const WITGEN_DELAY_MS = {
|
|
3
|
-
[ProvingRequestType.
|
|
4
|
-
[ProvingRequestType.BLOCK_MERGE_ROLLUP]:
|
|
5
|
-
[ProvingRequestType.
|
|
6
|
-
[ProvingRequestType.
|
|
7
|
-
[ProvingRequestType.
|
|
8
|
-
[ProvingRequestType.
|
|
9
|
-
[ProvingRequestType.
|
|
10
|
-
[ProvingRequestType.
|
|
11
|
-
[ProvingRequestType.
|
|
12
|
-
[ProvingRequestType.
|
|
13
|
-
[ProvingRequestType.
|
|
14
|
-
[ProvingRequestType.
|
|
3
|
+
[ProvingRequestType.PARITY_BASE]: 2_000,
|
|
4
|
+
[ProvingRequestType.BLOCK_MERGE_ROLLUP]: 30,
|
|
5
|
+
[ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 45,
|
|
6
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 27,
|
|
7
|
+
[ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 18,
|
|
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]: 36_600,
|
|
12
|
+
[ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
|
|
13
|
+
[ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 30,
|
|
14
|
+
[ProvingRequestType.TX_MERGE_ROLLUP]: 0,
|
|
15
|
+
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 2_500,
|
|
16
|
+
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 2_500,
|
|
17
|
+
[ProvingRequestType.PARITY_ROOT]: 40,
|
|
18
|
+
[ProvingRequestType.ROOT_ROLLUP]: 35,
|
|
19
|
+
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 60,
|
|
15
20
|
[ProvingRequestType.PUBLIC_VM]: 0
|
|
16
21
|
};
|
|
17
22
|
export const PROOF_DELAY_MS = {
|
|
18
|
-
[ProvingRequestType.
|
|
23
|
+
[ProvingRequestType.PARITY_BASE]: 16_300,
|
|
19
24
|
[ProvingRequestType.BLOCK_MERGE_ROLLUP]: 15_000,
|
|
20
|
-
[ProvingRequestType.
|
|
21
|
-
[ProvingRequestType.
|
|
22
|
-
[ProvingRequestType.
|
|
23
|
-
[ProvingRequestType.
|
|
24
|
-
[ProvingRequestType.
|
|
25
|
-
[ProvingRequestType.
|
|
26
|
-
[ProvingRequestType.
|
|
27
|
-
[ProvingRequestType.
|
|
28
|
-
[ProvingRequestType.
|
|
29
|
-
[ProvingRequestType.
|
|
25
|
+
[ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 16_500,
|
|
26
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 9_210,
|
|
27
|
+
[ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 4_560,
|
|
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]: 38_800,
|
|
32
|
+
[ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
|
|
33
|
+
[ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 9_760,
|
|
34
|
+
[ProvingRequestType.TX_MERGE_ROLLUP]: 0,
|
|
35
|
+
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 45_000,
|
|
36
|
+
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 45_000,
|
|
37
|
+
[ProvingRequestType.PARITY_ROOT]: 18_600,
|
|
38
|
+
[ProvingRequestType.ROOT_ROLLUP]: 84_000,
|
|
39
|
+
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 16_300,
|
|
30
40
|
[ProvingRequestType.PUBLIC_VM]: 0
|
|
31
41
|
};
|
package/dest/test/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './test_circuit_prover.js';
|
|
2
2
|
export * from './test_verifier.js';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQyJ9
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH
|
|
1
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, RECURSIVE_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/server';
|
|
3
3
|
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
|
-
import type {
|
|
6
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
7
7
|
import { type Proof } from '@aztec/stdlib/proofs';
|
|
8
|
-
import type
|
|
8
|
+
import { type BlockMergeRollupPrivateInputs, type BlockRollupPublicInputs, type BlockRootEmptyTxFirstRollupPrivateInputs, type BlockRootFirstRollupPrivateInputs, type BlockRootRollupPrivateInputs, type BlockRootSingleTxFirstRollupPrivateInputs, type BlockRootSingleTxRollupPrivateInputs, type CheckpointMergeRollupPrivateInputs, type CheckpointPaddingRollupPrivateInputs, type CheckpointRollupPublicInputs, type CheckpointRootRollupPrivateInputs, type CheckpointRootSingleBlockRollupPrivateInputs, type PrivateTxBaseRollupPrivateInputs, type PublicChonkVerifierPrivateInputs, PublicChonkVerifierPublicInputs, type PublicTxBaseRollupPrivateInputs, type RootRollupPrivateInputs, type RootRollupPublicInputs, type TxMergeRollupPrivateInputs, type TxRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
9
9
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
10
10
|
type TestDelay = {
|
|
11
11
|
proverTestDelayType: 'fixed';
|
|
@@ -31,52 +31,42 @@ export declare class TestCircuitProver implements ServerCircuitProver {
|
|
|
31
31
|
* @param inputs - Inputs to the circuit.
|
|
32
32
|
* @returns The public inputs of the parity circuit.
|
|
33
33
|
*/
|
|
34
|
-
getBaseParityProof(inputs:
|
|
34
|
+
getBaseParityProof(inputs: ParityBasePrivateInputs): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>>;
|
|
35
35
|
/**
|
|
36
36
|
* Simulates the root parity circuit from its inputs.
|
|
37
37
|
* @param inputs - Inputs to the circuit.
|
|
38
38
|
* @returns The public inputs of the parity circuit.
|
|
39
39
|
*/
|
|
40
|
-
getRootParityProof(inputs:
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
getRootParityProof(inputs: ParityRootPrivateInputs): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>>;
|
|
41
|
+
getPublicChonkVerifierProof(inputs: PublicChonkVerifierPrivateInputs): Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
42
|
+
getPrivateTxBaseRollupProof(inputs: PrivateTxBaseRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
43
|
+
getPublicTxBaseRollupProof(inputs: PublicTxBaseRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
44
44
|
/**
|
|
45
45
|
* Simulates the merge rollup circuit from its inputs.
|
|
46
46
|
* @param input - Inputs to the circuit.
|
|
47
47
|
* @returns The public inputs as outputs of the simulation.
|
|
48
48
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
* @returns The public inputs as outputs of the simulation.
|
|
61
|
-
*/
|
|
62
|
-
getEmptyBlockRootRollupProof(input: EmptyBlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
63
|
-
getPaddingBlockRootRollupProof(input: PaddingBlockRootRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
64
|
-
/**
|
|
65
|
-
* Simulates the block merge rollup circuit from its inputs.
|
|
66
|
-
* @param input - Inputs to the circuit.
|
|
67
|
-
* @returns The public inputs as outputs of the simulation.
|
|
68
|
-
*/
|
|
69
|
-
getBlockMergeRollupProof(input: BlockMergeRollupInputs): Promise<PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
49
|
+
getTxMergeRollupProof(input: TxMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
50
|
+
getBlockRootFirstRollupProof(input: BlockRootFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
51
|
+
getBlockRootSingleTxFirstRollupProof(input: BlockRootSingleTxFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
52
|
+
getBlockRootEmptyTxFirstRollupProof(input: BlockRootEmptyTxFirstRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
53
|
+
getBlockRootRollupProof(input: BlockRootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
54
|
+
getBlockRootSingleTxRollupProof(input: BlockRootSingleTxRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
55
|
+
getBlockMergeRollupProof(input: BlockMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
56
|
+
getCheckpointRootRollupProof(input: CheckpointRootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
57
|
+
getCheckpointRootSingleBlockRollupProof(input: CheckpointRootSingleBlockRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
58
|
+
getCheckpointPaddingRollupProof(input: CheckpointPaddingRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
59
|
+
getCheckpointMergeRollupProof(input: CheckpointMergeRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>>;
|
|
70
60
|
/**
|
|
71
61
|
* Simulates the root rollup circuit from its inputs.
|
|
72
62
|
* @param input - Inputs to the circuit.
|
|
73
63
|
* @returns The public inputs as outputs of the simulation.
|
|
74
64
|
*/
|
|
75
|
-
getRootRollupProof(input:
|
|
65
|
+
getRootRollupProof(input: RootRollupPrivateInputs): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>>;
|
|
76
66
|
getAvmProof(_inputs: AvmCircuitInputs): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
|
|
77
67
|
private applyDelay;
|
|
78
68
|
verifyProof(_1: ServerProtocolArtifact, _2: Proof): Promise<void>;
|
|
79
69
|
private simulate;
|
|
80
70
|
}
|
|
81
71
|
export {};
|
|
82
|
-
//# sourceMappingURL=
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvdGVzdF9jaXJjdWl0X3Byb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0NBQW9DLEVBRXBDLDZCQUE2QixFQUM3Qix5Q0FBeUMsRUFDekMsc0JBQXNCLEVBQ3ZCLE1BQU0sa0JBQWtCLENBQUM7QUFJMUIsT0FBTyxFQUNMLEtBQUssc0JBQXNCLEVBbUM1QixNQUFNLDRDQUE0QyxDQUFDO0FBSXBELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUFzRCxNQUFNLHlCQUF5QixDQUFDO0FBQ3BILE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUNMLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssbUJBQW1CLEVBR3pCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsS0FBSyxLQUFLLEVBQW1FLE1BQU0sc0JBQXNCLENBQUM7QUFDbkgsT0FBTyxFQUNMLEtBQUssNkJBQTZCLEVBQ2xDLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssd0NBQXdDLEVBQzdDLEtBQUssaUNBQWlDLEVBQ3RDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUsseUNBQXlDLEVBQzlDLEtBQUssb0NBQW9DLEVBQ3pDLEtBQUssa0NBQWtDLEVBQ3ZDLEtBQUssb0NBQW9DLEVBQ3pDLEtBQUssNEJBQTRCLEVBQ2pDLEtBQUssaUNBQWlDLEVBQ3RDLEtBQUssNENBQTRDLEVBQ2pELEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssZ0NBQWdDLEVBQ3JDLCtCQUErQixFQUMvQixLQUFLLCtCQUErQixFQUNwQyxLQUFLLHVCQUF1QixFQUM1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
|
|
@@ -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,
|
|
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,EAmC5B,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EAAE,KAAK,gBAAgB,EAAsD,MAAM,yBAAyB,CAAC;AACpH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,mBAAmB,EAGzB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,KAAK,KAAK,EAAmE,MAAM,sBAAsB,CAAC;AACnH,OAAO,EACL,KAAK,6BAA6B,EAClC,KAAK,uBAAuB,EAC5B,KAAK,wCAAwC,EAC7C,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EACjC,KAAK,yCAAyC,EAC9C,KAAK,oCAAoC,EACzC,KAAK,kCAAkC,EACvC,KAAK,oCAAoC,EACzC,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EACtC,KAAK,4CAA4C,EACjD,KAAK,gCAAgC,EACrC,KAAK,gCAAgC,EACrC,+BAA+B,EAC/B,KAAK,+BAA+B,EACpC,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,eAAe,EAAiC,MAAM,yBAAyB,CAAC;AAK9F,KAAK,SAAS,GACV;IACE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,mBAAmB,EAAE,WAAW,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEN;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,mBAAmB;IAMzD,OAAO,CAAC,SAAS,CAAC;IAClB,OAAO,CAAC,IAAI;IANd,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAyC;IAEvD,YACU,SAAS,CAAC,8BAAkB,EAC5B,IAAI,GAAE,SAAkE,EAChF,SAAS,GAAE,eAAsC,EAGlD;IAED,IAAI,MAAM,6CAET;IAED;;;;OAIG;IAEI,kBAAkB,CACvB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,OAAO,sBAAsB,CAAC,CAAC,CAU3F;IAED;;;;OAIG;IAEI,kBAAkB,CACvB,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,6BAA6B,CAAC,kBAAkB,EAAE,OAAO,6BAA6B,CAAC,CAAC,CAUlG;IAEM,2BAA2B,CAChC,MAAM,EAAE,gCAAgC,GACvC,OAAO,CACR,6BAA6B,CAAC,+BAA+B,EAAE,OAAO,yCAAyC,CAAC,CACjH,CAQA;IAGM,2BAA2B,CAChC,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,6BAA6B,CAAC,oBAAoB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUhH;IAGM,0BAA0B,CAC/B,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,6BAA6B,CAAC,oBAAoB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUhH;IAED;;;;OAIG;IAEI,qBAAqB,CAC1B,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,6BAA6B,CAAC,oBAAoB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUhH;IAGM,4BAA4B,CACjC,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUnH;IAGY,oCAAoC,CAC/C,KAAK,EAAE,yCAAyC,GAC/C,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUnH;IAGM,mCAAmC,CACxC,KAAK,EAAE,wCAAwC,GAC9C,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUnH;IAGM,uBAAuB,CAC5B,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUnH;IAGY,+BAA+B,CAC1C,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUnH;IAGM,wBAAwB,CAC7B,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,6BAA6B,CAAC,uBAAuB,EAAE,OAAO,yCAAyC,CAAC,CAAC,CAUnH;IAGM,4BAA4B,CACjC,KAAK,EAAE,iCAAiC,GACvC,OAAO,CACR,6BAA6B,CAAC,4BAA4B,EAAE,OAAO,yCAAyC,CAAC,CAC9G,CAUA;IAGM,uCAAuC,CAC5C,KAAK,EAAE,4CAA4C,GAClD,OAAO,CACR,6BAA6B,CAAC,4BAA4B,EAAE,OAAO,yCAAyC,CAAC,CAC9G,CAUA;IAGM,+BAA+B,CACpC,KAAK,EAAE,oCAAoC,GAC1C,OAAO,CACR,6BAA6B,CAAC,4BAA4B,EAAE,OAAO,yCAAyC,CAAC,CAC9G,CAUA;IAGM,6BAA6B,CAClC,KAAK,EAAE,kCAAkC,GACxC,OAAO,CACR,6BAA6B,CAAC,4BAA4B,EAAE,OAAO,yCAAyC,CAAC,CAC9G,CAUA;IAED;;;;OAIG;IAEI,kBAAkB,CACvB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC,CAUhE;IAEM,WAAW,CAChB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,uBAAuB,CAAC,OAAO,oCAAoC,CAAC,CAAC,CAU/E;YAEa,UAAU;IAejB,WAAW,CAAC,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;YAEa,QAAQ;CA6CvB"}
|