@aztec/bb-prover 0.60.0 → 0.62.0
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/cli.d.ts.map +1 -1
- package/dest/bb/cli.js +3 -2
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +1 -8
- package/dest/prover/bb_private_kernel_prover.d.ts.map +1 -1
- package/dest/prover/bb_private_kernel_prover.js +2 -2
- package/dest/prover/bb_prover.d.ts +8 -33
- package/dest/prover/bb_prover.d.ts.map +1 -1
- package/dest/prover/bb_prover.js +35 -109
- package/dest/stats.d.ts.map +1 -1
- package/dest/stats.js +5 -9
- package/dest/test/test_circuit_prover.d.ts +5 -11
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +39 -141
- package/package.json +11 -8
- package/src/bb/cli.ts +1 -0
- package/src/bb/execute.ts +1 -7
- package/src/prover/bb_private_kernel_prover.ts +1 -0
- package/src/prover/bb_prover.ts +62 -176
- package/src/stats.ts +4 -8
- package/src/test/test_circuit_prover.ts +128 -327
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
2
|
import { makeProofAndVerificationKey, makePublicInputsAndRecursiveProof, } from '@aztec/circuit-types';
|
|
3
|
-
import { AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, EmptyNestedData, NESTED_RECURSIVE_PROOF_LENGTH, PrivateKernelEmptyInputs, RECURSIVE_PROOF_LENGTH, RootParityInput, TUBE_PROOF_LENGTH, VerificationKeyData,
|
|
3
|
+
import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, EmptyNestedData, NESTED_RECURSIVE_PROOF_LENGTH, PrivateKernelEmptyInputs, RECURSIVE_PROOF_LENGTH, RootParityInput, TUBE_PROOF_LENGTH, VerificationKeyData, makeEmptyRecursiveProof, makeRecursiveProof, } from '@aztec/circuits.js';
|
|
4
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
5
5
|
import { sleep } from '@aztec/foundation/sleep';
|
|
6
6
|
import { Timer } from '@aztec/foundation/timer';
|
|
7
|
-
import { ProtocolCircuitVkIndexes, ProtocolCircuitVks, SimulatedServerCircuitArtifacts, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap, convertBlockRootRollupInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap, convertPrivateKernelEmptyInputsToWitnessMap, convertPrivateKernelEmptyOutputsFromWitnessMap, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap,
|
|
7
|
+
import { ProtocolCircuitVkIndexes, ProtocolCircuitVks, SimulatedServerCircuitArtifacts, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap, convertBlockRootRollupInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap, convertPrivateKernelEmptyInputsToWitnessMap, convertPrivateKernelEmptyOutputsFromWitnessMap, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertSimulatedPrivateBaseRollupInputsToWitnessMap, convertSimulatedPrivateBaseRollupOutputsFromWitnessMap, convertSimulatedPrivateKernelEmptyOutputsFromWitnessMap, convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap, getVKSiblingPath, } from '@aztec/noir-protocol-circuits-types';
|
|
8
8
|
import { WASMSimulator, emitCircuitSimulationStats } from '@aztec/simulator';
|
|
9
9
|
import { trackSpan } from '@aztec/telemetry-client';
|
|
10
10
|
import { ProverInstrumentation } from '../instrumentation.js';
|
|
@@ -18,15 +18,13 @@ let TestCircuitProver = (() => {
|
|
|
18
18
|
let _instanceExtraInitializers = [];
|
|
19
19
|
let _getBaseParityProof_decorators;
|
|
20
20
|
let _getRootParityProof_decorators;
|
|
21
|
-
let
|
|
21
|
+
let _getPrivateBaseRollupProof_decorators;
|
|
22
|
+
let _getPublicBaseRollupProof_decorators;
|
|
22
23
|
let _getMergeRollupProof_decorators;
|
|
23
24
|
let _getBlockRootRollupProof_decorators;
|
|
24
25
|
let _getEmptyBlockRootRollupProof_decorators;
|
|
25
26
|
let _getBlockMergeRollupProof_decorators;
|
|
26
27
|
let _getRootRollupProof_decorators;
|
|
27
|
-
let _getPublicKernelInnerProof_decorators;
|
|
28
|
-
let _getPublicKernelMergeProof_decorators;
|
|
29
|
-
let _getPublicTailProof_decorators;
|
|
30
28
|
return _a = class TestCircuitProver {
|
|
31
29
|
constructor(telemetry, simulationProvider, opts = { proverTestDelayMs: 0 }) {
|
|
32
30
|
this.simulationProvider = (__runInitializers(this, _instanceExtraInitializers), simulationProvider);
|
|
@@ -41,20 +39,12 @@ let TestCircuitProver = (() => {
|
|
|
41
39
|
async getEmptyPrivateKernelProof(inputs) {
|
|
42
40
|
const emptyNested = new EmptyNestedData(makeRecursiveProof(RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['EmptyNestedArtifact'].keyAsFields);
|
|
43
41
|
const kernelInputs = new PrivateKernelEmptyInputs(emptyNested, inputs.header, inputs.chainId, inputs.version, inputs.vkTreeRoot, inputs.protocolContractTreeRoot);
|
|
44
|
-
|
|
45
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.PrivateKernelEmptyArtifact);
|
|
46
|
-
const result = convertSimulatedPrivateKernelEmptyOutputsFromWitnessMap(witness);
|
|
47
|
-
await this.delay();
|
|
48
|
-
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['PrivateKernelEmptyArtifact']);
|
|
42
|
+
return await this.simulate(kernelInputs, 'PrivateKernelEmptyArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertPrivateKernelEmptyInputsToWitnessMap, convertSimulatedPrivateKernelEmptyOutputsFromWitnessMap);
|
|
49
43
|
}
|
|
50
44
|
async getEmptyTubeProof(inputs) {
|
|
51
45
|
const emptyNested = new EmptyNestedData(makeRecursiveProof(RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['EmptyNestedArtifact'].keyAsFields);
|
|
52
46
|
const kernelInputs = new PrivateKernelEmptyInputs(emptyNested, inputs.header, inputs.chainId, inputs.version, inputs.vkTreeRoot, inputs.protocolContractTreeRoot);
|
|
53
|
-
|
|
54
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.PrivateKernelEmptyArtifact);
|
|
55
|
-
const result = convertPrivateKernelEmptyOutputsFromWitnessMap(witness);
|
|
56
|
-
await this.delay();
|
|
57
|
-
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk());
|
|
47
|
+
return await this.simulate(kernelInputs, 'EmptyNestedArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertPrivateKernelEmptyInputsToWitnessMap, convertPrivateKernelEmptyOutputsFromWitnessMap);
|
|
58
48
|
}
|
|
59
49
|
/**
|
|
60
50
|
* Simulates the base parity circuit from its inputs.
|
|
@@ -62,16 +52,8 @@ let TestCircuitProver = (() => {
|
|
|
62
52
|
* @returns The public inputs of the parity circuit.
|
|
63
53
|
*/
|
|
64
54
|
async getBaseParityProof(inputs) {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
// use WASM here as it is faster for small circuits
|
|
68
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.BaseParityArtifact);
|
|
69
|
-
const result = convertBaseParityOutputsFromWitnessMap(witness);
|
|
70
|
-
const rootParityInput = new RootParityInput(makeRecursiveProof(RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['BaseParityArtifact'].keyAsFields, getVKSiblingPath(ProtocolCircuitVkIndexes['BaseParityArtifact']), result);
|
|
71
|
-
this.instrumentation.recordDuration('simulationDuration', 'base-parity', timer);
|
|
72
|
-
emitCircuitSimulationStats('base-parity', timer.ms(), inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
73
|
-
await this.delay();
|
|
74
|
-
return Promise.resolve(rootParityInput);
|
|
55
|
+
const result = await this.simulate(inputs, 'BaseParityArtifact', RECURSIVE_PROOF_LENGTH, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap);
|
|
56
|
+
return new RootParityInput(result.proof, result.verificationKey.keyAsFields, getVKSiblingPath(ProtocolCircuitVkIndexes['BaseParityArtifact']), result.inputs);
|
|
75
57
|
}
|
|
76
58
|
/**
|
|
77
59
|
* Simulates the root parity circuit from its inputs.
|
|
@@ -79,52 +61,26 @@ let TestCircuitProver = (() => {
|
|
|
79
61
|
* @returns The public inputs of the parity circuit.
|
|
80
62
|
*/
|
|
81
63
|
async getRootParityProof(inputs) {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
// use WASM here as it is faster for small circuits
|
|
85
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.RootParityArtifact);
|
|
86
|
-
const result = convertRootParityOutputsFromWitnessMap(witness);
|
|
87
|
-
const rootParityInput = new RootParityInput(makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['RootParityArtifact'].keyAsFields, getVKSiblingPath(ProtocolCircuitVkIndexes['RootParityArtifact']), result);
|
|
88
|
-
this.instrumentation.recordDuration('simulationDuration', 'root-parity', timer);
|
|
89
|
-
emitCircuitSimulationStats('root-parity', timer.ms(), inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
90
|
-
await this.delay();
|
|
91
|
-
return Promise.resolve(rootParityInput);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Simulates the base rollup circuit from its inputs.
|
|
95
|
-
* @param input - Inputs to the circuit.
|
|
96
|
-
* @returns The public inputs as outputs of the simulation.
|
|
97
|
-
*/
|
|
98
|
-
async getBaseRollupProof(input) {
|
|
99
|
-
const timer = new Timer();
|
|
100
|
-
const witnessMap = convertSimulatedBaseRollupInputsToWitnessMap(input);
|
|
101
|
-
const simulationProvider = this.simulationProvider ?? this.wasmSimulator;
|
|
102
|
-
const witness = await simulationProvider.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.BaseRollupArtifact);
|
|
103
|
-
const result = convertSimulatedBaseRollupOutputsFromWitnessMap(witness);
|
|
104
|
-
this.instrumentation.recordDuration('simulationDuration', 'base-rollup', timer);
|
|
105
|
-
emitCircuitSimulationStats('base-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
106
|
-
await this.delay();
|
|
107
|
-
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['BaseRollupArtifact']);
|
|
64
|
+
const result = await this.simulate(inputs, 'RootParityArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap);
|
|
65
|
+
return new RootParityInput(result.proof, result.verificationKey.keyAsFields, getVKSiblingPath(ProtocolCircuitVkIndexes['RootParityArtifact']), result.inputs);
|
|
108
66
|
}
|
|
109
67
|
async getTubeProof(_tubeInput) {
|
|
110
68
|
await this.delay();
|
|
111
69
|
return makeProofAndVerificationKey(makeEmptyRecursiveProof(TUBE_PROOF_LENGTH), VerificationKeyData.makeFakeHonk());
|
|
112
70
|
}
|
|
71
|
+
async getPrivateBaseRollupProof(inputs) {
|
|
72
|
+
return await this.simulate(inputs, 'PrivateBaseRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertSimulatedPrivateBaseRollupInputsToWitnessMap, convertSimulatedPrivateBaseRollupOutputsFromWitnessMap);
|
|
73
|
+
}
|
|
74
|
+
async getPublicBaseRollupProof(inputs) {
|
|
75
|
+
return await this.simulate(inputs, 'PublicBaseRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertSimulatedPublicBaseRollupInputsToWitnessMap, convertSimulatedPublicBaseRollupOutputsFromWitnessMap);
|
|
76
|
+
}
|
|
113
77
|
/**
|
|
114
78
|
* Simulates the merge rollup circuit from its inputs.
|
|
115
79
|
* @param input - Inputs to the circuit.
|
|
116
80
|
* @returns The public inputs as outputs of the simulation.
|
|
117
81
|
*/
|
|
118
82
|
async getMergeRollupProof(input) {
|
|
119
|
-
|
|
120
|
-
const witnessMap = convertMergeRollupInputsToWitnessMap(input);
|
|
121
|
-
// use WASM here as it is faster for small circuits
|
|
122
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.MergeRollupArtifact);
|
|
123
|
-
const result = convertMergeRollupOutputsFromWitnessMap(witness);
|
|
124
|
-
this.instrumentation.recordDuration('simulationDuration', 'merge-rollup', timer);
|
|
125
|
-
emitCircuitSimulationStats('merge-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
126
|
-
await this.delay();
|
|
127
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['MergeRollupArtifact']);
|
|
83
|
+
return await this.simulate(input, 'MergeRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap);
|
|
128
84
|
}
|
|
129
85
|
/**
|
|
130
86
|
* Simulates the block root rollup circuit from its inputs.
|
|
@@ -132,14 +88,7 @@ let TestCircuitProver = (() => {
|
|
|
132
88
|
* @returns The public inputs as outputs of the simulation.
|
|
133
89
|
*/
|
|
134
90
|
async getBlockRootRollupProof(input) {
|
|
135
|
-
|
|
136
|
-
const witnessMap = convertBlockRootRollupInputsToWitnessMap(input);
|
|
137
|
-
// use WASM here as it is faster for small circuits
|
|
138
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.BlockRootRollupArtifact);
|
|
139
|
-
const result = convertBlockRootRollupOutputsFromWitnessMap(witness);
|
|
140
|
-
this.instrumentation.recordDuration('simulationDuration', 'block-root-rollup', timer);
|
|
141
|
-
emitCircuitSimulationStats('block-root-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
142
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['BlockRootRollupArtifact']);
|
|
91
|
+
return await this.simulate(input, 'BlockRootRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertBlockRootRollupInputsToWitnessMap, convertBlockRootRollupOutputsFromWitnessMap);
|
|
143
92
|
}
|
|
144
93
|
/**
|
|
145
94
|
* Simulates the empty block root rollup circuit from its inputs.
|
|
@@ -147,14 +96,7 @@ let TestCircuitProver = (() => {
|
|
|
147
96
|
* @returns The public inputs as outputs of the simulation.
|
|
148
97
|
*/
|
|
149
98
|
async getEmptyBlockRootRollupProof(input) {
|
|
150
|
-
|
|
151
|
-
const witnessMap = convertEmptyBlockRootRollupInputsToWitnessMap(input);
|
|
152
|
-
// use WASM here as it is faster for small circuits
|
|
153
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.EmptyBlockRootRollupArtifact);
|
|
154
|
-
const result = convertEmptyBlockRootRollupOutputsFromWitnessMap(witness);
|
|
155
|
-
this.instrumentation.recordDuration('simulationDuration', 'empty-block-root-rollup', timer);
|
|
156
|
-
emitCircuitSimulationStats('empty-block-root-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
157
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['EmptyBlockRootRollupArtifact']);
|
|
99
|
+
return await this.simulate(input, 'EmptyBlockRootRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertEmptyBlockRootRollupInputsToWitnessMap, convertEmptyBlockRootRollupOutputsFromWitnessMap);
|
|
158
100
|
}
|
|
159
101
|
/**
|
|
160
102
|
* Simulates the block merge rollup circuit from its inputs.
|
|
@@ -162,14 +104,7 @@ let TestCircuitProver = (() => {
|
|
|
162
104
|
* @returns The public inputs as outputs of the simulation.
|
|
163
105
|
*/
|
|
164
106
|
async getBlockMergeRollupProof(input) {
|
|
165
|
-
|
|
166
|
-
const witnessMap = convertBlockMergeRollupInputsToWitnessMap(input);
|
|
167
|
-
// use WASM here as it is faster for small circuits
|
|
168
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.BlockMergeRollupArtifact);
|
|
169
|
-
const result = convertBlockMergeRollupOutputsFromWitnessMap(witness);
|
|
170
|
-
this.instrumentation.recordDuration('simulationDuration', 'block-merge-rollup', timer);
|
|
171
|
-
emitCircuitSimulationStats('block-merge-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
172
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['BlockMergeRollupArtifact']);
|
|
107
|
+
return await this.simulate(input, 'BlockMergeRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertBlockMergeRollupInputsToWitnessMap, convertBlockMergeRollupOutputsFromWitnessMap);
|
|
173
108
|
}
|
|
174
109
|
/**
|
|
175
110
|
* Simulates the root rollup circuit from its inputs.
|
|
@@ -177,59 +112,14 @@ let TestCircuitProver = (() => {
|
|
|
177
112
|
* @returns The public inputs as outputs of the simulation.
|
|
178
113
|
*/
|
|
179
114
|
async getRootRollupProof(input) {
|
|
180
|
-
|
|
181
|
-
const witnessMap = convertRootRollupInputsToWitnessMap(input);
|
|
182
|
-
// use WASM here as it is faster for small circuits
|
|
183
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts.RootRollupArtifact);
|
|
184
|
-
const result = convertRootRollupOutputsFromWitnessMap(witness);
|
|
185
|
-
this.instrumentation.recordDuration('simulationDuration', 'root-rollup', timer);
|
|
186
|
-
emitCircuitSimulationStats('root-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
187
|
-
await this.delay();
|
|
188
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks['RootRollupArtifact']);
|
|
189
|
-
}
|
|
190
|
-
async getPublicKernelInnerProof(inputs) {
|
|
191
|
-
const timer = new Timer();
|
|
192
|
-
const artifact = 'PublicKernelInnerArtifact';
|
|
193
|
-
const circuitName = mapProtocolArtifactNameToCircuitName(artifact);
|
|
194
|
-
const witnessMap = convertSimulatedPublicInnerInputsToWitnessMap(inputs);
|
|
195
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifact]);
|
|
196
|
-
const result = convertSimulatedPublicInnerOutputFromWitnessMap(witness);
|
|
197
|
-
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
198
|
-
emitCircuitSimulationStats(circuitName, timer.ms(), inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
199
|
-
await this.delay();
|
|
200
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks[artifact]);
|
|
201
|
-
}
|
|
202
|
-
async getPublicKernelMergeProof(inputs) {
|
|
203
|
-
const timer = new Timer();
|
|
204
|
-
const artifact = 'PublicKernelMergeArtifact';
|
|
205
|
-
const circuitName = mapProtocolArtifactNameToCircuitName(artifact);
|
|
206
|
-
const witnessMap = convertSimulatedPublicMergeInputsToWitnessMap(inputs);
|
|
207
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifact]);
|
|
208
|
-
const result = convertSimulatedPublicMergeOutputFromWitnessMap(witness);
|
|
209
|
-
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
210
|
-
emitCircuitSimulationStats(circuitName, timer.ms(), inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
211
|
-
await this.delay();
|
|
212
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks[artifact]);
|
|
213
|
-
}
|
|
214
|
-
async getPublicTailProof(inputs) {
|
|
215
|
-
const timer = new Timer();
|
|
216
|
-
const artifact = 'PublicKernelTailArtifact';
|
|
217
|
-
const circuitName = mapProtocolArtifactNameToCircuitName(artifact);
|
|
218
|
-
const witnessMap = convertSimulatedPublicTailInputsToWitnessMap(inputs);
|
|
219
|
-
// use WASM here as it is faster for small circuits
|
|
220
|
-
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifact]);
|
|
221
|
-
const result = convertSimulatedPublicTailOutputFromWitnessMap(witness);
|
|
222
|
-
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
223
|
-
emitCircuitSimulationStats(circuitName, timer.ms(), inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
224
|
-
await this.delay();
|
|
225
|
-
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), ProtocolCircuitVks[artifact]);
|
|
115
|
+
return await this.simulate(input, 'RootRollupArtifact', NESTED_RECURSIVE_PROOF_LENGTH, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap);
|
|
226
116
|
}
|
|
227
117
|
async getAvmProof(_inputs) {
|
|
228
118
|
// We can't simulate the AVM because we don't have enough context to do so (e.g., DBs).
|
|
229
119
|
// We just return an empty proof and VK data.
|
|
230
120
|
this.logger.debug('Skipping AVM simulation in TestCircuitProver.');
|
|
231
121
|
await this.delay();
|
|
232
|
-
return makeProofAndVerificationKey(
|
|
122
|
+
return makeProofAndVerificationKey(makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS), VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS));
|
|
233
123
|
}
|
|
234
124
|
async delay() {
|
|
235
125
|
if (this.opts.proverTestDelayMs > 0) {
|
|
@@ -240,34 +130,42 @@ let TestCircuitProver = (() => {
|
|
|
240
130
|
verifyProof(_1, _2) {
|
|
241
131
|
return Promise.reject(new Error('Method not implemented.'));
|
|
242
132
|
}
|
|
133
|
+
async simulate(input, artifactName, proofLength, convertInput, convertOutput) {
|
|
134
|
+
const timer = new Timer();
|
|
135
|
+
const witnessMap = convertInput(input);
|
|
136
|
+
const circuitName = mapProtocolArtifactNameToCircuitName(artifactName);
|
|
137
|
+
const simulationProvider = this.simulationProvider ?? this.wasmSimulator;
|
|
138
|
+
const witness = await simulationProvider.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[artifactName]);
|
|
139
|
+
const result = convertOutput(witness);
|
|
140
|
+
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
141
|
+
emitCircuitSimulationStats(circuitName, timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
142
|
+
await this.delay();
|
|
143
|
+
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(proofLength), ProtocolCircuitVks[artifactName]);
|
|
144
|
+
}
|
|
243
145
|
},
|
|
244
146
|
(() => {
|
|
245
147
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
246
148
|
_getBaseParityProof_decorators = [trackSpan('TestCircuitProver.getBaseParityProof')];
|
|
247
149
|
_getRootParityProof_decorators = [trackSpan('TestCircuitProver.getRootParityProof')];
|
|
248
|
-
|
|
150
|
+
_getPrivateBaseRollupProof_decorators = [trackSpan('TestCircuitProver.getPrivateBaseRollupProof')];
|
|
151
|
+
_getPublicBaseRollupProof_decorators = [trackSpan('TestCircuitProver.getPublicBaseRollupProof')];
|
|
249
152
|
_getMergeRollupProof_decorators = [trackSpan('TestCircuitProver.getMergeRollupProof')];
|
|
250
153
|
_getBlockRootRollupProof_decorators = [trackSpan('TestCircuitProver.getBlockRootRollupProof')];
|
|
251
154
|
_getEmptyBlockRootRollupProof_decorators = [trackSpan('TestCircuitProver.getEmptyBlockRootRollupProof')];
|
|
252
155
|
_getBlockMergeRollupProof_decorators = [trackSpan('TestCircuitProver.getBlockMergeRollupProof')];
|
|
253
156
|
_getRootRollupProof_decorators = [trackSpan('TestCircuitProver.getRootRollupProof')];
|
|
254
|
-
_getPublicKernelInnerProof_decorators = [trackSpan('TestCircuitProver.getPublicKernelInnerProof')];
|
|
255
|
-
_getPublicKernelMergeProof_decorators = [trackSpan('TestCircuitProver.getPublicKernelMergeProof')];
|
|
256
|
-
_getPublicTailProof_decorators = [trackSpan('TestCircuitProver.getPublicTailProof')];
|
|
257
157
|
__esDecorate(_a, null, _getBaseParityProof_decorators, { kind: "method", name: "getBaseParityProof", static: false, private: false, access: { has: obj => "getBaseParityProof" in obj, get: obj => obj.getBaseParityProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
258
158
|
__esDecorate(_a, null, _getRootParityProof_decorators, { kind: "method", name: "getRootParityProof", static: false, private: false, access: { has: obj => "getRootParityProof" in obj, get: obj => obj.getRootParityProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
259
|
-
__esDecorate(_a, null,
|
|
159
|
+
__esDecorate(_a, null, _getPrivateBaseRollupProof_decorators, { kind: "method", name: "getPrivateBaseRollupProof", static: false, private: false, access: { has: obj => "getPrivateBaseRollupProof" in obj, get: obj => obj.getPrivateBaseRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
160
|
+
__esDecorate(_a, null, _getPublicBaseRollupProof_decorators, { kind: "method", name: "getPublicBaseRollupProof", static: false, private: false, access: { has: obj => "getPublicBaseRollupProof" in obj, get: obj => obj.getPublicBaseRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
260
161
|
__esDecorate(_a, null, _getMergeRollupProof_decorators, { kind: "method", name: "getMergeRollupProof", static: false, private: false, access: { has: obj => "getMergeRollupProof" in obj, get: obj => obj.getMergeRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
261
162
|
__esDecorate(_a, null, _getBlockRootRollupProof_decorators, { kind: "method", name: "getBlockRootRollupProof", static: false, private: false, access: { has: obj => "getBlockRootRollupProof" in obj, get: obj => obj.getBlockRootRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
262
163
|
__esDecorate(_a, null, _getEmptyBlockRootRollupProof_decorators, { kind: "method", name: "getEmptyBlockRootRollupProof", static: false, private: false, access: { has: obj => "getEmptyBlockRootRollupProof" in obj, get: obj => obj.getEmptyBlockRootRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
263
164
|
__esDecorate(_a, null, _getBlockMergeRollupProof_decorators, { kind: "method", name: "getBlockMergeRollupProof", static: false, private: false, access: { has: obj => "getBlockMergeRollupProof" in obj, get: obj => obj.getBlockMergeRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
264
165
|
__esDecorate(_a, null, _getRootRollupProof_decorators, { kind: "method", name: "getRootRollupProof", static: false, private: false, access: { has: obj => "getRootRollupProof" in obj, get: obj => obj.getRootRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
265
|
-
__esDecorate(_a, null, _getPublicKernelInnerProof_decorators, { kind: "method", name: "getPublicKernelInnerProof", static: false, private: false, access: { has: obj => "getPublicKernelInnerProof" in obj, get: obj => obj.getPublicKernelInnerProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
266
|
-
__esDecorate(_a, null, _getPublicKernelMergeProof_decorators, { kind: "method", name: "getPublicKernelMergeProof", static: false, private: false, access: { has: obj => "getPublicKernelMergeProof" in obj, get: obj => obj.getPublicKernelMergeProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
267
|
-
__esDecorate(_a, null, _getPublicTailProof_decorators, { kind: "method", name: "getPublicTailProof", static: false, private: false, access: { has: obj => "getPublicTailProof" in obj, get: obj => obj.getPublicTailProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
268
166
|
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
269
167
|
})(),
|
|
270
168
|
_a;
|
|
271
169
|
})();
|
|
272
170
|
export { TestCircuitProver };
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3Rlc3RfY2lyY3VpdF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCwyQkFBMkIsRUFDM0IsaUNBQWlDLEdBQ2xDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLHFDQUFxQyxFQVNyQyxlQUFlLEVBR2YsNkJBQTZCLEVBRTdCLHdCQUF3QixFQU14QixzQkFBc0IsRUFFdEIsZUFBZSxFQUlmLGlCQUFpQixFQUdqQixtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLHVCQUF1QixFQUN2QixrQkFBa0IsR0FDbkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsa0JBQWtCLEVBRWxCLCtCQUErQixFQUMvQixtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHlDQUF5QyxFQUN6Qyw0Q0FBNEMsRUFDNUMsd0NBQXdDLEVBQ3hDLDJDQUEyQyxFQUMzQyw2Q0FBNkMsRUFDN0MsZ0RBQWdELEVBQ2hELG9DQUFvQyxFQUNwQyx1Q0FBdUMsRUFDdkMsMkNBQTJDLEVBQzNDLDhDQUE4QyxFQUM5QyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsNENBQTRDLEVBQzVDLCtDQUErQyxFQUMvQyx1REFBdUQsRUFDdkQsNkNBQTZDLEVBQzdDLCtDQUErQyxFQUMvQyw2Q0FBNkMsRUFDN0MsK0NBQStDLEVBQy9DLDRDQUE0QyxFQUM1Qyw4Q0FBOEMsRUFDOUMsZ0JBQWdCLEdBQ2pCLE1BQU0scUNBQXFDLENB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
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3Rlc3RfY2lyY3VpdF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFJTCwyQkFBMkIsRUFDM0IsaUNBQWlDLEdBQ2xDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixxQ0FBcUMsRUFRckMsZUFBZSxFQUdmLDZCQUE2QixFQUc3Qix3QkFBd0IsRUFHeEIsc0JBQXNCLEVBRXRCLGVBQWUsRUFJZixpQkFBaUIsRUFFakIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixrQkFBa0IsR0FDbkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsa0JBQWtCLEVBRWxCLCtCQUErQixFQUMvQixtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHlDQUF5QyxFQUN6Qyw0Q0FBNEMsRUFDNUMsd0NBQXdDLEVBQ3hDLDJDQUEyQyxFQUMzQyw2Q0FBNkMsRUFDN0MsZ0RBQWdELEVBQ2hELG9DQUFvQyxFQUNwQyx1Q0FBdUMsRUFDdkMsMkNBQTJDLEVBQzNDLDhDQUE4QyxFQUM5QyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsbURBQW1ELEVBQ25ELHNEQUFzRCxFQUN0RCx1REFBdUQsRUFDdkQsa0RBQWtELEVBQ2xELHFEQUFxRCxFQUNyRCxnQkFBZ0IsR0FDakIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQTJCLGFBQWEsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtC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
|
package/package.json
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb-prover",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.62.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
|
-
".": "./dest/index.js"
|
|
6
|
+
".": "./dest/index.js",
|
|
7
|
+
"./prover": "./dest/prover/index.js",
|
|
8
|
+
"./verifier": "./dest/verifier/index.js",
|
|
9
|
+
"./test": "./dest/test/index.js"
|
|
7
10
|
},
|
|
8
11
|
"bin": {
|
|
9
12
|
"bb-cli": "./dest/bb/index.js"
|
|
@@ -62,12 +65,12 @@
|
|
|
62
65
|
]
|
|
63
66
|
},
|
|
64
67
|
"dependencies": {
|
|
65
|
-
"@aztec/circuit-types": "0.
|
|
66
|
-
"@aztec/circuits.js": "0.
|
|
67
|
-
"@aztec/foundation": "0.
|
|
68
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
69
|
-
"@aztec/simulator": "0.
|
|
70
|
-
"@aztec/telemetry-client": "0.
|
|
68
|
+
"@aztec/circuit-types": "0.62.0",
|
|
69
|
+
"@aztec/circuits.js": "0.62.0",
|
|
70
|
+
"@aztec/foundation": "0.62.0",
|
|
71
|
+
"@aztec/noir-protocol-circuits-types": "0.62.0",
|
|
72
|
+
"@aztec/simulator": "0.62.0",
|
|
73
|
+
"@aztec/telemetry-client": "0.62.0",
|
|
71
74
|
"@msgpack/msgpack": "^3.0.0-beta2",
|
|
72
75
|
"@noir-lang/noirc_abi": "portal:../../noir/packages/noirc_abi",
|
|
73
76
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
package/src/bb/cli.ts
CHANGED
package/src/bb/execute.ts
CHANGED
|
@@ -151,6 +151,7 @@ export async function generateKeyForNoirCircuit(
|
|
|
151
151
|
const args = ['-o', `${outputPath}/${VK_FILENAME}`, '-b', bytecodePath];
|
|
152
152
|
const timer = new Timer();
|
|
153
153
|
let result = await executeBB(pathToBB, `write_vk_${flavor}`, args, log);
|
|
154
|
+
|
|
154
155
|
// If we succeeded and the type of key if verification, have bb write the 'fields' version too
|
|
155
156
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
156
157
|
const asFieldsArgs = ['-k', `${outputPath}/${VK_FILENAME}`, '-o', `${outputPath}/${VK_FIELDS_FILENAME}`, '-v'];
|
|
@@ -504,7 +505,6 @@ export async function generateAvmProof(
|
|
|
504
505
|
}
|
|
505
506
|
|
|
506
507
|
// Paths for the inputs
|
|
507
|
-
const bytecodePath = join(workingDirectory, AVM_BYTECODE_FILENAME);
|
|
508
508
|
const calldataPath = join(workingDirectory, AVM_CALLDATA_FILENAME);
|
|
509
509
|
const publicInputsPath = join(workingDirectory, AVM_PUBLIC_INPUTS_FILENAME);
|
|
510
510
|
const avmHintsPath = join(workingDirectory, AVM_HINTS_FILENAME);
|
|
@@ -525,10 +525,6 @@ export async function generateAvmProof(
|
|
|
525
525
|
|
|
526
526
|
try {
|
|
527
527
|
// Write the inputs to the working directory.
|
|
528
|
-
await fs.writeFile(bytecodePath, input.bytecode);
|
|
529
|
-
if (!filePresent(bytecodePath)) {
|
|
530
|
-
return { status: BB_RESULT.FAILURE, reason: `Could not write bytecode at ${bytecodePath}` };
|
|
531
|
-
}
|
|
532
528
|
await fs.writeFile(
|
|
533
529
|
calldataPath,
|
|
534
530
|
input.calldata.map(fr => fr.toBuffer()),
|
|
@@ -553,8 +549,6 @@ export async function generateAvmProof(
|
|
|
553
549
|
}
|
|
554
550
|
|
|
555
551
|
const args = [
|
|
556
|
-
'--avm-bytecode',
|
|
557
|
-
bytecodePath,
|
|
558
552
|
'--avm-calldata',
|
|
559
553
|
calldataPath,
|
|
560
554
|
'--avm-public-inputs',
|