@solarity/zkit 0.1.1 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,3 @@
1
- export * from "./core/CircomZKit";
2
1
  export * from "./core/CircuitZKit";
3
- export * from "./core/ManagerZKit";
4
- export { NumericString, PublicSignals, Groth16Proof, Calldata, ProofStruct, Inputs, CircuitInfo } from "./types/types";
5
- export { CompileOptions, ManagerZKitConfig, defaultCompileOptions, defaultManagerOptions } from "./config/config";
2
+ export * from "./types/circuit-zkit";
6
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -14,11 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.defaultManagerOptions = exports.defaultCompileOptions = void 0;
18
- __exportStar(require("./core/CircomZKit"), exports);
19
17
  __exportStar(require("./core/CircuitZKit"), exports);
20
- __exportStar(require("./core/ManagerZKit"), exports);
21
- var config_1 = require("./config/config");
22
- Object.defineProperty(exports, "defaultCompileOptions", { enumerable: true, get: function () { return config_1.defaultCompileOptions; } });
23
- Object.defineProperty(exports, "defaultManagerOptions", { enumerable: true, get: function () { return config_1.defaultManagerOptions; } });
18
+ __exportStar(require("./types/circuit-zkit"), exports);
24
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qDAAmC;AACnC,qDAAmC;AAInC,0CAAkH;AAAtE,+GAAA,qBAAqB,OAAA;AAAE,+GAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,uDAAqC"}
@@ -0,0 +1,43 @@
1
+ export type NumericString = `${number}` | string;
2
+ export type PublicSignals = NumericString[];
3
+ export type Groth16Proof = {
4
+ pi_a: [NumericString, NumericString];
5
+ pi_b: [[NumericString, NumericString], [NumericString, NumericString]];
6
+ pi_c: [NumericString, NumericString];
7
+ protocol: string;
8
+ curve: string;
9
+ };
10
+ export type Calldata = [
11
+ [
12
+ NumericString,
13
+ NumericString
14
+ ],
15
+ [
16
+ [NumericString, NumericString],
17
+ [NumericString, NumericString]
18
+ ],
19
+ [
20
+ NumericString,
21
+ NumericString
22
+ ],
23
+ [
24
+ NumericString
25
+ ]
26
+ ];
27
+ export type ProofStruct = {
28
+ proof: Groth16Proof;
29
+ publicSignals: PublicSignals;
30
+ };
31
+ export type NumberLike = number | bigint | string;
32
+ export type ArrayLike = NumberLike[] | ArrayLike[];
33
+ export type InputLike = NumberLike | ArrayLike;
34
+ export type Inputs = Record<string, InputLike>;
35
+ export type ArtifactsFileType = "r1cs" | "zkey" | "vkey" | "sym" | "json" | "wasm";
36
+ export type VerifierTemplateType = "groth16";
37
+ export type CircuitZKitConfig = {
38
+ circuitName: string;
39
+ circuitArtifactsPath: string;
40
+ verifierDirPath: string;
41
+ templateType?: VerifierTemplateType;
42
+ };
43
+ //# sourceMappingURL=circuit-zkit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-zkit.d.ts","sourceRoot":"","sources":["../../src/types/circuit-zkit.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;IACvE,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB;QAAC,aAAa;QAAE,aAAa;KAAC;IAC9B;QAAC,CAAC,aAAa,EAAE,aAAa,CAAC;QAAE,CAAC,aAAa,EAAE,aAAa,CAAC;KAAC;IAChE;QAAC,aAAa;QAAE,aAAa;KAAC;IAC9B;QAAC,aAAa;KAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAClD,MAAM,MAAM,SAAS,GAAG,UAAU,EAAE,GAAG,SAAS,EAAE,CAAC;AACnD,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/C,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AACnF,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=circuit-zkit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuit-zkit.js","sourceRoot":"","sources":["../../src/types/circuit-zkit.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solarity/zkit",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "license": "MIT",
5
5
  "author": "Distributed Lab",
6
6
  "readme": "README.md",
@@ -26,25 +26,36 @@
26
26
  "scripts": {
27
27
  "prepare": "husky",
28
28
  "build": "tsc",
29
- "test": "jest --forceExit",
30
- "lint-fix": "prettier --write 'src/**/*.ts'",
29
+ "test": "mocha --recursive 'test/**/*.ts' --exit",
30
+ "coverage": "nyc mocha --recursive 'test/**/*.ts' --exit",
31
+ "lint-fix": "prettier --write \"./**/*.ts\"",
31
32
  "publish-to-npm": "npm run lint-fix && bash ./scripts/publish.sh"
32
33
  },
34
+ "nyc": {
35
+ "reporter": [
36
+ "html",
37
+ "text"
38
+ ]
39
+ },
33
40
  "dependencies": {
34
- "@distributedlab/circom2": "0.2.18-rc.2",
35
41
  "ejs": "3.1.10",
36
- "snarkjs": "0.7.3",
37
- "uuid": "9.0.1"
42
+ "snarkjs": "0.7.3"
38
43
  },
39
44
  "devDependencies": {
45
+ "@nomicfoundation/hardhat-ethers": "3.0.5",
40
46
  "@types/ejs": "^3.1.5",
41
- "@types/jest": "^29.5.12",
42
47
  "@types/snarkjs": "^0.7.8",
43
- "@types/uuid": "^9.0.8",
48
+ "@types/chai": "^4.3.12",
49
+ "@types/chai-as-promised": "^7.1.8",
50
+ "@types/mocha": "^10.0.6",
51
+ "chai": "^4.4.1",
52
+ "chai-as-promised": "^7.1.1",
53
+ "mocha": "^10.3.0",
54
+ "nyc": "^15.1.0",
55
+ "ethers": "6.11.1",
56
+ "hardhat": "2.20.1",
44
57
  "husky": "^9.0.11",
45
- "jest": "^29.7.0",
46
58
  "prettier": "^3.2.5",
47
- "ts-jest": "^29.1.2",
48
59
  "ts-node": "^10.9.2",
49
60
  "typescript": "^5.4.5"
50
61
  }
@@ -1,89 +1,57 @@
1
- import { randomBytes } from "crypto";
2
1
  import ejs from "ejs";
3
2
  import fs from "fs";
4
3
  import path from "path";
5
4
  import * as snarkjs from "snarkjs";
6
5
 
7
- import { defaultCompileOptions, CompileOptions } from "../config/config";
8
- import { ManagerZKit } from "./ManagerZKit";
9
- import { Calldata, DirType, FileType, Inputs, ProofStruct } from "../types/types";
10
- import { readDirRecursively } from "../utils/utils";
11
-
12
- const { CircomRunner, bindings } = require("@distributedlab/circom2");
6
+ import {
7
+ ArtifactsFileType,
8
+ Calldata,
9
+ CircuitZKitConfig,
10
+ Inputs,
11
+ ProofStruct,
12
+ VerifierTemplateType,
13
+ } from "../types/circuit-zkit";
13
14
 
14
15
  /**
15
16
  * `CircuitZKit` represents a single circuit and provides a high-level API to work with it.
16
- *
17
- * @dev This class is not meant to be used directly. Use the `CircomZKit` to create its instance.
18
17
  */
19
18
  export class CircuitZKit {
20
- /**
21
- * Creates a new instance of `CircuitZKit`.
22
- *
23
- * @param {string} _circuit - The path to the circuit.
24
- * @param {ManagerZKit} _manager - The manager that maintains the global state.
25
- */
26
- constructor(
27
- private readonly _circuit: string,
28
- private readonly _manager: ManagerZKit,
29
- ) {}
19
+ constructor(private readonly _config: CircuitZKitConfig) {}
30
20
 
31
21
  /**
32
- * Compiles the circuit and generates the artifacts.
33
- *
34
- * @dev If compilation fails, the latest valid artifacts will be preserved.
35
- * @dev Doesn't show the compilation error if `quiet` is set to `true`.
22
+ * Returns the Solidity verifier template for the specified proving system.
36
23
  *
37
- * @param {Partial<CompileOptions>} [options=defaultCompileOptions] - Compilation options.
24
+ * @param {VerifierTemplateType} templateType - The template type.
25
+ * @returns {string} The Solidity verifier template.
38
26
  */
39
- public async compile(options: Partial<CompileOptions> = defaultCompileOptions): Promise<void> {
40
- const tempDir = this._manager.getTempDir();
41
-
42
- try {
43
- const artifactDir = this._getDir("artifact");
44
-
45
- fs.mkdirSync(tempDir, { recursive: true });
46
-
47
- const overriddenOptions: CompileOptions = { ...defaultCompileOptions, ...options };
48
-
49
- await this._compile(overriddenOptions, tempDir);
50
-
51
- await this._generateZKey(overriddenOptions, tempDir);
52
- await this._generateVKey(tempDir);
53
-
54
- this._moveFromTempDirToOutDir(tempDir, artifactDir);
55
- } finally {
56
- fs.rmSync(tempDir, { recursive: true, force: true });
27
+ public static getTemplate(templateType: VerifierTemplateType): string {
28
+ switch (templateType) {
29
+ case "groth16":
30
+ return fs.readFileSync(path.join(__dirname, "templates", "verifier_groth16.sol.ejs"), "utf8");
31
+ default:
32
+ throw new Error(`Ambiguous template type: ${templateType}.`);
57
33
  }
58
34
  }
59
35
 
60
36
  /**
61
- * Creates a verifier contract.
37
+ * Creates a Solidity verifier contract.
62
38
  */
63
39
  public async createVerifier(): Promise<void> {
64
- const tempDir = this._manager.getTempDir();
40
+ const vKeyFilePath: string = this.mustGetArtifactsFilePath("vkey");
41
+ const verifierFilePath = path.join(this._config.verifierDirPath, `${this.getVerifierName()}.sol`);
65
42
 
66
- try {
67
- const verifierDir = this._getDir("verifier");
43
+ const verifierTemplate: string = CircuitZKit.getTemplate(this.getTemplateType());
68
44
 
69
- fs.mkdirSync(tempDir, { recursive: true });
70
-
71
- const vKeyFile = this._mustGetFile("vkey");
72
- const verifierFile = this._getFile("sol", tempDir);
73
-
74
- const groth16Template = this._manager.getTemplate("groth16");
75
-
76
- const templateParams = JSON.parse(fs.readFileSync(vKeyFile, "utf-8"));
77
- templateParams["verifier_id"] = this.getVerifierId();
45
+ if (!fs.existsSync(this._config.verifierDirPath)) {
46
+ fs.mkdirSync(this._config.verifierDirPath, { recursive: true });
47
+ }
78
48
 
79
- const verifierCode = ejs.render(groth16Template, templateParams);
49
+ const templateParams = JSON.parse(fs.readFileSync(vKeyFilePath, "utf-8"));
50
+ templateParams["verifier_id"] = this.getVerifierName();
80
51
 
81
- fs.writeFileSync(verifierFile, verifierCode, "utf-8");
52
+ const verifierCode = ejs.render(verifierTemplate, templateParams);
82
53
 
83
- this._moveFromTempDirToOutDir(tempDir, verifierDir);
84
- } finally {
85
- fs.rmSync(tempDir, { recursive: true, force: true });
86
- }
54
+ fs.writeFileSync(verifierFilePath, verifierCode, "utf-8");
87
55
  }
88
56
 
89
57
  /**
@@ -96,8 +64,8 @@ export class CircuitZKit {
96
64
  * @todo Add support for other proving systems.
97
65
  */
98
66
  public async generateProof(inputs: Inputs): Promise<ProofStruct> {
99
- const zKeyFile = this._mustGetFile("zkey");
100
- const wasmFile = this._mustGetFile("wasm");
67
+ const zKeyFile = this.mustGetArtifactsFilePath("zkey");
68
+ const wasmFile = this.mustGetArtifactsFilePath("wasm");
101
69
 
102
70
  return (await snarkjs.groth16.fullProve(inputs, wasmFile, zKeyFile)) as ProofStruct;
103
71
  }
@@ -112,7 +80,7 @@ export class CircuitZKit {
112
80
  * @returns {Promise<boolean>} Whether the proof is valid.
113
81
  */
114
82
  public async verifyProof(proof: ProofStruct): Promise<boolean> {
115
- const vKeyFile = this._mustGetFile("vkey");
83
+ const vKeyFile = this.mustGetArtifactsFilePath("vkey");
116
84
 
117
85
  const verifier = JSON.parse(fs.readFileSync(vKeyFile).toString());
118
86
 
@@ -133,264 +101,84 @@ export class CircuitZKit {
133
101
  }
134
102
 
135
103
  /**
136
- * Returns the circuit ID. The circuit ID is the name of the circuit file without the extension.
137
- *
138
- * @returns {string} The circuit ID.
139
- */
140
- public getCircuitId(): string {
141
- return path.parse(this._circuit).name;
142
- }
143
-
144
- /**
145
- * Returns the verifier ID. The verifier ID is the name of the circuit file without the extension, suffixed with "Verifier".
146
- *
147
- * @returns {string} The verifier ID.
148
- */
149
- public getVerifierId(): string {
150
- return `${path.parse(this._circuit).name}Verifier`;
151
- }
152
-
153
- /**
154
- * Generates zero-knowledge key for the circuit.
104
+ * Returns the circuit name. The circuit name is the name of the circuit file without the extension.
155
105
  *
156
- * @param {CompileOptions} options - Compilation options.
157
- * @param {string} outDir - The directory to save the generated key.
158
- * @todo This method may cause issues https://github.com/iden3/snarkjs/issues/494
106
+ * @returns {string} The circuit name.
159
107
  */
160
- private async _generateZKey(options: CompileOptions, outDir: string): Promise<void> {
161
- const r1csFile = this._getFile("r1cs", outDir);
162
- const zKeyFile = this._getFile("zkey", outDir);
163
-
164
- const constraints = await this._getConstraints(outDir);
165
- const ptauFile = await this._manager.fetchPtauFile(constraints);
166
-
167
- if (options.setup == "groth16") {
168
- await snarkjs.zKey.newZKey(r1csFile, ptauFile, zKeyFile);
169
-
170
- const zKeyFileNext = `${zKeyFile}.next.zkey`;
171
-
172
- for (let i = 0; i < options.contributions; ++i) {
173
- await snarkjs.zKey.contribute(
174
- zKeyFile,
175
- zKeyFileNext,
176
- `${zKeyFile}_contribution_${i}`,
177
- randomBytes(32).toString("hex"),
178
- );
179
-
180
- fs.rmSync(zKeyFile);
181
- fs.renameSync(zKeyFileNext, zKeyFile);
182
- }
183
- }
108
+ public getCircuitName(): string {
109
+ return this._config.circuitName;
184
110
  }
185
111
 
186
112
  /**
187
- * Generates verification key for the circuit.
113
+ * Returns the verifier name. The verifier name is the name of the circuit file without the extension, suffixed with "Verifier".
188
114
  *
189
- * @param {string} outDir - The directory to save the generated key.
115
+ * @returns {string} The verifier name.
190
116
  */
191
- private async _generateVKey(outDir: string): Promise<void> {
192
- const zKeyFile = this._getFile("zkey", outDir);
193
- const vKeyFile = this._getFile("vkey", outDir);
194
-
195
- const vKeyData = await snarkjs.zKey.exportVerificationKey(zKeyFile);
196
-
197
- fs.writeFileSync(vKeyFile, JSON.stringify(vKeyData));
117
+ public getVerifierName(): string {
118
+ return `${this._config.circuitName}Verifier`;
198
119
  }
199
120
 
200
121
  /**
201
- * Returns the arguments to compile the circuit.
122
+ * Returns the type of verifier template that was stored in the config
202
123
  *
203
- * @param {CompileOptions} options - Compilation options.
204
- * @param {string} outDir - The directory to save the compiled artifacts.
205
- * @returns {string[]} The arguments to compile the circuit.
124
+ * @returns {VerifierTemplateType} The verifier template type.
206
125
  */
207
- private _getCompileArgs(options: CompileOptions, outDir: string): string[] {
208
- let args = [this._circuit, "--r1cs", "--wasm"];
209
-
210
- options.sym && args.push("--sym");
211
- options.json && args.push("--json");
212
- options.c && args.push("--c");
213
-
214
- args.push("-o", outDir);
215
-
216
- return args;
217
- }
218
-
219
- /**
220
- * Compiles the circuit.
221
- *
222
- * @param {CompileOptions} options - Compilation options.
223
- * @param {string} outDir - The directory to save the compiled artifacts.
224
- */
225
- private async _compile(options: CompileOptions, outDir: string): Promise<void> {
226
- const args = this._getCompileArgs(options, outDir);
227
-
228
- try {
229
- await this._getCircomRunner(args, options.quiet).execute(this._manager.getCompiler());
230
- } catch (err) {
231
- if (options.quiet) {
232
- throw new Error(
233
- 'Compilation failed with an unknown error. Consider passing "quiet=false" flag to see the compilation error.',
234
- { cause: err },
235
- );
236
- }
237
-
238
- throw new Error("Compilation failed.", { cause: err });
239
- }
126
+ public getTemplateType(): VerifierTemplateType {
127
+ return this._config.templateType ?? "groth16";
240
128
  }
241
129
 
242
130
  /**
243
- * Returns the number of constraints in the circuit. This value is used to fetch the correct `ptau` file.
131
+ * Returns the path to the file of the given type inside artifacts directory. Throws an error if the file doesn't exist.
244
132
  *
245
- * @param {string} outDir - The directory where the compiled artifacts are saved.
246
- * @returns {Promise<number>} The number of constraints in the circuit.
133
+ * @param {ArtifactsFileType} fileType - The type of the file.
134
+ * @returns {string} The path to the file.
247
135
  */
248
- async _getConstraints(outDir: string): Promise<number> {
249
- const r1csFile = this._getFile("r1cs", outDir);
250
-
251
- const r1csDescriptor = fs.openSync(r1csFile, "r");
252
-
253
- const readBytes = (position: number, length: number): bigint => {
254
- const buffer = Buffer.alloc(length);
255
-
256
- fs.readSync(r1csDescriptor, buffer, { length, position });
257
-
258
- return BigInt(`0x${buffer.reverse().toString("hex")}`);
259
- };
260
-
261
- /// @dev https://github.com/iden3/r1csfile/blob/d82959da1f88fbd06db0407051fde94afbf8824a/doc/r1cs_bin_format.md#format-of-the-file
262
- const numberOfSections = readBytes(8, 4);
263
- let sectionStart = 12;
136
+ public mustGetArtifactsFilePath(fileType: ArtifactsFileType): string {
137
+ const file = this.getArtifactsFilePath(fileType);
264
138
 
265
- for (let i = 0; i < numberOfSections; ++i) {
266
- const sectionType = Number(readBytes(sectionStart, 4));
267
- const sectionSize = Number(readBytes(sectionStart + 4, 8));
268
-
269
- /// @dev Reading header section
270
- if (sectionType == 1) {
271
- const totalConstraintsOffset = 4 + 8 + 4 + 32 + 4 + 4 + 4 + 4 + 8;
272
-
273
- return Number(readBytes(sectionStart + totalConstraintsOffset, 4));
274
- }
275
-
276
- sectionStart += 4 + 8 + sectionSize;
139
+ if (!fs.existsSync(file)) {
140
+ throw new Error(`Expected the file "${file}" to exist`);
277
141
  }
278
142
 
279
- throw new Error("Header section is not found.");
143
+ return file;
280
144
  }
281
145
 
282
146
  /**
283
- * Returns the path to the file of the given type.
147
+ * Returns the path to the file of the given type inside artifacts directory.
284
148
  *
285
- * @param {FileType} fileType - The type of the file.
286
- * @param {string | undefined} temp - The temporary directory to use.
149
+ * @param {ArtifactsFileType} fileType - The type of the file.
287
150
  * @returns {string} The path to the file.
288
151
  */
289
- private _getFile(fileType: FileType, temp?: string): string {
290
- const circuitId = this.getCircuitId();
152
+ public getArtifactsFilePath(fileType: ArtifactsFileType): string {
153
+ const circuitName = this.getCircuitName();
154
+
155
+ let fileName: string;
156
+ let fileDir: string = this._config.circuitArtifactsPath;
291
157
 
292
158
  switch (fileType) {
293
159
  case "r1cs":
294
- return path.join(temp ?? this._getDir("artifact"), `${circuitId}.r1cs`);
160
+ fileName = `${circuitName}.r1cs`;
161
+ break;
295
162
  case "zkey":
296
- return path.join(temp ?? this._getDir("artifact"), `${circuitId}.zkey`);
163
+ fileName = `${circuitName}.zkey`;
164
+ break;
297
165
  case "vkey":
298
- return path.join(temp ?? this._getDir("artifact"), `${circuitId}.vkey.json`);
166
+ fileName = `${circuitName}.vkey.json`;
167
+ break;
299
168
  case "sym":
300
- return path.join(temp ?? this._getDir("artifact"), `${circuitId}.sym`);
169
+ fileName = `${circuitName}.sym`;
170
+ break;
301
171
  case "json":
302
- return path.join(temp ?? this._getDir("artifact"), `${circuitId}.json`);
172
+ fileName = `${circuitName}_constraints.json`;
173
+ break;
303
174
  case "wasm":
304
- return path.join(temp ?? this._getDir("artifact"), `${circuitId}_js`, `${circuitId}.wasm`);
305
- case "sol":
306
- return path.join(temp ?? this._getDir("verifier"), `${circuitId}Verifier.sol`);
175
+ fileName = `${circuitName}.wasm`;
176
+ fileDir = path.join(fileDir, `${circuitName}_js`);
177
+ break;
307
178
  default:
308
179
  throw new Error(`Ambiguous file type: ${fileType}.`);
309
180
  }
310
- }
311
-
312
- /**
313
- * Returns the path to the directory of the given type.
314
- *
315
- * @param {DirType} dirType - The type of the directory.
316
- * @returns {string} The path to the directory.
317
- */
318
- private _getDir(dirType: DirType): string {
319
- const circuitRelativePath = path.relative(this._manager.getCircuitsDir(), this._circuit);
320
-
321
- switch (dirType) {
322
- case "circuit":
323
- return path.join(this._manager.getCircuitsDir(), circuitRelativePath, "..");
324
- case "artifact":
325
- return path.join(this._manager.getArtifactsDir(), circuitRelativePath);
326
- case "verifier":
327
- return path.join(this._manager.getVerifiersDir(), circuitRelativePath, "..");
328
- default:
329
- throw new Error(`Ambiguous dir type: ${dirType}.`);
330
- }
331
- }
332
-
333
- /**
334
- * Returns the path to the file of the given type. Throws an error if the file doesn't exist.
335
- *
336
- * @param {FileType} fileType - The type of the file.
337
- * @param {string | undefined} temp - The temporary directory to use.
338
- * @returns {string} The path to the file.
339
- */
340
- private _mustGetFile(fileType: FileType, temp?: string): string {
341
- const file = this._getFile(fileType, temp);
342
-
343
- if (!fs.existsSync(file)) {
344
- throw new Error(`Expected the file "${file}" to exist`);
345
- }
346
-
347
- return file;
348
- }
349
181
 
350
- /**
351
- * Moves the files from the temporary directory to the output directory.
352
- *
353
- * @param {string} tempDir - The temporary directory.
354
- * @param {string} outDir - The output directory.
355
- */
356
- private _moveFromTempDirToOutDir(tempDir: string, outDir: string): void {
357
- fs.mkdirSync(outDir, { recursive: true });
358
-
359
- readDirRecursively(tempDir, (dir: string, file: string) => {
360
- const correspondingOutDir = path.join(outDir, path.relative(tempDir, dir));
361
- const correspondingOutFile = path.join(outDir, path.relative(tempDir, file));
362
-
363
- if (!fs.existsSync(correspondingOutDir)) {
364
- fs.mkdirSync(correspondingOutDir);
365
- }
366
-
367
- if (fs.existsSync(correspondingOutFile)) {
368
- fs.rmSync(correspondingOutFile);
369
- }
370
-
371
- fs.copyFileSync(file, correspondingOutFile);
372
- });
373
- }
374
-
375
- /**
376
- * Returns a new instance of `CircomRunner`. The `CircomRunner` is used to compile the circuit.
377
- *
378
- * @param {string[]} args - The arguments to run the `circom` compiler.
379
- * @param {boolean} quiet - Whether to suppress the compilation error.
380
- * @returns {typeof CircomRunner} The `CircomRunner` instance.
381
- */
382
- private _getCircomRunner(args: string[], quiet: boolean): typeof CircomRunner {
383
- return new CircomRunner({
384
- args,
385
- preopens: { "/": "/" },
386
- bindings: {
387
- ...bindings,
388
- exit(code: number) {
389
- throw new Error(`Compilation error. Exit code: ${code}.`);
390
- },
391
- fs,
392
- },
393
- quiet,
394
- });
182
+ return path.join(fileDir, fileName);
395
183
  }
396
184
  }
package/src/index.ts CHANGED
@@ -1,7 +1,2 @@
1
- export * from "./core/CircomZKit";
2
1
  export * from "./core/CircuitZKit";
3
- export * from "./core/ManagerZKit";
4
-
5
- export { NumericString, PublicSignals, Groth16Proof, Calldata, ProofStruct, Inputs, CircuitInfo } from "./types/types";
6
-
7
- export { CompileOptions, ManagerZKitConfig, defaultCompileOptions, defaultManagerOptions } from "./config/config";
2
+ export * from "./types/circuit-zkit";