@aztec/bb-prover 0.43.0 → 0.44.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/execute.d.ts +1 -1
- package/dest/bb/execute.d.ts.map +1 -1
- package/dest/bb/execute.js +10 -10
- package/dest/instrumentation.d.ts +47 -0
- package/dest/instrumentation.d.ts.map +1 -0
- package/dest/instrumentation.js +102 -0
- package/dest/prover/bb_native_proof_creator.d.ts.map +1 -1
- package/dest/prover/bb_native_proof_creator.js +10 -8
- package/dest/prover/bb_prover.d.ts +5 -2
- package/dest/prover/bb_prover.d.ts.map +1 -1
- package/dest/prover/bb_prover.js +442 -390
- package/dest/stats.d.ts +1 -2
- package/dest/stats.d.ts.map +1 -1
- package/dest/stats.js +2 -16
- package/dest/test/test_circuit_prover.d.ts +4 -1
- package/dest/test/test_circuit_prover.d.ts.map +1 -1
- package/dest/test/test_circuit_prover.js +165 -119
- package/package.json +16 -7
- package/src/bb/execute.ts +10 -10
- package/src/instrumentation.ts +149 -0
- package/src/prover/bb_native_proof_creator.ts +9 -9
- package/src/prover/bb_prover.ts +72 -34
- package/src/stats.ts +1 -15
- package/src/test/test_circuit_prover.ts +28 -2
package/dest/stats.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { type PublicKernelRequest } from '@aztec/circuit-types';
|
|
2
1
|
import type { CircuitName } from '@aztec/circuit-types/stats';
|
|
3
2
|
import { type ClientProtocolArtifact, type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types';
|
|
4
|
-
export
|
|
3
|
+
export { mapPublicKernelToCircuitName } from '@aztec/circuit-types';
|
|
5
4
|
export declare function mapProtocolArtifactNameToCircuitName(artifact: ServerProtocolArtifact | ClientProtocolArtifact): CircuitName;
|
|
6
5
|
//# sourceMappingURL=stats.d.ts.map
|
package/dest/stats.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../src/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE/G,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,sBAAsB,GAAG,sBAAsB,GACxD,WAAW,CA6Cb"}
|
package/dest/stats.js
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export function mapPublicKernelToCircuitName(kernelType) {
|
|
3
|
-
switch (kernelType) {
|
|
4
|
-
case PublicKernelType.SETUP:
|
|
5
|
-
return 'public-kernel-setup';
|
|
6
|
-
case PublicKernelType.APP_LOGIC:
|
|
7
|
-
return 'public-kernel-app-logic';
|
|
8
|
-
case PublicKernelType.TEARDOWN:
|
|
9
|
-
return 'public-kernel-teardown';
|
|
10
|
-
case PublicKernelType.TAIL:
|
|
11
|
-
return 'public-kernel-tail';
|
|
12
|
-
default:
|
|
13
|
-
throw new Error(`Unknown kernel type: ${kernelType}`);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
1
|
+
export { mapPublicKernelToCircuitName } from '@aztec/circuit-types';
|
|
16
2
|
export function mapProtocolArtifactNameToCircuitName(artifact) {
|
|
17
3
|
switch (artifact) {
|
|
18
4
|
case 'BaseParityArtifact':
|
|
@@ -59,4 +45,4 @@ export function mapProtocolArtifactNameToCircuitName(artifact) {
|
|
|
59
45
|
}
|
|
60
46
|
}
|
|
61
47
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFcEUsTUFBTSxVQUFVLG9DQUFvQyxDQUNsRCxRQUF5RDtJQUV6RCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssb0JBQW9CO1lBQ3ZCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssb0JBQW9CO1lBQ3ZCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssb0JBQW9CO1lBQ3ZCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUsscUJBQXFCO1lBQ3hCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssb0JBQW9CO1lBQ3ZCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssMkJBQTJCO1lBQzlCLE9BQU8scUJBQXFCLENBQUM7UUFDL0IsS0FBSyw4QkFBOEI7WUFDakMsT0FBTyx5QkFBeUIsQ0FBQztRQUNuQyxLQUFLLDhCQUE4QjtZQUNqQyxPQUFPLHdCQUF3QixDQUFDO1FBQ2xDLEtBQUssMEJBQTBCO1lBQzdCLE9BQU8sb0JBQW9CLENBQUM7UUFDOUIsS0FBSywyQkFBMkI7WUFDOUIsT0FBTyxxQkFBcUIsQ0FBQztRQUMvQixLQUFLLDRCQUE0QjtZQUMvQixPQUFPLHNCQUFzQixDQUFDO1FBQ2hDLEtBQUssMkJBQTJCO1lBQzlCLE9BQU8scUJBQXFCLENBQUM7UUFDL0IsS0FBSyxtQ0FBbUM7WUFDdEMsT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxLQUFLLGdDQUFnQztZQUNuQyxPQUFPLDJCQUEyQixDQUFDO1FBQ3JDLEtBQUssK0JBQStCO1lBQ2xDLE9BQU8sMEJBQTBCLENBQUM7UUFDcEMsS0FBSyxrQ0FBa0M7WUFDckMsT0FBTyw2QkFBNkIsQ0FBQztRQUN2QyxLQUFLLGlDQUFpQztZQUNwQyxPQUFPLDRCQUE0QixDQUFDO1FBQ3RDLEtBQUsscUJBQXFCO1lBQ3hCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLEtBQUssNEJBQTRCO1lBQy9CLE9BQU8sc0JBQXNCLENBQUM7UUFDaEMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNSLE1BQU0sSUFBSSxHQUFVLFFBQVEsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -2,6 +2,7 @@ import { type ProofAndVerificationKey, type PublicInputsAndRecursiveProof, type
|
|
|
2
2
|
import { type AvmCircuitInputs, type BaseOrMergeRollupPublicInputs, type BaseParityInputs, type BaseRollupInputs, type KernelCircuitPublicInputs, type MergeRollupInputs, NESTED_RECURSIVE_PROOF_LENGTH, type PrivateKernelEmptyInputData, type Proof, type PublicKernelCircuitPublicInputs, RECURSIVE_PROOF_LENGTH, RootParityInput, type RootParityInputs, type RootRollupInputs, type RootRollupPublicInputs } from '@aztec/circuits.js';
|
|
3
3
|
import { type ServerProtocolArtifact } from '@aztec/noir-protocol-circuits-types';
|
|
4
4
|
import { type SimulationProvider } from '@aztec/simulator';
|
|
5
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
6
|
/**
|
|
6
7
|
* A class for use in testing situations (e2e, unit test etc)
|
|
7
8
|
* Simulates circuits using the most efficient method and performs no proving
|
|
@@ -10,7 +11,9 @@ export declare class TestCircuitProver implements ServerCircuitProver {
|
|
|
10
11
|
private simulationProvider?;
|
|
11
12
|
private logger;
|
|
12
13
|
private wasmSimulator;
|
|
13
|
-
|
|
14
|
+
private instrumentation;
|
|
15
|
+
constructor(telemetry: TelemetryClient, simulationProvider?: SimulationProvider | undefined, logger?: import("@aztec/foundation/log").Logger);
|
|
16
|
+
get tracer(): import("@aztec/telemetry-client").Tracer;
|
|
14
17
|
getEmptyPrivateKernelProof(inputs: PrivateKernelEmptyInputData): Promise<PublicInputsAndRecursiveProof<KernelCircuitPublicInputs>>;
|
|
15
18
|
/**
|
|
16
19
|
* Simulates the base parity circuit from its inputs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAErB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,6BAA6B,EAC7B,KAAK,2BAA2B,EAEhC,KAAK,KAAK,EACV,KAAK,+BAA+B,EACpC,sBAAsB,EACtB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAM5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAML,KAAK,sBAAsB,EAiB5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../src/test/test_circuit_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAErB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,6BAA6B,EAC7B,KAAK,2BAA2B,EAEhC,KAAK,KAAK,EACV,KAAK,+BAA+B,EACpC,sBAAsB,EACtB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAM5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAML,KAAK,sBAAsB,EAiB5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,kBAAkB,CAAC;AACtG,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,yBAAyB,CAAC;AAoB1E;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,mBAAmB;IAMzD,OAAO,CAAC,kBAAkB,CAAC;IAC3B,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAAwB;gBAG7C,SAAS,EAAE,eAAe,EAClB,kBAAkB,CAAC,gCAAoB,EACvC,MAAM,yCAAyC;IAKzD,IAAI,MAAM,6CAET;IAEY,0BAA0B,CACrC,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;IAiBpE;;;;OAIG;IAEU,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,OAAO,sBAAsB,CAAC,CAAC;IA2BlH;;;;OAIG;IAEU,kBAAkB,CAC7B,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,CAAC,OAAO,6BAA6B,CAAC,CAAC;IA2BjE;;;;OAIG;IAEU,kBAAkB,CAC7B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,6BAA6B,CAAC,6BAA6B,CAAC,CAAC;IAuBxE;;;;OAIG;IAEU,mBAAmB,CAC9B,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,6BAA6B,CAAC,6BAA6B,CAAC,CAAC;IAwBxE;;;;OAIG;IAEU,kBAAkB,CAC7B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;IAyBpD,oBAAoB,CAC/B,aAAa,EAAE,0BAA0B,GACxC,OAAO,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,CAAC;IAgC7D,kBAAkB,CAC7B,aAAa,EAAE,uBAAuB,GACrC,OAAO,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC;IA0BpE,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAQjE,WAAW,CAAC,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzE"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
1
2
|
import { makePublicInputsAndRecursiveProof, } from '@aztec/circuit-types';
|
|
2
3
|
import { EmptyNestedData, NESTED_RECURSIVE_PROOF_LENGTH, PrivateKernelEmptyInputs, RECURSIVE_PROOF_LENGTH, RootParityInput, VerificationKeyAsFields, VerificationKeyData, makeEmptyProof, makeEmptyRecursiveProof, makeRecursiveProof, } from '@aztec/circuits.js';
|
|
3
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
6
|
import { BaseParityArtifact, MergeRollupArtifact, PrivateKernelEmptyArtifact, RootParityArtifact, RootRollupArtifact, SimulatedBaseRollupArtifact, SimulatedServerCircuitArtifacts, convertBaseParityInputsToWitnessMap, convertBaseParityOutputsFromWitnessMap, convertMergeRollupInputsToWitnessMap, convertMergeRollupOutputsFromWitnessMap, convertPrivateKernelEmptyInputsToWitnessMap, convertPrivateKernelEmptyOutputsFromWitnessMap, convertRootParityInputsToWitnessMap, convertRootParityOutputsFromWitnessMap, convertRootRollupInputsToWitnessMap, convertRootRollupOutputsFromWitnessMap, convertSimulatedBaseRollupInputsToWitnessMap, convertSimulatedBaseRollupOutputsFromWitnessMap, convertSimulatedPublicTailInputsToWitnessMap, convertSimulatedPublicTailOutputFromWitnessMap, } from '@aztec/noir-protocol-circuits-types';
|
|
6
7
|
import { WASMSimulator, emitCircuitSimulationStats } from '@aztec/simulator';
|
|
8
|
+
import { trackSpan } from '@aztec/telemetry-client';
|
|
9
|
+
import { ProverInstrumentation } from '../instrumentation.js';
|
|
7
10
|
import { SimulatedPublicKernelArtifactMapping } from '../mappings/mappings.js';
|
|
8
11
|
import { mapPublicKernelToCircuitName } from '../stats.js';
|
|
9
12
|
const VERIFICATION_KEYS = {
|
|
@@ -23,122 +26,165 @@ const VERIFICATION_KEYS = {
|
|
|
23
26
|
* A class for use in testing situations (e2e, unit test etc)
|
|
24
27
|
* Simulates circuits using the most efficient method and performs no proving
|
|
25
28
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
29
|
+
let TestCircuitProver = (() => {
|
|
30
|
+
var _a;
|
|
31
|
+
let _instanceExtraInitializers = [];
|
|
32
|
+
let _getBaseParityProof_decorators;
|
|
33
|
+
let _getRootParityProof_decorators;
|
|
34
|
+
let _getBaseRollupProof_decorators;
|
|
35
|
+
let _getMergeRollupProof_decorators;
|
|
36
|
+
let _getRootRollupProof_decorators;
|
|
37
|
+
let _getPublicKernelProof_decorators;
|
|
38
|
+
let _getPublicTailProof_decorators;
|
|
39
|
+
return _a = class TestCircuitProver {
|
|
40
|
+
constructor(telemetry, simulationProvider, logger = createDebugLogger('aztec:test-prover')) {
|
|
41
|
+
this.simulationProvider = (__runInitializers(this, _instanceExtraInitializers), simulationProvider);
|
|
42
|
+
this.logger = logger;
|
|
43
|
+
this.wasmSimulator = new WASMSimulator();
|
|
44
|
+
this.instrumentation = new ProverInstrumentation(telemetry, 'TestCircuitProver');
|
|
45
|
+
}
|
|
46
|
+
get tracer() {
|
|
47
|
+
return this.instrumentation.tracer;
|
|
48
|
+
}
|
|
49
|
+
async getEmptyPrivateKernelProof(inputs) {
|
|
50
|
+
const emptyNested = new EmptyNestedData(makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VERIFICATION_KEYS['EmptyNestedArtifact']);
|
|
51
|
+
const kernelInputs = new PrivateKernelEmptyInputs(emptyNested, inputs.header, inputs.chainId, inputs.version);
|
|
52
|
+
const witnessMap = convertPrivateKernelEmptyInputsToWitnessMap(kernelInputs);
|
|
53
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, PrivateKernelEmptyArtifact);
|
|
54
|
+
const result = convertPrivateKernelEmptyOutputsFromWitnessMap(witness);
|
|
55
|
+
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake());
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Simulates the base parity circuit from its inputs.
|
|
59
|
+
* @param inputs - Inputs to the circuit.
|
|
60
|
+
* @returns The public inputs of the parity circuit.
|
|
61
|
+
*/
|
|
62
|
+
async getBaseParityProof(inputs) {
|
|
63
|
+
const timer = new Timer();
|
|
64
|
+
const witnessMap = convertBaseParityInputsToWitnessMap(inputs);
|
|
65
|
+
// use WASM here as it is faster for small circuits
|
|
66
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, BaseParityArtifact);
|
|
67
|
+
const result = convertBaseParityOutputsFromWitnessMap(witness);
|
|
68
|
+
const rootParityInput = new RootParityInput(makeRecursiveProof(RECURSIVE_PROOF_LENGTH), VERIFICATION_KEYS['BaseParityArtifact'], result);
|
|
69
|
+
this.instrumentation.recordDuration('simulationDuration', 'base-parity', timer);
|
|
70
|
+
emitCircuitSimulationStats('base-parity', timer.ms(), inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
71
|
+
return Promise.resolve(rootParityInput);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Simulates the root parity circuit from its inputs.
|
|
75
|
+
* @param inputs - Inputs to the circuit.
|
|
76
|
+
* @returns The public inputs of the parity circuit.
|
|
77
|
+
*/
|
|
78
|
+
async getRootParityProof(inputs) {
|
|
79
|
+
const timer = new Timer();
|
|
80
|
+
const witnessMap = convertRootParityInputsToWitnessMap(inputs);
|
|
81
|
+
// use WASM here as it is faster for small circuits
|
|
82
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, RootParityArtifact);
|
|
83
|
+
const result = convertRootParityOutputsFromWitnessMap(witness);
|
|
84
|
+
const rootParityInput = new RootParityInput(makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VERIFICATION_KEYS['RootParityArtifact'], result);
|
|
85
|
+
this.instrumentation.recordDuration('simulationDuration', 'root-parity', timer);
|
|
86
|
+
emitCircuitSimulationStats('root-parity', timer.ms(), inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
87
|
+
return Promise.resolve(rootParityInput);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Simulates the base rollup circuit from its inputs.
|
|
91
|
+
* @param input - Inputs to the circuit.
|
|
92
|
+
* @returns The public inputs as outputs of the simulation.
|
|
93
|
+
*/
|
|
94
|
+
async getBaseRollupProof(input) {
|
|
95
|
+
const timer = new Timer();
|
|
96
|
+
const witnessMap = convertSimulatedBaseRollupInputsToWitnessMap(input);
|
|
97
|
+
const simulationProvider = this.simulationProvider ?? this.wasmSimulator;
|
|
98
|
+
const witness = await simulationProvider.simulateCircuit(witnessMap, SimulatedBaseRollupArtifact);
|
|
99
|
+
const result = convertSimulatedBaseRollupOutputsFromWitnessMap(witness);
|
|
100
|
+
this.instrumentation.recordDuration('simulationDuration', 'base-rollup', timer);
|
|
101
|
+
emitCircuitSimulationStats('base-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
102
|
+
return makePublicInputsAndRecursiveProof(result, makeRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake());
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Simulates the merge rollup circuit from its inputs.
|
|
106
|
+
* @param input - Inputs to the circuit.
|
|
107
|
+
* @returns The public inputs as outputs of the simulation.
|
|
108
|
+
*/
|
|
109
|
+
async getMergeRollupProof(input) {
|
|
110
|
+
const timer = new Timer();
|
|
111
|
+
const witnessMap = convertMergeRollupInputsToWitnessMap(input);
|
|
112
|
+
// use WASM here as it is faster for small circuits
|
|
113
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, MergeRollupArtifact);
|
|
114
|
+
const result = convertMergeRollupOutputsFromWitnessMap(witness);
|
|
115
|
+
this.instrumentation.recordDuration('simulationDuration', 'merge-rollup', timer);
|
|
116
|
+
emitCircuitSimulationStats('merge-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
117
|
+
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake());
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Simulates the root rollup circuit from its inputs.
|
|
121
|
+
* @param input - Inputs to the circuit.
|
|
122
|
+
* @returns The public inputs as outputs of the simulation.
|
|
123
|
+
*/
|
|
124
|
+
async getRootRollupProof(input) {
|
|
125
|
+
const timer = new Timer();
|
|
126
|
+
const witnessMap = convertRootRollupInputsToWitnessMap(input);
|
|
127
|
+
// use WASM here as it is faster for small circuits
|
|
128
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, RootRollupArtifact);
|
|
129
|
+
const result = convertRootRollupOutputsFromWitnessMap(witness);
|
|
130
|
+
this.instrumentation.recordDuration('simulationDuration', 'root-rollup', timer);
|
|
131
|
+
emitCircuitSimulationStats('root-rollup', timer.ms(), input.toBuffer().length, result.toBuffer().length, this.logger);
|
|
132
|
+
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake());
|
|
133
|
+
}
|
|
134
|
+
async getPublicKernelProof(kernelRequest) {
|
|
135
|
+
const timer = new Timer();
|
|
136
|
+
const kernelOps = SimulatedPublicKernelArtifactMapping[kernelRequest.type];
|
|
137
|
+
if (kernelOps === undefined) {
|
|
138
|
+
throw new Error(`Unable to prove for kernel type ${kernelRequest.type}`);
|
|
139
|
+
}
|
|
140
|
+
const witnessMap = kernelOps.convertInputs(kernelRequest.inputs);
|
|
141
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts[kernelOps.artifact]);
|
|
142
|
+
const result = kernelOps.convertOutputs(witness);
|
|
143
|
+
const circuitName = mapPublicKernelToCircuitName(kernelRequest.type);
|
|
144
|
+
this.instrumentation.recordDuration('simulationDuration', circuitName, timer);
|
|
145
|
+
emitCircuitSimulationStats(circuitName, timer.ms(), kernelRequest.inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
146
|
+
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake());
|
|
147
|
+
}
|
|
148
|
+
async getPublicTailProof(kernelRequest) {
|
|
149
|
+
const timer = new Timer();
|
|
150
|
+
const witnessMap = convertSimulatedPublicTailInputsToWitnessMap(kernelRequest.inputs);
|
|
151
|
+
// use WASM here as it is faster for small circuits
|
|
152
|
+
const witness = await this.wasmSimulator.simulateCircuit(witnessMap, SimulatedServerCircuitArtifacts['PublicKernelTailArtifact']);
|
|
153
|
+
const result = convertSimulatedPublicTailOutputFromWitnessMap(witness);
|
|
154
|
+
this.instrumentation.recordDuration('simulationDuration', 'public-kernel-tail', timer);
|
|
155
|
+
emitCircuitSimulationStats('public-kernel-tail', timer.ms(), kernelRequest.inputs.toBuffer().length, result.toBuffer().length, this.logger);
|
|
156
|
+
return makePublicInputsAndRecursiveProof(result, makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH), VerificationKeyData.makeFake());
|
|
157
|
+
}
|
|
158
|
+
getAvmProof(_inputs) {
|
|
159
|
+
// We can't simulate the AVM because we don't have enough context to do so (e.g., DBs).
|
|
160
|
+
// We just return an empty proof and VK data.
|
|
161
|
+
this.logger.debug('Skipping AVM simulation in TestCircuitProver.');
|
|
162
|
+
return Promise.resolve({ proof: makeEmptyProof(), verificationKey: VerificationKeyData.makeFake() });
|
|
163
|
+
}
|
|
164
|
+
// Not implemented for test circuits
|
|
165
|
+
verifyProof(_1, _2) {
|
|
166
|
+
return Promise.reject(new Error('Method not implemented.'));
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
(() => {
|
|
170
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
171
|
+
_getBaseParityProof_decorators = [trackSpan('TestCircuitProver.getBaseParityProof')];
|
|
172
|
+
_getRootParityProof_decorators = [trackSpan('TestCircuitProver.getRootParityProof')];
|
|
173
|
+
_getBaseRollupProof_decorators = [trackSpan('TestCircuitProver.getBaseRollupProof')];
|
|
174
|
+
_getMergeRollupProof_decorators = [trackSpan('TestCircuitProver.getMergeRollupProof')];
|
|
175
|
+
_getRootRollupProof_decorators = [trackSpan('TestCircuitProver.getRootRollupProof')];
|
|
176
|
+
_getPublicKernelProof_decorators = [trackSpan('TestCircuitProver.getPublicKernelProof')];
|
|
177
|
+
_getPublicTailProof_decorators = [trackSpan('TestCircuitProver.getPublicTailProof')];
|
|
178
|
+
__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);
|
|
179
|
+
__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);
|
|
180
|
+
__esDecorate(_a, null, _getBaseRollupProof_decorators, { kind: "method", name: "getBaseRollupProof", static: false, private: false, access: { has: obj => "getBaseRollupProof" in obj, get: obj => obj.getBaseRollupProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
181
|
+
__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);
|
|
182
|
+
__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);
|
|
183
|
+
__esDecorate(_a, null, _getPublicKernelProof_decorators, { kind: "method", name: "getPublicKernelProof", static: false, private: false, access: { has: obj => "getPublicKernelProof" in obj, get: obj => obj.getPublicKernelProof }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
184
|
+
__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);
|
|
185
|
+
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
186
|
+
})(),
|
|
187
|
+
_a;
|
|
188
|
+
})();
|
|
189
|
+
export { TestCircuitProver };
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF9jaXJjdWl0X3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3Rlc3RfY2lyY3VpdF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFNTCxpQ0FBaUMsR0FDbEMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBS0wsZUFBZSxFQUdmLDZCQUE2QixFQUU3Qix3QkFBd0IsRUFHeEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFJZix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsa0JBQWtCLEdBQ25CLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBRWxCLDJCQUEyQixFQUMzQiwrQkFBK0IsRUFDL0IsbUNBQW1DLEVBQ25DLHNDQUFzQyxFQUN0QyxvQ0FBb0MsRUFDcEMsdUNBQXVDLEVBQ3ZDLDJDQUEyQyxFQUMzQyw4Q0FBOEMsRUFDOUMsbUNBQW1DLEVBQ25DLHNDQUFzQyxFQUN0QyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLDRDQUE0QyxFQUM1QywrQ0FBK0MsRUFDL0MsNENBQTRDLEVBQzVDLDhDQUE4QyxHQUMvQyxNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBMkIsYUFBYSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEcsT0FBTyxFQUF3QixTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0QsTUFBTSxpQkFBaUIsR0FBNEQ7SUFDakYsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFO0lBQ3RELGtCQUFrQixFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtJQUN0RCw0QkFBNEIsRUFBRSx1QkFBdUIsQ0FBQyxRQUFRLEVBQUU7SUFDaEUseUJBQXlCLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFO0lBQzdELHdCQUF3QixFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtJQUM1RCw0QkFBNEIsRUFBRSx1QkFBdUIsQ0FBQyxRQUFRLEVBQUU7SUFDaEUsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFO0lBQ3RELG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtJQUN2RCxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQyxRQUFRLEVBQUU7SUFDdEQsMEJBQTBCLEVBQUUsdUJBQXVCLENBQUMsUUFBUSxFQUFFO0lBQzlELG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLFFBQVEsRUFBRTtDQUN4RCxDQUFDO0FBRUY7OztHQUdHO0lBQ1UsaUJBQWlCOzs7Ozs7Ozs7O3NCQUFqQixpQkFBaUI7WUFJNUIsWUFDRSxTQUEwQixFQUNsQixrQkFBdUMsRUFDdkMsU0FBUyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQztnQkFEL0MsdUJBQWtCLElBTmpCLG1EQUFpQixFQU1sQixrQkFBa0IsRUFBcUI7Z0JBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQXlDO2dCQU5qRCxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBUTFDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUNuRixDQUFDO1lBRUQsSUFBSSxNQUFNO2dCQUNSLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDckMsQ0FBQztZQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FDckMsTUFBbUM7Z0JBRW5DLE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxDQUNyQyxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUMxQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUN6QyxDQUFDO2dCQUNGLE1BQU0sWUFBWSxHQUFHLElBQUksd0JBQXdCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlHLE1BQU0sVUFBVSxHQUFHLDJDQUEyQyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM3RSxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO2dCQUNqRyxNQUFNLE1BQU0sR0FBRyw4Q0FBOEMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFdkUsT0FBTyxpQ0FBaUMsQ0FDdEMsTUFBTSxFQUNOLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLEVBQ2pELG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUMvQixDQUFDO1lBQ0osQ0FBQztZQUVEOzs7O2VBSUc7WUFFSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBd0I7Z0JBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sVUFBVSxHQUFHLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUUvRCxtREFBbUQ7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3pGLE1BQU0sTUFBTSxHQUFHLHNDQUFzQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUvRCxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FDekMsa0JBQWtCLENBQWdDLHNCQUFzQixDQUFDLEVBQ3pFLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQ3ZDLE1BQU0sQ0FDUCxDQUFDO2dCQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFaEYsMEJBQTBCLENBQ3hCLGFBQWEsRUFDYixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ1YsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDeEIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO2dCQUVGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBRUQ7Ozs7ZUFJRztZQUVJLEtBQUssQ0FBQyxrQkFBa0IsQ0FDN0IsTUFBd0I7Z0JBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sVUFBVSxHQUFHLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUUvRCxtREFBbUQ7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBRXpGLE1BQU0sTUFBTSxHQUFHLHNDQUFzQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUUvRCxNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FDekMsa0JBQWtCLENBQXVDLDZCQUE2QixDQUFDLEVBQ3ZGLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLEVBQ3ZDLE1BQU0sQ0FDUCxDQUFDO2dCQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEYsMEJBQTBCLENBQ3hCLGFBQWEsRUFDYixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ1YsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDeEIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO2dCQUVGLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBRUQ7Ozs7ZUFJRztZQUVJLEtBQUssQ0FBQyxrQkFBa0IsQ0FDN0IsS0FBdUI7Z0JBRXZCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sVUFBVSxHQUFHLDRDQUE0QyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV2RSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO2dCQUN6RSxNQUFNLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztnQkFFbEcsTUFBTSxNQUFNLEdBQUcsK0NBQStDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXhFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEYsMEJBQTBCLENBQ3hCLGFBQWEsRUFDYixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ1YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDdkIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO2dCQUNGLE9BQU8saUNBQWlDLENBQ3RDLE1BQU0sRUFDTixrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxFQUNqRCxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FDL0IsQ0FBQztZQUNKLENBQUM7WUFDRDs7OztlQUlHO1lBRUksS0FBSyxDQUFDLG1CQUFtQixDQUM5QixLQUF3QjtnQkFFeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxVQUFVLEdBQUcsb0NBQW9DLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRS9ELG1EQUFtRDtnQkFDbkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztnQkFFMUYsTUFBTSxNQUFNLEdBQUcsdUNBQXVDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRWhFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDakYsMEJBQTBCLENBQ3hCLGNBQWMsRUFDZCxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ1YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDdkIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO2dCQUNGLE9BQU8saUNBQWlDLENBQ3RDLE1BQU0sRUFDTix1QkFBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxFQUN0RCxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FDL0IsQ0FBQztZQUNKLENBQUM7WUFFRDs7OztlQUlHO1lBRUksS0FBSyxDQUFDLGtCQUFrQixDQUM3QixLQUF1QjtnQkFFdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxVQUFVLEdBQUcsbUNBQW1DLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRTlELG1EQUFtRDtnQkFDbkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztnQkFFekYsTUFBTSxNQUFNLEdBQUcsc0NBQXNDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRS9ELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEYsMEJBQTBCLENBQ3hCLGFBQWEsRUFDYixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ1YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDdkIsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO2dCQUNGLE9BQU8saUNBQWlDLENBQ3RDLE1BQU0sRUFDTix1QkFBdUIsQ0FBQyw2QkFBNkIsQ0FBQyxFQUN0RCxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FDL0IsQ0FBQztZQUNKLENBQUM7WUFHTSxLQUFLLENBQUMsb0JBQW9CLENBQy9CLGFBQXlDO2dCQUV6QyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUMxQixNQUFNLFNBQVMsR0FBRyxvQ0FBb0MsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNFLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDM0UsQ0FBQztnQkFDRCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFakUsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FDdEQsVUFBVSxFQUNWLCtCQUErQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FDcEQsQ0FBQztnQkFFRixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLFdBQVcsR0FBRyw0QkFBNEIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDOUUsMEJBQTBCLENBQ3hCLFdBQVcsRUFDWCxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ1YsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQ3RDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQ3hCLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztnQkFFRixPQUFPLGlDQUFpQyxDQUN0QyxNQUFNLEVBQ04sdUJBQXVCLENBQUMsNkJBQTZCLENBQUMsRUFDdEQsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQy9CLENBQUM7WUFDSixDQUFDO1lBR00sS0FBSyxDQUFDLGtCQUFrQixDQUM3QixhQUFzQztnQkFFdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxVQUFVLEdBQUcsNENBQTRDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0RixtREFBbUQ7Z0JBQ25ELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQ3RELFVBQVUsRUFDViwrQkFBK0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUM1RCxDQUFDO2dCQUVGLE1BQU0sTUFBTSxHQUFHLDhDQUE4QyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN2RSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdkYsMEJBQTBCLENBQ3hCLG9CQUFvQixFQUNwQixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQ1YsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQ3RDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQ3hCLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztnQkFFRixPQUFPLGlDQUFpQyxDQUN0QyxNQUFNLEVBQ04sdUJBQXVCLENBQUMsNkJBQTZCLENBQUMsRUFDdEQsbUJBQW1CLENBQUMsUUFBUSxFQUFFLENBQy9CLENBQUM7WUFDSixDQUFDO1lBRUQsV0FBVyxDQUFDLE9BQXlCO2dCQUNuQyx1RkFBdUY7Z0JBQ3ZGLDZDQUE2QztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztnQkFDbkUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkcsQ0FBQztZQUVELG9DQUFvQztZQUM3QixXQUFXLENBQUMsRUFBMEIsRUFBRSxFQUFTO2dCQUN0RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1lBQzlELENBQUM7Ozs7OENBdk9BLFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQzs4Q0FpQ2pELFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQzs4Q0FtQ2pELFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQzsrQ0ErQmpELFNBQVMsQ0FBQyx1Q0FBdUMsQ0FBQzs4Q0FnQ2xELFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQztnREEyQmpELFNBQVMsQ0FBQyx3Q0FBd0MsQ0FBQzs4Q0FrQ25ELFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQztZQS9MbEQsdU1BQWEsa0JBQWtCLDZEQXlCOUI7WUFRRCx1TUFBYSxrQkFBa0IsNkRBMkI5QjtZQVFELHVNQUFhLGtCQUFrQiw2REF3QjlCO1lBT0QsME1BQWEsbUJBQW1CLDZEQXdCL0I7WUFRRCx1TUFBYSxrQkFBa0IsNkRBd0I5QjtZQUdELDZNQUFhLG9CQUFvQiw2REErQmhDO1lBR0QsdU1BQWEsa0JBQWtCLDZEQTBCOUI7Ozs7O1NBblFVLGlCQUFpQiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bb-prover",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.44.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js"
|
|
@@ -35,7 +35,15 @@
|
|
|
35
35
|
"rootDir": "./src",
|
|
36
36
|
"transform": {
|
|
37
37
|
"^.+\\.tsx?$": [
|
|
38
|
-
"@swc/jest"
|
|
38
|
+
"@swc/jest",
|
|
39
|
+
{
|
|
40
|
+
"jsc": {
|
|
41
|
+
"parser": {
|
|
42
|
+
"syntax": "typescript",
|
|
43
|
+
"decorators": true
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
39
47
|
]
|
|
40
48
|
},
|
|
41
49
|
"extensionsToTreatAsEsm": [
|
|
@@ -51,11 +59,12 @@
|
|
|
51
59
|
]
|
|
52
60
|
},
|
|
53
61
|
"dependencies": {
|
|
54
|
-
"@aztec/circuit-types": "0.
|
|
55
|
-
"@aztec/circuits.js": "0.
|
|
56
|
-
"@aztec/foundation": "0.
|
|
57
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
58
|
-
"@aztec/simulator": "0.
|
|
62
|
+
"@aztec/circuit-types": "0.44.0",
|
|
63
|
+
"@aztec/circuits.js": "0.44.0",
|
|
64
|
+
"@aztec/foundation": "0.44.0",
|
|
65
|
+
"@aztec/noir-protocol-circuits-types": "0.44.0",
|
|
66
|
+
"@aztec/simulator": "0.44.0",
|
|
67
|
+
"@aztec/telemetry-client": "0.44.0",
|
|
59
68
|
"@noir-lang/noirc_abi": "portal:../../noir/packages/noirc_abi",
|
|
60
69
|
"@noir-lang/types": "portal:../../noir/packages/types",
|
|
61
70
|
"commander": "^9.0.0",
|
package/src/bb/execute.ts
CHANGED
|
@@ -21,7 +21,7 @@ export enum BB_RESULT {
|
|
|
21
21
|
|
|
22
22
|
export type BBSuccess = {
|
|
23
23
|
status: BB_RESULT.SUCCESS | BB_RESULT.ALREADY_PRESENT;
|
|
24
|
-
|
|
24
|
+
durationMs: number;
|
|
25
25
|
/** Full path of the public key. */
|
|
26
26
|
pkPath?: string;
|
|
27
27
|
/** Base directory for the VKs (raw, fields). */
|
|
@@ -155,7 +155,7 @@ export async function generateKeyForNoirCircuit(
|
|
|
155
155
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
156
156
|
return {
|
|
157
157
|
status: BB_RESULT.SUCCESS,
|
|
158
|
-
duration,
|
|
158
|
+
durationMs: duration,
|
|
159
159
|
pkPath: key === 'pk' ? outputPath : undefined,
|
|
160
160
|
vkPath: key === 'vk' ? outputPath : undefined,
|
|
161
161
|
proofPath: undefined,
|
|
@@ -174,7 +174,7 @@ export async function generateKeyForNoirCircuit(
|
|
|
174
174
|
if (!res) {
|
|
175
175
|
return {
|
|
176
176
|
status: BB_RESULT.ALREADY_PRESENT,
|
|
177
|
-
|
|
177
|
+
durationMs: 0,
|
|
178
178
|
pkPath: key === 'pk' ? outputPath : undefined,
|
|
179
179
|
vkPath: key === 'vk' ? outputPath : undefined,
|
|
180
180
|
};
|
|
@@ -237,7 +237,7 @@ export async function generateProof(
|
|
|
237
237
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
238
238
|
return {
|
|
239
239
|
status: BB_RESULT.SUCCESS,
|
|
240
|
-
duration,
|
|
240
|
+
durationMs: duration,
|
|
241
241
|
proofPath: `${outputPath}`,
|
|
242
242
|
pkPath: undefined,
|
|
243
243
|
vkPath: `${outputPath}`,
|
|
@@ -346,7 +346,7 @@ export async function generateAvmProof(
|
|
|
346
346
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
347
347
|
return {
|
|
348
348
|
status: BB_RESULT.SUCCESS,
|
|
349
|
-
duration,
|
|
349
|
+
durationMs: duration,
|
|
350
350
|
proofPath: join(outputPath, PROOF_FILENAME),
|
|
351
351
|
pkPath: undefined,
|
|
352
352
|
vkPath: outputPath,
|
|
@@ -426,7 +426,7 @@ async function verifyProofInternal(
|
|
|
426
426
|
const result = await executeBB(pathToBB, command, args, log);
|
|
427
427
|
const duration = timer.ms();
|
|
428
428
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
429
|
-
return { status: BB_RESULT.SUCCESS, duration };
|
|
429
|
+
return { status: BB_RESULT.SUCCESS, durationMs: duration };
|
|
430
430
|
}
|
|
431
431
|
// Not a great error message here but it is difficult to decipher what comes from bb
|
|
432
432
|
return {
|
|
@@ -466,7 +466,7 @@ export async function writeVkAsFields(
|
|
|
466
466
|
const result = await executeBB(pathToBB, 'vk_as_fields', args, log);
|
|
467
467
|
const duration = timer.ms();
|
|
468
468
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
469
|
-
return { status: BB_RESULT.SUCCESS, duration, vkPath: verificationKeyPath };
|
|
469
|
+
return { status: BB_RESULT.SUCCESS, durationMs: duration, vkPath: verificationKeyPath };
|
|
470
470
|
}
|
|
471
471
|
// Not a great error message here but it is difficult to decipher what comes from bb
|
|
472
472
|
return {
|
|
@@ -508,7 +508,7 @@ export async function writeProofAsFields(
|
|
|
508
508
|
const result = await executeBB(pathToBB, 'proof_as_fields', args, log);
|
|
509
509
|
const duration = timer.ms();
|
|
510
510
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
511
|
-
return { status: BB_RESULT.SUCCESS, duration, proofPath: proofPath };
|
|
511
|
+
return { status: BB_RESULT.SUCCESS, durationMs: duration, proofPath: proofPath };
|
|
512
512
|
}
|
|
513
513
|
// Not a great error message here but it is difficult to decipher what comes from bb
|
|
514
514
|
return {
|
|
@@ -549,7 +549,7 @@ export async function generateContractForVerificationKey(
|
|
|
549
549
|
const result = await executeBB(pathToBB, 'contract', args, log);
|
|
550
550
|
const duration = timer.ms();
|
|
551
551
|
if (result.status == BB_RESULT.SUCCESS) {
|
|
552
|
-
return { status: BB_RESULT.SUCCESS, duration, contractPath };
|
|
552
|
+
return { status: BB_RESULT.SUCCESS, durationMs: duration, contractPath };
|
|
553
553
|
}
|
|
554
554
|
// Not a great error message here but it is difficult to decipher what comes from bb
|
|
555
555
|
return {
|
|
@@ -564,7 +564,7 @@ export async function generateContractForVerificationKey(
|
|
|
564
564
|
if (!res) {
|
|
565
565
|
return {
|
|
566
566
|
status: BB_RESULT.ALREADY_PRESENT,
|
|
567
|
-
|
|
567
|
+
durationMs: 0,
|
|
568
568
|
contractPath,
|
|
569
569
|
};
|
|
570
570
|
}
|