@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
|
@@ -8,15 +8,15 @@ import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AVM_V2_VERIFICATION_KEY_LENGTH_IN
|
|
|
8
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
9
9
|
import { sleep } from '@aztec/foundation/sleep';
|
|
10
10
|
import { Timer } from '@aztec/foundation/timer';
|
|
11
|
-
import {
|
|
11
|
+
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, convertPublicTxBaseRollupOutputsFromWitnessMap, convertPublicTxBaseRollupPrivateInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertRootRollupPrivateInputsToWitnessMap, convertTxMergeRollupOutputsFromWitnessMap, convertTxMergeRollupPrivateInputsToWitnessMap, foreignCallHandler, getSimulatedServerCircuitArtifact } from '@aztec/noir-protocol-circuits-types/server';
|
|
12
12
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
13
|
+
import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
|
|
13
14
|
import { WASMSimulatorWithBlobs, emitCircuitSimulationStats } from '@aztec/simulator/server';
|
|
14
15
|
import { makeProofAndVerificationKey, makePublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
15
16
|
import { ProvingRequestType, makeEmptyRecursiveProof, makeRecursiveProof } from '@aztec/stdlib/proofs';
|
|
16
17
|
import { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
17
18
|
import { getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
18
19
|
import { ProverInstrumentation } from '../instrumentation.js';
|
|
19
|
-
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
20
20
|
import { PROOF_DELAY_MS, WITGEN_DELAY_MS } from './delay_values.js';
|
|
21
21
|
/**
|
|
22
22
|
* A class for use in testing situations (e2e, unit test, etc) and temporarily for assembling a block in the sequencer.
|
|
@@ -45,64 +45,67 @@ import { PROOF_DELAY_MS, WITGEN_DELAY_MS } from './delay_values.js';
|
|
|
45
45
|
* @param inputs - Inputs to the circuit.
|
|
46
46
|
* @returns The public inputs of the parity circuit.
|
|
47
47
|
*/ getBaseParityProof(inputs) {
|
|
48
|
-
return this.applyDelay(ProvingRequestType.
|
|
48
|
+
return this.applyDelay(ProvingRequestType.PARITY_BASE, ()=>this.simulate(inputs, 'ParityBaseArtifact', RECURSIVE_PROOF_LENGTH, convertParityBasePrivateInputsToWitnessMap, convertParityBaseOutputsFromWitnessMap));
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Simulates the root parity circuit from its inputs.
|
|
52
52
|
* @param inputs - Inputs to the circuit.
|
|
53
53
|
* @returns The public inputs of the parity circuit.
|
|
54
54
|
*/ getRootParityProof(inputs) {
|
|
55
|
-
return this.applyDelay(ProvingRequestType.
|
|
55
|
+
return this.applyDelay(ProvingRequestType.PARITY_ROOT, ()=>this.simulate(inputs, 'ParityRootArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertParityRootPrivateInputsToWitnessMap, convertParityRootOutputsFromWitnessMap));
|
|
56
56
|
}
|
|
57
57
|
getPublicTubeProof(inputs) {
|
|
58
58
|
return this.applyDelay(ProvingRequestType.PUBLIC_TUBE, ()=>makePublicInputsAndRecursiveProof(inputs.hidingKernelProofData.publicInputs, makeEmptyRecursiveProof(NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH), ProtocolCircuitVks.PublicTube));
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
return this.applyDelay(ProvingRequestType.
|
|
60
|
+
getPrivateTxBaseRollupProof(inputs) {
|
|
61
|
+
return this.applyDelay(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, ()=>this.simulate(inputs, 'PrivateTxBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPrivateTxBaseRollupPrivateInputsToWitnessMap, convertPrivateTxBaseRollupOutputsFromWitnessMap));
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
return this.applyDelay(ProvingRequestType.
|
|
63
|
+
getPublicTxBaseRollupProof(inputs) {
|
|
64
|
+
return this.applyDelay(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, ()=>this.simulate(inputs, 'PublicTxBaseRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertPublicTxBaseRollupPrivateInputsToWitnessMap, convertPublicTxBaseRollupOutputsFromWitnessMap));
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
67
|
* Simulates the merge rollup circuit from its inputs.
|
|
68
68
|
* @param input - Inputs to the circuit.
|
|
69
69
|
* @returns The public inputs as outputs of the simulation.
|
|
70
|
-
*/
|
|
71
|
-
return this.applyDelay(ProvingRequestType.
|
|
70
|
+
*/ getTxMergeRollupProof(input) {
|
|
71
|
+
return this.applyDelay(ProvingRequestType.TX_MERGE_ROLLUP, ()=>this.simulate(input, 'TxMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertTxMergeRollupPrivateInputsToWitnessMap, convertTxMergeRollupOutputsFromWitnessMap));
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
* @param input - Inputs to the circuit.
|
|
76
|
-
* @returns The public inputs as outputs of the simulation.
|
|
77
|
-
*/ getBlockRootRollupProof(input) {
|
|
78
|
-
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_ROLLUP, ()=>this.simulate(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertSimulatedBlockRootRollupInputsToWitnessMap, convertSimulatedBlockRootRollupOutputsFromWitnessMap));
|
|
73
|
+
getBlockRootFirstRollupProof(input) {
|
|
74
|
+
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, ()=>this.simulate(input, 'BlockRootFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootFirstRollupPrivateInputsToWitnessMap, convertBlockRootFirstRollupOutputsFromWitnessMap));
|
|
79
75
|
}
|
|
80
|
-
async
|
|
81
|
-
return await this.applyDelay(ProvingRequestType.
|
|
76
|
+
async getBlockRootSingleTxFirstRollupProof(input) {
|
|
77
|
+
return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, ()=>this.simulate(input, 'BlockRootSingleTxFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootSingleTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxFirstRollupOutputsFromWitnessMap));
|
|
82
78
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
* @param input - Inputs to the circuit.
|
|
86
|
-
* @returns The public inputs as outputs of the simulation.
|
|
87
|
-
*/ getEmptyBlockRootRollupProof(input) {
|
|
88
|
-
return this.applyDelay(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, ()=>this.simulate(input, 'EmptyBlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap));
|
|
79
|
+
getBlockRootEmptyTxFirstRollupProof(input) {
|
|
80
|
+
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, ()=>this.simulate(input, 'BlockRootEmptyTxFirstRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootEmptyTxFirstRollupPrivateInputsToWitnessMap, convertBlockRootEmptyTxFirstRollupOutputsFromWitnessMap));
|
|
89
81
|
}
|
|
90
|
-
|
|
91
|
-
return this.applyDelay(ProvingRequestType.
|
|
82
|
+
getBlockRootRollupProof(input) {
|
|
83
|
+
return this.applyDelay(ProvingRequestType.BLOCK_ROOT_ROLLUP, ()=>this.simulate(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootRollupPrivateInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap));
|
|
92
84
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
85
|
+
async getBlockRootSingleTxRollupProof(input) {
|
|
86
|
+
return await this.applyDelay(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, ()=>this.simulate(input, 'BlockRootSingleTxRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockRootSingleTxRollupPrivateInputsToWitnessMap, convertBlockRootSingleTxRollupOutputsFromWitnessMap));
|
|
87
|
+
}
|
|
88
|
+
getBlockMergeRollupProof(input) {
|
|
89
|
+
return this.applyDelay(ProvingRequestType.BLOCK_MERGE_ROLLUP, ()=>this.simulate(input, 'BlockMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertBlockMergeRollupPrivateInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap));
|
|
90
|
+
}
|
|
91
|
+
getCheckpointRootRollupProof(input) {
|
|
92
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, ()=>this.simulate(input, 'CheckpointRootRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointRootRollupPrivateInputsToWitnessMap, convertCheckpointRootRollupOutputsFromWitnessMap));
|
|
93
|
+
}
|
|
94
|
+
getCheckpointRootSingleBlockRollupProof(input) {
|
|
95
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, ()=>this.simulate(input, 'CheckpointRootSingleBlockRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointRootSingleBlockRollupPrivateInputsToWitnessMap, convertCheckpointRootSingleBlockRollupOutputsFromWitnessMap));
|
|
96
|
+
}
|
|
97
|
+
getCheckpointPaddingRollupProof(input) {
|
|
98
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, ()=>this.simulate(input, 'CheckpointPaddingRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointPaddingRollupPrivateInputsToWitnessMap, convertCheckpointPaddingRollupOutputsFromWitnessMap));
|
|
99
|
+
}
|
|
100
|
+
getCheckpointMergeRollupProof(input) {
|
|
101
|
+
return this.applyDelay(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, ()=>this.simulate(input, 'CheckpointMergeRollupArtifact', NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, convertCheckpointMergeRollupPrivateInputsToWitnessMap, convertCheckpointMergeRollupOutputsFromWitnessMap));
|
|
99
102
|
}
|
|
100
103
|
/**
|
|
101
104
|
* Simulates the root rollup circuit from its inputs.
|
|
102
105
|
* @param input - Inputs to the circuit.
|
|
103
106
|
* @returns The public inputs as outputs of the simulation.
|
|
104
107
|
*/ getRootRollupProof(input) {
|
|
105
|
-
return this.applyDelay(ProvingRequestType.ROOT_ROLLUP, ()=>this.simulate(input, 'RootRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH,
|
|
108
|
+
return this.applyDelay(ProvingRequestType.ROOT_ROLLUP, ()=>this.simulate(input, 'RootRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertRootRollupPrivateInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap));
|
|
106
109
|
}
|
|
107
110
|
getAvmProof(_inputs) {
|
|
108
111
|
// We can't simulate the AVM because we don't have enough context to do so (e.g., DBs).
|
|
@@ -128,21 +131,20 @@ import { PROOF_DELAY_MS, WITGEN_DELAY_MS } from './delay_values.js';
|
|
|
128
131
|
}
|
|
129
132
|
async simulate(input, artifactName, proofLength, convertInput, convertOutput) {
|
|
130
133
|
const timer = new Timer();
|
|
131
|
-
const witnessMap = convertInput(input);
|
|
134
|
+
const witnessMap = convertInput(input, true);
|
|
132
135
|
const circuitName = mapProtocolArtifactNameToCircuitName(artifactName);
|
|
133
136
|
let witness;
|
|
134
137
|
if ([
|
|
135
|
-
'
|
|
136
|
-
'
|
|
138
|
+
'CheckpointRootRollupArtifact',
|
|
139
|
+
'CheckpointRootSingleBlockRollupArtifact'
|
|
137
140
|
].includes(artifactName) || this.simulator == undefined) {
|
|
138
141
|
// TODO(#10323): Native ACVM simulator does not support foreign call handler so we use the wasm simulator
|
|
139
|
-
// when simulating
|
|
140
|
-
// is not provided.
|
|
142
|
+
// when simulating checkpoint root rollup circuits or when the native ACVM simulator is not provided.
|
|
141
143
|
witness = (await this.wasmSimulator.executeProtocolCircuit(witnessMap, getSimulatedServerCircuitArtifact(artifactName), foreignCallHandler)).witness;
|
|
142
144
|
} else {
|
|
143
145
|
witness = (await this.simulator.executeProtocolCircuit(witnessMap, getSimulatedServerCircuitArtifact(artifactName), undefined)).witness;
|
|
144
146
|
}
|
|
145
|
-
const result = convertOutput(witness);
|
|
147
|
+
const result = convertOutput(witness, true);
|
|
146
148
|
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
147
149
|
emitCircuitSimulationStats(circuitName, timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
148
150
|
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(proofLength), ProtocolCircuitVks[artifactName]);
|
|
@@ -155,29 +157,44 @@ _ts_decorate([
|
|
|
155
157
|
trackSpan('TestCircuitProver.getRootParityProof')
|
|
156
158
|
], TestCircuitProver.prototype, "getRootParityProof", null);
|
|
157
159
|
_ts_decorate([
|
|
158
|
-
trackSpan('TestCircuitProver.
|
|
159
|
-
], TestCircuitProver.prototype, "
|
|
160
|
+
trackSpan('TestCircuitProver.getPrivateTxBaseRollupProof')
|
|
161
|
+
], TestCircuitProver.prototype, "getPrivateTxBaseRollupProof", null);
|
|
160
162
|
_ts_decorate([
|
|
161
|
-
trackSpan('TestCircuitProver.
|
|
162
|
-
], TestCircuitProver.prototype, "
|
|
163
|
+
trackSpan('TestCircuitProver.getPublicTxBaseRollupProof')
|
|
164
|
+
], TestCircuitProver.prototype, "getPublicTxBaseRollupProof", null);
|
|
163
165
|
_ts_decorate([
|
|
164
|
-
trackSpan('TestCircuitProver.
|
|
165
|
-
], TestCircuitProver.prototype, "
|
|
166
|
+
trackSpan('TestCircuitProver.getTxMergeRollupProof')
|
|
167
|
+
], TestCircuitProver.prototype, "getTxMergeRollupProof", null);
|
|
166
168
|
_ts_decorate([
|
|
167
|
-
trackSpan('TestCircuitProver.
|
|
168
|
-
], TestCircuitProver.prototype, "
|
|
169
|
+
trackSpan('TestCircuitProver.getBlockRootFirstRollupProof')
|
|
170
|
+
], TestCircuitProver.prototype, "getBlockRootFirstRollupProof", null);
|
|
169
171
|
_ts_decorate([
|
|
170
|
-
trackSpan('TestCircuitProver.
|
|
171
|
-
], TestCircuitProver.prototype, "
|
|
172
|
+
trackSpan('TestCircuitProver.getBlockRootSingleTxFirstRollupProof')
|
|
173
|
+
], TestCircuitProver.prototype, "getBlockRootSingleTxFirstRollupProof", null);
|
|
172
174
|
_ts_decorate([
|
|
173
|
-
trackSpan('TestCircuitProver.
|
|
174
|
-
], TestCircuitProver.prototype, "
|
|
175
|
+
trackSpan('TestCircuitProver.getBlockRootEmptyTxFirstRollupProof')
|
|
176
|
+
], TestCircuitProver.prototype, "getBlockRootEmptyTxFirstRollupProof", null);
|
|
175
177
|
_ts_decorate([
|
|
176
|
-
trackSpan('TestCircuitProver.
|
|
177
|
-
], TestCircuitProver.prototype, "
|
|
178
|
+
trackSpan('TestCircuitProver.getBlockRootRollupProof')
|
|
179
|
+
], TestCircuitProver.prototype, "getBlockRootRollupProof", null);
|
|
180
|
+
_ts_decorate([
|
|
181
|
+
trackSpan('TestCircuitProver.getBlockRootSingleTxRollupProof')
|
|
182
|
+
], TestCircuitProver.prototype, "getBlockRootSingleTxRollupProof", null);
|
|
178
183
|
_ts_decorate([
|
|
179
184
|
trackSpan('TestCircuitProver.getBlockMergeRollupProof')
|
|
180
185
|
], TestCircuitProver.prototype, "getBlockMergeRollupProof", null);
|
|
186
|
+
_ts_decorate([
|
|
187
|
+
trackSpan('TestCircuitProver.getCheckpointRootRollupProof')
|
|
188
|
+
], TestCircuitProver.prototype, "getCheckpointRootRollupProof", null);
|
|
189
|
+
_ts_decorate([
|
|
190
|
+
trackSpan('TestCircuitProver.getCheckpointRootSingleBlockRollupProof')
|
|
191
|
+
], TestCircuitProver.prototype, "getCheckpointRootSingleBlockRollupProof", null);
|
|
192
|
+
_ts_decorate([
|
|
193
|
+
trackSpan('TestCircuitProver.getCheckpointPaddingRollupProof')
|
|
194
|
+
], TestCircuitProver.prototype, "getCheckpointPaddingRollupProof", null);
|
|
195
|
+
_ts_decorate([
|
|
196
|
+
trackSpan('TestCircuitProver.getCheckpointMergeRollupProof')
|
|
197
|
+
], TestCircuitProver.prototype, "getCheckpointMergeRollupProof", null);
|
|
181
198
|
_ts_decorate([
|
|
182
199
|
trackSpan('TestCircuitProver.getRootRollupProof')
|
|
183
200
|
], TestCircuitProver.prototype, "getRootRollupProof", null);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
-
import type
|
|
2
|
+
import { type ProtocolArtifact, type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types/types';
|
|
3
3
|
import type { ClientProtocolCircuitVerifier, IVCProofVerificationResult } from '@aztec/stdlib/interfaces/server';
|
|
4
4
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
5
5
|
import { Tx } from '@aztec/stdlib/tx';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"bb_verifier.d.ts","sourceRoot":"","sources":["../../src/verifier/bb_verifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAE5B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAa7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7C,qBAAa,iBAAkB,YAAW,6BAA6B;IAEnE,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAFhB,OAAO;IAKA,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;WAIR,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAqC;IAK9E,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB;IAQhE,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK;IAqCnE,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;CAkDtE"}
|
|
@@ -2,12 +2,12 @@ import { runInDirectory } from '@aztec/foundation/fs';
|
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
4
|
import { ProtocolCircuitVks } from '@aztec/noir-protocol-circuits-types/server/vks';
|
|
5
|
+
import { mapProtocolArtifactNameToCircuitName } from '@aztec/noir-protocol-circuits-types/types';
|
|
5
6
|
import { promises as fs } from 'fs';
|
|
6
7
|
import * as path from 'path';
|
|
7
8
|
import { BB_RESULT, PROOF_FILENAME, PUBLIC_INPUTS_FILENAME, VK_FILENAME, verifyClientIvcProof, verifyProof } from '../bb/execute.js';
|
|
8
9
|
import { getUltraHonkFlavorForCircuit } from '../honk.js';
|
|
9
10
|
import { writeClientIVCProofToPath } from '../prover/proof_utils.js';
|
|
10
|
-
import { mapProtocolArtifactNameToCircuitName } from '../stats.js';
|
|
11
11
|
export class BBCircuitVerifier {
|
|
12
12
|
config;
|
|
13
13
|
logger;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb-prover",
|
|
3
|
-
"version": "3.0.0-nightly.
|
|
3
|
+
"version": "3.0.0-nightly.20250919",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -69,27 +69,27 @@
|
|
|
69
69
|
]
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@aztec/bb.js": "3.0.0-nightly.
|
|
73
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
74
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
75
|
-
"@aztec/noir-noirc_abi": "3.0.0-nightly.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.
|
|
77
|
-
"@aztec/noir-types": "3.0.0-nightly.
|
|
78
|
-
"@aztec/simulator": "3.0.0-nightly.
|
|
79
|
-
"@aztec/stdlib": "3.0.0-nightly.
|
|
80
|
-
"@aztec/telemetry-client": "3.0.0-nightly.
|
|
81
|
-
"@aztec/world-state": "3.0.0-nightly.
|
|
72
|
+
"@aztec/bb.js": "3.0.0-nightly.20250919",
|
|
73
|
+
"@aztec/constants": "3.0.0-nightly.20250919",
|
|
74
|
+
"@aztec/foundation": "3.0.0-nightly.20250919",
|
|
75
|
+
"@aztec/noir-noirc_abi": "3.0.0-nightly.20250919",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "3.0.0-nightly.20250919",
|
|
77
|
+
"@aztec/noir-types": "3.0.0-nightly.20250919",
|
|
78
|
+
"@aztec/simulator": "3.0.0-nightly.20250919",
|
|
79
|
+
"@aztec/stdlib": "3.0.0-nightly.20250919",
|
|
80
|
+
"@aztec/telemetry-client": "3.0.0-nightly.20250919",
|
|
81
|
+
"@aztec/world-state": "3.0.0-nightly.20250919",
|
|
82
82
|
"commander": "^12.1.0",
|
|
83
83
|
"pako": "^2.1.0",
|
|
84
84
|
"source-map-support": "^0.5.21",
|
|
85
85
|
"tslib": "^2.4.0"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@aztec/ethereum": "3.0.0-nightly.
|
|
89
|
-
"@aztec/kv-store": "3.0.0-nightly.
|
|
90
|
-
"@aztec/noir-contracts.js": "3.0.0-nightly.
|
|
91
|
-
"@aztec/noir-test-contracts.js": "3.0.0-nightly.
|
|
92
|
-
"@aztec/protocol-contracts": "3.0.0-nightly.
|
|
88
|
+
"@aztec/ethereum": "3.0.0-nightly.20250919",
|
|
89
|
+
"@aztec/kv-store": "3.0.0-nightly.20250919",
|
|
90
|
+
"@aztec/noir-contracts.js": "3.0.0-nightly.20250919",
|
|
91
|
+
"@aztec/noir-test-contracts.js": "3.0.0-nightly.20250919",
|
|
92
|
+
"@aztec/protocol-contracts": "3.0.0-nightly.20250919",
|
|
93
93
|
"@jest/globals": "^30.0.0",
|
|
94
94
|
"@types/jest": "^30.0.0",
|
|
95
95
|
"@types/node": "^22.15.17",
|
package/src/bb/execute.ts
CHANGED
|
@@ -225,7 +225,7 @@ export async function generateProof(
|
|
|
225
225
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
// The bytecode is written to e.g. /workingDirectory/
|
|
228
|
+
// The bytecode is written to e.g. /workingDirectory/ParityBaseArtifact-bytecode
|
|
229
229
|
const bytecodePath = `${workingDirectory}/${circuitName}-bytecode`;
|
|
230
230
|
const vkPath = `${workingDirectory}/${circuitName}-vk`;
|
|
231
231
|
|
|
@@ -612,7 +612,7 @@ export async function computeGateCountForCircuit(
|
|
|
612
612
|
return { status: BB_RESULT.FAILURE, reason: `Working directory ${workingDirectory} does not exist` };
|
|
613
613
|
}
|
|
614
614
|
|
|
615
|
-
// The bytecode is written to e.g. /workingDirectory/
|
|
615
|
+
// The bytecode is written to e.g. /workingDirectory/ParityBaseArtifact-bytecode
|
|
616
616
|
const bytecodePath = `${workingDirectory}/${circuitName}-bytecode`;
|
|
617
617
|
|
|
618
618
|
const binaryPresent = await fs
|
package/src/honk.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types
|
|
|
3
3
|
export type UltraHonkFlavor = 'ultra_honk' | 'ultra_keccak_honk' | 'ultra_starknet_honk' | 'ultra_rollup_honk';
|
|
4
4
|
|
|
5
5
|
const UltraKeccakHonkCircuits = ['RootRollupArtifact'] as const satisfies ServerProtocolArtifact[];
|
|
6
|
-
const UltraHonkCircuits = ['
|
|
6
|
+
const UltraHonkCircuits = ['ParityBaseArtifact', 'ParityRootArtifact'] as const satisfies ServerProtocolArtifact[];
|
|
7
7
|
|
|
8
8
|
export type UltraKeccakHonkServerProtocolArtifact = (typeof UltraKeccakHonkCircuits)[number];
|
|
9
9
|
export type UltraHonkServerProtocolArtifact = (typeof UltraHonkCircuits)[number];
|
|
@@ -16,7 +16,11 @@ import {
|
|
|
16
16
|
getPrivateKernelResetArtifactName,
|
|
17
17
|
updateResetCircuitSampleInputs,
|
|
18
18
|
} from '@aztec/noir-protocol-circuits-types/client';
|
|
19
|
-
import
|
|
19
|
+
import {
|
|
20
|
+
type ArtifactProvider,
|
|
21
|
+
type ClientProtocolArtifact,
|
|
22
|
+
mapProtocolArtifactNameToCircuitName,
|
|
23
|
+
} from '@aztec/noir-protocol-circuits-types/types';
|
|
20
24
|
import type { Abi, WitnessMap } from '@aztec/noir-types';
|
|
21
25
|
import type { CircuitSimulator } from '@aztec/simulator/client';
|
|
22
26
|
import type { PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
|
|
@@ -36,8 +40,6 @@ import type { NoirCompiledCircuitWithName } from '@aztec/stdlib/noir';
|
|
|
36
40
|
import type { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
37
41
|
import type { CircuitSimulationStats, CircuitWitnessGenerationStats } from '@aztec/stdlib/stats';
|
|
38
42
|
|
|
39
|
-
import { mapProtocolArtifactNameToCircuitName } from '../../stats.js';
|
|
40
|
-
|
|
41
43
|
export abstract class BBPrivateKernelProver implements PrivateKernelProver {
|
|
42
44
|
constructor(
|
|
43
45
|
protected artifactProvider: ArtifactProvider,
|