@aztec/bb-prover 4.0.0-nightly.20250907 → 4.0.0-nightly.20260107
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 +23 -43
- package/dest/prover/server/bb_prover.d.ts.map +1 -1
- package/dest/prover/server/bb_prover.js +464 -165
- 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 +37 -25
- package/dest/test/index.d.ts +2 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +1 -0
- 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 +503 -81
- 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 -293
- package/src/test/delay_values.ts +38 -24
- package/src/test/index.ts +1 -0
- 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
package/src/test/delay_values.ts
CHANGED
|
@@ -1,33 +1,47 @@
|
|
|
1
1
|
import { ProvingRequestType } from '@aztec/stdlib/proofs';
|
|
2
2
|
|
|
3
3
|
export const WITGEN_DELAY_MS: Record<ProvingRequestType, number> = {
|
|
4
|
-
[ProvingRequestType.
|
|
5
|
-
[ProvingRequestType.
|
|
6
|
-
[ProvingRequestType.
|
|
7
|
-
[ProvingRequestType.
|
|
8
|
-
[ProvingRequestType.
|
|
9
|
-
[ProvingRequestType.
|
|
10
|
-
[ProvingRequestType.
|
|
11
|
-
[ProvingRequestType.
|
|
12
|
-
[ProvingRequestType.
|
|
13
|
-
[ProvingRequestType.
|
|
14
|
-
[ProvingRequestType.
|
|
15
|
-
[ProvingRequestType.TUBE_PROOF]: 0,
|
|
4
|
+
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 60,
|
|
5
|
+
[ProvingRequestType.PARITY_BASE]: 1_600,
|
|
6
|
+
[ProvingRequestType.PARITY_ROOT]: 40,
|
|
7
|
+
[ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 45,
|
|
8
|
+
[ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 18,
|
|
9
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 27,
|
|
10
|
+
[ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 30,
|
|
11
|
+
[ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: 36_000,
|
|
12
|
+
[ProvingRequestType.ROOT_ROLLUP]: 35,
|
|
13
|
+
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 2_500,
|
|
14
|
+
[ProvingRequestType.TX_MERGE_ROLLUP]: 25,
|
|
16
15
|
[ProvingRequestType.PUBLIC_VM]: 0,
|
|
16
|
+
|
|
17
|
+
// TBD
|
|
18
|
+
[ProvingRequestType.BLOCK_MERGE_ROLLUP]: 30,
|
|
19
|
+
[ProvingRequestType.BLOCK_ROOT_ROLLUP]: 40_000,
|
|
20
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: 20_000,
|
|
21
|
+
[ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: 40_000,
|
|
22
|
+
[ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
|
|
23
|
+
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 2_500, // Guess based on public
|
|
17
24
|
};
|
|
18
25
|
|
|
19
26
|
export const PROOF_DELAY_MS: Record<ProvingRequestType, number> = {
|
|
20
|
-
[ProvingRequestType.
|
|
27
|
+
[ProvingRequestType.PUBLIC_CHONK_VERIFIER]: 16_300,
|
|
28
|
+
[ProvingRequestType.PARITY_BASE]: 15_300,
|
|
29
|
+
[ProvingRequestType.PARITY_ROOT]: 18_600,
|
|
30
|
+
[ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP]: 17_400,
|
|
31
|
+
[ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP]: 4_500,
|
|
32
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP]: 9_200,
|
|
33
|
+
[ProvingRequestType.CHECKPOINT_MERGE_ROLLUP]: 10_200,
|
|
34
|
+
[ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP]: 37_100,
|
|
35
|
+
[ProvingRequestType.ROOT_ROLLUP]: 93_000,
|
|
36
|
+
[ProvingRequestType.TX_MERGE_ROLLUP]: 10_000,
|
|
37
|
+
[ProvingRequestType.PUBLIC_TX_BASE_ROLLUP]: 44_500,
|
|
38
|
+
[ProvingRequestType.PUBLIC_VM]: 10_000,
|
|
39
|
+
|
|
40
|
+
// TBD
|
|
21
41
|
[ProvingRequestType.BLOCK_MERGE_ROLLUP]: 15_000,
|
|
22
|
-
[ProvingRequestType.BLOCK_ROOT_ROLLUP]:
|
|
23
|
-
[ProvingRequestType.
|
|
24
|
-
[ProvingRequestType.
|
|
25
|
-
[ProvingRequestType.
|
|
26
|
-
[ProvingRequestType.
|
|
27
|
-
[ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP]: 0, // TBD
|
|
28
|
-
[ProvingRequestType.PUBLIC_BASE_ROLLUP]: 160_000,
|
|
29
|
-
[ProvingRequestType.ROOT_PARITY]: 30_000,
|
|
30
|
-
[ProvingRequestType.ROOT_ROLLUP]: 15_000,
|
|
31
|
-
[ProvingRequestType.TUBE_PROOF]: 30_000,
|
|
32
|
-
[ProvingRequestType.PUBLIC_VM]: 0,
|
|
42
|
+
[ProvingRequestType.BLOCK_ROOT_ROLLUP]: 35_000,
|
|
43
|
+
[ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP]: 15_000,
|
|
44
|
+
[ProvingRequestType.CHECKPOINT_ROOT_ROLLUP]: 35_000,
|
|
45
|
+
[ProvingRequestType.CHECKPOINT_PADDING_ROLLUP]: 0,
|
|
46
|
+
[ProvingRequestType.PRIVATE_TX_BASE_ROLLUP]: 45_000, // Guess based on public
|
|
33
47
|
};
|
package/src/test/index.ts
CHANGED
|
@@ -4,39 +4,49 @@ import {
|
|
|
4
4
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
5
5
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
6
6
|
RECURSIVE_PROOF_LENGTH,
|
|
7
|
-
TUBE_PROOF_LENGTH,
|
|
8
7
|
} from '@aztec/constants';
|
|
9
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
10
9
|
import { sleep } from '@aztec/foundation/sleep';
|
|
11
10
|
import { Timer } from '@aztec/foundation/timer';
|
|
12
11
|
import {
|
|
13
12
|
type ServerProtocolArtifact,
|
|
14
|
-
convertBaseParityInputsToWitnessMap,
|
|
15
|
-
convertBaseParityOutputsFromWitnessMap,
|
|
16
|
-
convertBlockMergeRollupInputsToWitnessMap,
|
|
17
13
|
convertBlockMergeRollupOutputsFromWitnessMap,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
14
|
+
convertBlockMergeRollupPrivateInputsToWitnessMap,
|
|
15
|
+
convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap,
|
|
16
|
+
convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap,
|
|
17
|
+
convertBlockRootFirstRollupOutputsFromWitnessMap,
|
|
18
|
+
convertBlockRootFirstRollupPrivateInputsToWitnessMap,
|
|
19
|
+
convertBlockRootRollupOutputsFromWitnessMap,
|
|
20
|
+
convertBlockRootRollupPrivateInputsToWitnessMap,
|
|
21
|
+
convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap,
|
|
22
|
+
convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap,
|
|
23
|
+
convertBlockRootSingleTxRollupOutputsFromWitnessMap,
|
|
24
|
+
convertBlockRootSingleTxRollupPrivateInputsToWitnessMap,
|
|
25
|
+
convertCheckpointMergeRollupOutputsFromWitnessMap,
|
|
26
|
+
convertCheckpointMergeRollupPrivateInputsToWitnessMap,
|
|
27
|
+
convertCheckpointPaddingRollupOutputsFromWitnessMap,
|
|
28
|
+
convertCheckpointPaddingRollupPrivateInputsToWitnessMap,
|
|
29
|
+
convertCheckpointRootRollupOutputsFromWitnessMap,
|
|
30
|
+
convertCheckpointRootRollupPrivateInputsToWitnessMap,
|
|
31
|
+
convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap,
|
|
32
|
+
convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap,
|
|
33
|
+
convertParityBaseOutputsFromWitnessMap,
|
|
34
|
+
convertParityBasePrivateInputsToWitnessMap,
|
|
35
|
+
convertParityRootOutputsFromWitnessMap,
|
|
36
|
+
convertParityRootPrivateInputsToWitnessMap,
|
|
37
|
+
convertPrivateTxBaseRollupOutputsFromWitnessMap,
|
|
38
|
+
convertPrivateTxBaseRollupPrivateInputsToWitnessMap,
|
|
39
|
+
convertPublicTxBaseRollupOutputsFromWitnessMap,
|
|
40
|
+
convertPublicTxBaseRollupPrivateInputsToWitnessMap,
|
|
27
41
|
convertRootRollupOutputsFromWitnessMap,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
convertSimulatedPrivateBaseRollupOutputsFromWitnessMap,
|
|
32
|
-
convertSimulatedPublicBaseRollupInputsToWitnessMap,
|
|
33
|
-
convertSimulatedPublicBaseRollupOutputsFromWitnessMap,
|
|
34
|
-
convertSimulatedSingleTxBlockRootRollupInputsToWitnessMap,
|
|
35
|
-
convertSimulatedSingleTxBlockRootRollupOutputsFromWitnessMap,
|
|
42
|
+
convertRootRollupPrivateInputsToWitnessMap,
|
|
43
|
+
convertTxMergeRollupOutputsFromWitnessMap,
|
|
44
|
+
convertTxMergeRollupPrivateInputsToWitnessMap,
|
|
36
45
|
foreignCallHandler,
|
|
37
46
|
getSimulatedServerCircuitArtifact,
|
|
38
47
|
} from '@aztec/noir-protocol-circuits-types/server';
|
|
39
48
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
49
|
+
import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
|
|
40
50
|
import type { WitnessMap } from '@aztec/noir-types';
|
|
41
51
|
import { type CircuitSimulator, WASMSimulatorWithBlobs, emitCircuitSimulationStats } from '@aztec/simulator/server';
|
|
42
52
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
@@ -47,28 +57,34 @@ import {
|
|
|
47
57
|
makeProofAndVerificationKey,
|
|
48
58
|
makePublicInputsAndRecursiveProof,
|
|
49
59
|
} from '@aztec/stdlib/interfaces/server';
|
|
50
|
-
import type {
|
|
60
|
+
import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
51
61
|
import { type Proof, ProvingRequestType, makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
|
|
52
|
-
import
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
import {
|
|
63
|
+
type BlockMergeRollupPrivateInputs,
|
|
64
|
+
type BlockRollupPublicInputs,
|
|
65
|
+
type BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
66
|
+
type BlockRootFirstRollupPrivateInputs,
|
|
67
|
+
type BlockRootRollupPrivateInputs,
|
|
68
|
+
type BlockRootSingleTxFirstRollupPrivateInputs,
|
|
69
|
+
type BlockRootSingleTxRollupPrivateInputs,
|
|
70
|
+
type CheckpointMergeRollupPrivateInputs,
|
|
71
|
+
type CheckpointPaddingRollupPrivateInputs,
|
|
72
|
+
type CheckpointRollupPublicInputs,
|
|
73
|
+
type CheckpointRootRollupPrivateInputs,
|
|
74
|
+
type CheckpointRootSingleBlockRollupPrivateInputs,
|
|
75
|
+
type PrivateTxBaseRollupPrivateInputs,
|
|
76
|
+
type PublicChonkVerifierPrivateInputs,
|
|
77
|
+
PublicChonkVerifierPublicInputs,
|
|
78
|
+
type PublicTxBaseRollupPrivateInputs,
|
|
79
|
+
type RootRollupPrivateInputs,
|
|
80
|
+
type RootRollupPublicInputs,
|
|
81
|
+
type TxMergeRollupPrivateInputs,
|
|
82
|
+
type TxRollupPublicInputs,
|
|
66
83
|
} from '@aztec/stdlib/rollup';
|
|
67
84
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
68
85
|
import { type TelemetryClient, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
69
86
|
|
|
70
87
|
import { ProverInstrumentation } from '../instrumentation.js';
|
|
71
|
-
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
72
88
|
import { PROOF_DELAY_MS, WITGEN_DELAY_MS } from './delay_values.js';
|
|
73
89
|
|
|
74
90
|
type TestDelay =
|
|
@@ -109,15 +125,15 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
109
125
|
*/
|
|
110
126
|
@trackSpan('TestCircuitProver.getBaseParityProof')
|
|
111
127
|
public getBaseParityProof(
|
|
112
|
-
inputs:
|
|
128
|
+
inputs: ParityBasePrivateInputs,
|
|
113
129
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
|
|
114
|
-
return this.applyDelay(ProvingRequestType.
|
|
130
|
+
return this.applyDelay(ProvingRequestType.PARITY_BASE, () =>
|
|
115
131
|
this.simulate(
|
|
116
132
|
inputs,
|
|
117
|
-
'
|
|
133
|
+
'ParityBaseArtifact',
|
|
118
134
|
RECURSIVE_PROOF_LENGTH,
|
|
119
|
-
|
|
120
|
-
|
|
135
|
+
convertParityBasePrivateInputsToWitnessMap,
|
|
136
|
+
convertParityBaseOutputsFromWitnessMap,
|
|
121
137
|
),
|
|
122
138
|
);
|
|
123
139
|
}
|
|
@@ -129,55 +145,59 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
129
145
|
*/
|
|
130
146
|
@trackSpan('TestCircuitProver.getRootParityProof')
|
|
131
147
|
public getRootParityProof(
|
|
132
|
-
inputs:
|
|
148
|
+
inputs: ParityRootPrivateInputs,
|
|
133
149
|
): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
|
|
134
|
-
return this.applyDelay(ProvingRequestType.
|
|
150
|
+
return this.applyDelay(ProvingRequestType.PARITY_ROOT, () =>
|
|
135
151
|
this.simulate(
|
|
136
152
|
inputs,
|
|
137
|
-
'
|
|
153
|
+
'ParityRootArtifact',
|
|
138
154
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
139
|
-
|
|
140
|
-
|
|
155
|
+
convertParityRootPrivateInputsToWitnessMap,
|
|
156
|
+
convertParityRootOutputsFromWitnessMap,
|
|
141
157
|
),
|
|
142
158
|
);
|
|
143
159
|
}
|
|
144
160
|
|
|
145
|
-
public
|
|
146
|
-
|
|
147
|
-
|
|
161
|
+
public getPublicChonkVerifierProof(
|
|
162
|
+
inputs: PublicChonkVerifierPrivateInputs,
|
|
163
|
+
): Promise<
|
|
164
|
+
PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
165
|
+
> {
|
|
166
|
+
return this.applyDelay(ProvingRequestType.PUBLIC_CHONK_VERIFIER, () =>
|
|
167
|
+
makePublicInputsAndRecursiveProof(
|
|
168
|
+
new PublicChonkVerifierPublicInputs(inputs.hidingKernelProofData.publicInputs, inputs.proverId),
|
|
169
|
+
makeEmptyRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH),
|
|
170
|
+
ProtocolCircuitVks.PublicChonkVerifier,
|
|
171
|
+
),
|
|
148
172
|
);
|
|
149
173
|
}
|
|
150
174
|
|
|
151
|
-
@trackSpan('TestCircuitProver.
|
|
152
|
-
public
|
|
153
|
-
inputs:
|
|
154
|
-
): Promise<
|
|
155
|
-
|
|
156
|
-
> {
|
|
157
|
-
return this.applyDelay(ProvingRequestType.PRIVATE_BASE_ROLLUP, () =>
|
|
175
|
+
@trackSpan('TestCircuitProver.getPrivateTxBaseRollupProof')
|
|
176
|
+
public getPrivateTxBaseRollupProof(
|
|
177
|
+
inputs: PrivateTxBaseRollupPrivateInputs,
|
|
178
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
179
|
+
return this.applyDelay(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, () =>
|
|
158
180
|
this.simulate(
|
|
159
181
|
inputs,
|
|
160
|
-
'
|
|
182
|
+
'PrivateTxBaseRollupArtifact',
|
|
161
183
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
162
|
-
|
|
163
|
-
|
|
184
|
+
convertPrivateTxBaseRollupPrivateInputsToWitnessMap,
|
|
185
|
+
convertPrivateTxBaseRollupOutputsFromWitnessMap,
|
|
164
186
|
),
|
|
165
187
|
);
|
|
166
188
|
}
|
|
167
189
|
|
|
168
|
-
@trackSpan('TestCircuitProver.
|
|
169
|
-
public
|
|
170
|
-
inputs:
|
|
171
|
-
): Promise<
|
|
172
|
-
|
|
173
|
-
> {
|
|
174
|
-
return this.applyDelay(ProvingRequestType.PUBLIC_BASE_ROLLUP, () =>
|
|
190
|
+
@trackSpan('TestCircuitProver.getPublicTxBaseRollupProof')
|
|
191
|
+
public getPublicTxBaseRollupProof(
|
|
192
|
+
inputs: PublicTxBaseRollupPrivateInputs,
|
|
193
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
194
|
+
return this.applyDelay(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, () =>
|
|
175
195
|
this.simulate(
|
|
176
196
|
inputs,
|
|
177
|
-
'
|
|
197
|
+
'PublicTxBaseRollupArtifact',
|
|
178
198
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
179
|
-
|
|
180
|
-
|
|
199
|
+
convertPublicTxBaseRollupPrivateInputsToWitnessMap,
|
|
200
|
+
convertPublicTxBaseRollupOutputsFromWitnessMap,
|
|
181
201
|
),
|
|
182
202
|
);
|
|
183
203
|
}
|
|
@@ -187,119 +207,175 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
187
207
|
* @param input - Inputs to the circuit.
|
|
188
208
|
* @returns The public inputs as outputs of the simulation.
|
|
189
209
|
*/
|
|
190
|
-
@trackSpan('TestCircuitProver.
|
|
191
|
-
public
|
|
192
|
-
input:
|
|
193
|
-
): Promise<
|
|
194
|
-
|
|
195
|
-
> {
|
|
196
|
-
return this.applyDelay(ProvingRequestType.MERGE_ROLLUP, () =>
|
|
210
|
+
@trackSpan('TestCircuitProver.getTxMergeRollupProof')
|
|
211
|
+
public getTxMergeRollupProof(
|
|
212
|
+
input: TxMergeRollupPrivateInputs,
|
|
213
|
+
): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
214
|
+
return this.applyDelay(ProvingRequestType.TX_MERGE_ROLLUP, () =>
|
|
197
215
|
this.simulate(
|
|
198
216
|
input,
|
|
199
|
-
'
|
|
217
|
+
'TxMergeRollupArtifact',
|
|
200
218
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
201
|
-
|
|
202
|
-
|
|
219
|
+
convertTxMergeRollupPrivateInputsToWitnessMap,
|
|
220
|
+
convertTxMergeRollupOutputsFromWitnessMap,
|
|
221
|
+
),
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@trackSpan('TestCircuitProver.getBlockRootFirstRollupProof')
|
|
226
|
+
public getBlockRootFirstRollupProof(
|
|
227
|
+
input: BlockRootFirstRollupPrivateInputs,
|
|
228
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
229
|
+
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, () =>
|
|
230
|
+
this.simulate(
|
|
231
|
+
input,
|
|
232
|
+
'BlockRootFirstRollupArtifact',
|
|
233
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
234
|
+
convertBlockRootFirstRollupPrivateInputsToWitnessMap,
|
|
235
|
+
convertBlockRootFirstRollupOutputsFromWitnessMap,
|
|
236
|
+
),
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@trackSpan('TestCircuitProver.getBlockRootSingleTxFirstRollupProof')
|
|
241
|
+
public async getBlockRootSingleTxFirstRollupProof(
|
|
242
|
+
input: BlockRootSingleTxFirstRollupPrivateInputs,
|
|
243
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
244
|
+
return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, () =>
|
|
245
|
+
this.simulate(
|
|
246
|
+
input,
|
|
247
|
+
'BlockRootSingleTxFirstRollupArtifact',
|
|
248
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
249
|
+
convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap,
|
|
250
|
+
convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap,
|
|
251
|
+
),
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
@trackSpan('TestCircuitProver.getBlockRootEmptyTxFirstRollupProof')
|
|
256
|
+
public getBlockRootEmptyTxFirstRollupProof(
|
|
257
|
+
input: BlockRootEmptyTxFirstRollupPrivateInputs,
|
|
258
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
259
|
+
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, () =>
|
|
260
|
+
this.simulate(
|
|
261
|
+
input,
|
|
262
|
+
'BlockRootEmptyTxFirstRollupArtifact',
|
|
263
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
264
|
+
convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap,
|
|
265
|
+
convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap,
|
|
203
266
|
),
|
|
204
267
|
);
|
|
205
268
|
}
|
|
206
269
|
|
|
207
|
-
/**
|
|
208
|
-
* Simulates the block root rollup circuit from its inputs.
|
|
209
|
-
* @param input - Inputs to the circuit.
|
|
210
|
-
* @returns The public inputs as outputs of the simulation.
|
|
211
|
-
*/
|
|
212
270
|
@trackSpan('TestCircuitProver.getBlockRootRollupProof')
|
|
213
271
|
public getBlockRootRollupProof(
|
|
214
|
-
input:
|
|
215
|
-
): Promise<
|
|
216
|
-
PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
217
|
-
> {
|
|
272
|
+
input: BlockRootRollupPrivateInputs,
|
|
273
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
218
274
|
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_ROLLUP, () =>
|
|
219
275
|
this.simulate(
|
|
220
276
|
input,
|
|
221
277
|
'BlockRootRollupArtifact',
|
|
222
278
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
223
|
-
|
|
224
|
-
|
|
279
|
+
convertBlockRootRollupPrivateInputsToWitnessMap,
|
|
280
|
+
convertBlockRootRollupOutputsFromWitnessMap,
|
|
281
|
+
),
|
|
282
|
+
);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
@trackSpan('TestCircuitProver.getBlockRootSingleTxRollupProof')
|
|
286
|
+
public async getBlockRootSingleTxRollupProof(
|
|
287
|
+
input: BlockRootSingleTxRollupPrivateInputs,
|
|
288
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
289
|
+
return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, () =>
|
|
290
|
+
this.simulate(
|
|
291
|
+
input,
|
|
292
|
+
'BlockRootSingleTxRollupArtifact',
|
|
293
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
294
|
+
convertBlockRootSingleTxRollupPrivateInputsToWitnessMap,
|
|
295
|
+
convertBlockRootSingleTxRollupOutputsFromWitnessMap,
|
|
296
|
+
),
|
|
297
|
+
);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
@trackSpan('TestCircuitProver.getBlockMergeRollupProof')
|
|
301
|
+
public getBlockMergeRollupProof(
|
|
302
|
+
input: BlockMergeRollupPrivateInputs,
|
|
303
|
+
): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
|
|
304
|
+
return this.applyDelay(ProvingRequestType.BLOCK_MERGE_ROLLUP, () =>
|
|
305
|
+
this.simulate(
|
|
306
|
+
input,
|
|
307
|
+
'BlockMergeRollupArtifact',
|
|
308
|
+
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
309
|
+
convertBlockMergeRollupPrivateInputsToWitnessMap,
|
|
310
|
+
convertBlockMergeRollupOutputsFromWitnessMap,
|
|
225
311
|
),
|
|
226
312
|
);
|
|
227
313
|
}
|
|
228
314
|
|
|
229
|
-
@trackSpan('TestCircuitProver.
|
|
230
|
-
public
|
|
231
|
-
input:
|
|
315
|
+
@trackSpan('TestCircuitProver.getCheckpointRootRollupProof')
|
|
316
|
+
public getCheckpointRootRollupProof(
|
|
317
|
+
input: CheckpointRootRollupPrivateInputs,
|
|
232
318
|
): Promise<
|
|
233
|
-
PublicInputsAndRecursiveProof<
|
|
319
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
234
320
|
> {
|
|
235
|
-
return
|
|
321
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, () =>
|
|
236
322
|
this.simulate(
|
|
237
323
|
input,
|
|
238
|
-
'
|
|
324
|
+
'CheckpointRootRollupArtifact',
|
|
239
325
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
240
|
-
|
|
241
|
-
|
|
326
|
+
convertCheckpointRootRollupPrivateInputsToWitnessMap,
|
|
327
|
+
convertCheckpointRootRollupOutputsFromWitnessMap,
|
|
242
328
|
),
|
|
243
329
|
);
|
|
244
330
|
}
|
|
245
331
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
* @returns The public inputs as outputs of the simulation.
|
|
250
|
-
*/
|
|
251
|
-
@trackSpan('TestCircuitProver.getEmptyBlockRootRollupProof')
|
|
252
|
-
public getEmptyBlockRootRollupProof(
|
|
253
|
-
input: EmptyBlockRootRollupInputs,
|
|
332
|
+
@trackSpan('TestCircuitProver.getCheckpointRootSingleBlockRollupProof')
|
|
333
|
+
public getCheckpointRootSingleBlockRollupProof(
|
|
334
|
+
input: CheckpointRootSingleBlockRollupPrivateInputs,
|
|
254
335
|
): Promise<
|
|
255
|
-
PublicInputsAndRecursiveProof<
|
|
336
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
256
337
|
> {
|
|
257
|
-
return this.applyDelay(ProvingRequestType.
|
|
338
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, () =>
|
|
258
339
|
this.simulate(
|
|
259
340
|
input,
|
|
260
|
-
'
|
|
341
|
+
'CheckpointRootSingleBlockRollupArtifact',
|
|
261
342
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
262
|
-
|
|
263
|
-
|
|
343
|
+
convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap,
|
|
344
|
+
convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap,
|
|
264
345
|
),
|
|
265
346
|
);
|
|
266
347
|
}
|
|
267
348
|
|
|
268
|
-
@trackSpan('TestCircuitProver.
|
|
269
|
-
public
|
|
270
|
-
input:
|
|
349
|
+
@trackSpan('TestCircuitProver.getCheckpointPaddingRollupProof')
|
|
350
|
+
public getCheckpointPaddingRollupProof(
|
|
351
|
+
input: CheckpointPaddingRollupPrivateInputs,
|
|
271
352
|
): Promise<
|
|
272
|
-
PublicInputsAndRecursiveProof<
|
|
353
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
273
354
|
> {
|
|
274
|
-
return this.applyDelay(ProvingRequestType.
|
|
355
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, () =>
|
|
275
356
|
this.simulate(
|
|
276
357
|
input,
|
|
277
|
-
'
|
|
358
|
+
'CheckpointPaddingRollupArtifact',
|
|
278
359
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
279
|
-
|
|
280
|
-
|
|
360
|
+
convertCheckpointPaddingRollupPrivateInputsToWitnessMap,
|
|
361
|
+
convertCheckpointPaddingRollupOutputsFromWitnessMap,
|
|
281
362
|
),
|
|
282
363
|
);
|
|
283
364
|
}
|
|
284
365
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
* @returns The public inputs as outputs of the simulation.
|
|
289
|
-
*/
|
|
290
|
-
@trackSpan('TestCircuitProver.getBlockMergeRollupProof')
|
|
291
|
-
public getBlockMergeRollupProof(
|
|
292
|
-
input: BlockMergeRollupInputs,
|
|
366
|
+
@trackSpan('TestCircuitProver.getCheckpointMergeRollupProof')
|
|
367
|
+
public getCheckpointMergeRollupProof(
|
|
368
|
+
input: CheckpointMergeRollupPrivateInputs,
|
|
293
369
|
): Promise<
|
|
294
|
-
PublicInputsAndRecursiveProof<
|
|
370
|
+
PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
|
|
295
371
|
> {
|
|
296
|
-
return this.applyDelay(ProvingRequestType.
|
|
372
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, () =>
|
|
297
373
|
this.simulate(
|
|
298
374
|
input,
|
|
299
|
-
'
|
|
375
|
+
'CheckpointMergeRollupArtifact',
|
|
300
376
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
|
|
301
|
-
|
|
302
|
-
|
|
377
|
+
convertCheckpointMergeRollupPrivateInputsToWitnessMap,
|
|
378
|
+
convertCheckpointMergeRollupOutputsFromWitnessMap,
|
|
303
379
|
),
|
|
304
380
|
);
|
|
305
381
|
}
|
|
@@ -310,13 +386,15 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
310
386
|
* @returns The public inputs as outputs of the simulation.
|
|
311
387
|
*/
|
|
312
388
|
@trackSpan('TestCircuitProver.getRootRollupProof')
|
|
313
|
-
public getRootRollupProof(
|
|
389
|
+
public getRootRollupProof(
|
|
390
|
+
input: RootRollupPrivateInputs,
|
|
391
|
+
): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs>> {
|
|
314
392
|
return this.applyDelay(ProvingRequestType.ROOT_ROLLUP, () =>
|
|
315
393
|
this.simulate(
|
|
316
394
|
input,
|
|
317
395
|
'RootRollupArtifact',
|
|
318
396
|
NESTED_RECURSIVE_PROOF_LENGTH,
|
|
319
|
-
|
|
397
|
+
convertRootRollupPrivateInputsToWitnessMap,
|
|
320
398
|
convertRootRollupOutputsFromWitnessMap,
|
|
321
399
|
),
|
|
322
400
|
);
|
|
@@ -363,21 +441,20 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
363
441
|
input: CircuitInputType,
|
|
364
442
|
artifactName: ServerProtocolArtifact,
|
|
365
443
|
proofLength: PROOF_LENGTH,
|
|
366
|
-
convertInput: (input: CircuitInputType) => WitnessMap,
|
|
367
|
-
convertOutput: (outputWitness: WitnessMap) => CircuitOutputType,
|
|
444
|
+
convertInput: (input: CircuitInputType, simulated?: boolean) => WitnessMap,
|
|
445
|
+
convertOutput: (outputWitness: WitnessMap, simulated?: boolean) => CircuitOutputType,
|
|
368
446
|
) {
|
|
369
447
|
const timer = new Timer();
|
|
370
|
-
const witnessMap = convertInput(input);
|
|
448
|
+
const witnessMap = convertInput(input, true /* simulated */);
|
|
371
449
|
const circuitName = mapProtocolArtifactNameToCircuitName(artifactName);
|
|
372
450
|
|
|
373
451
|
let witness: WitnessMap;
|
|
374
452
|
if (
|
|
375
|
-
['
|
|
453
|
+
['CheckpointRootRollupArtifact', 'CheckpointRootSingleBlockRollupArtifact'].includes(artifactName) ||
|
|
376
454
|
this.simulator == undefined
|
|
377
455
|
) {
|
|
378
456
|
// TODO(#10323): Native ACVM simulator does not support foreign call handler so we use the wasm simulator
|
|
379
|
-
// when simulating
|
|
380
|
-
// is not provided.
|
|
457
|
+
// when simulating checkpoint root rollup circuits or when the native ACVM simulator is not provided.
|
|
381
458
|
witness = (
|
|
382
459
|
await this.wasmSimulator.executeProtocolCircuit(
|
|
383
460
|
witnessMap,
|
|
@@ -395,7 +472,7 @@ export class TestCircuitProver implements ServerCircuitProver {
|
|
|
395
472
|
).witness;
|
|
396
473
|
}
|
|
397
474
|
|
|
398
|
-
const result = convertOutput(witness);
|
|
475
|
+
const result = convertOutput(witness, true /* simulated */);
|
|
399
476
|
|
|
400
477
|
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
401
478
|
emitCircuitSimulationStats(circuitName, timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
@@ -2,7 +2,15 @@ import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '
|
|
|
2
2
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
3
3
|
|
|
4
4
|
export class TestCircuitVerifier implements ClientProtocolCircuitVerifier {
|
|
5
|
+
constructor(private verificationDelayMs?: number) {}
|
|
5
6
|
verifyProof(_tx: Tx): Promise<IVCProofVerificationResult> {
|
|
7
|
+
if (this.verificationDelayMs !== undefined && this.verificationDelayMs > 0) {
|
|
8
|
+
return new Promise(resolve => {
|
|
9
|
+
setTimeout(() => {
|
|
10
|
+
resolve({ valid: true, durationMs: this.verificationDelayMs!, totalDurationMs: this.verificationDelayMs! });
|
|
11
|
+
}, this.verificationDelayMs);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
6
14
|
return Promise.resolve({ valid: true, durationMs: 0, totalDurationMs: 0 });
|
|
7
15
|
}
|
|
8
16
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED } from '@aztec/constants';
|
|
2
|
-
import { Fr } from '@aztec/foundation/
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { BufferReader } from '@aztec/foundation/serialize';
|
|
4
4
|
import { VerificationKeyAsFields, VerificationKeyData } from '@aztec/stdlib/vks';
|
|
5
5
|
|