@solarity/zkit 0.1.0 → 0.1.1
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/dist/config/config.d.ts +3 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +2 -0
- package/dist/config/config.js.map +1 -1
- package/dist/core/CircuitZKit.d.ts +1 -0
- package/dist/core/CircuitZKit.d.ts.map +1 -1
- package/dist/core/CircuitZKit.js +16 -4
- package/dist/core/CircuitZKit.js.map +1 -1
- package/package.json +1 -1
- package/src/config/config.ts +6 -0
- package/src/core/CircuitZKit.ts +25 -4
package/dist/config/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TemplateType } from "../types/types";
|
|
1
2
|
declare const Context: any;
|
|
2
3
|
export type ManagerZKitConfig = {
|
|
3
4
|
circuitsDir: string;
|
|
@@ -12,6 +13,8 @@ export type CompileOptions = {
|
|
|
12
13
|
json: boolean;
|
|
13
14
|
c: boolean;
|
|
14
15
|
quiet: boolean;
|
|
16
|
+
setup: TemplateType;
|
|
17
|
+
contributions: number;
|
|
15
18
|
};
|
|
16
19
|
export declare const defaultCompileOptions: CompileOptions;
|
|
17
20
|
export type ManagerZKitPrivateConfig = ManagerZKitConfig & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,QAAA,MAAQ,OAAO,KAAuC,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,iBAAiB,CAK5D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,EAAE,OAAO,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,QAAA,MAAQ,OAAO,KAAuC,CAAC;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,iBAAiB,CAK5D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,EAAE,OAAO,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAOnC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IACzD,QAAQ,EAAE,OAAO,OAAO,CAAC;IACzB,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC"}
|
package/dist/config/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";;;AAEA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAU1C,QAAA,qBAAqB,GAA+B;IAC/D,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,gBAAgB;IAC9B,YAAY,EAAE,qBAAqB;IACnC,aAAa,EAAE,IAAI;CACpB,CAAC;AAWW,QAAA,qBAAqB,GAAmB;IACnD,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,KAAK;IACX,CAAC,EAAE,KAAK;IACR,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,SAAS;IAChB,aAAa,EAAE,CAAC;CACjB,CAAC"}
|
|
@@ -72,6 +72,7 @@ export declare class CircuitZKit {
|
|
|
72
72
|
/**
|
|
73
73
|
* Generates zero-knowledge key for the circuit.
|
|
74
74
|
*
|
|
75
|
+
* @param {CompileOptions} options - Compilation options.
|
|
75
76
|
* @param {string} outDir - The directory to save the generated key.
|
|
76
77
|
* @todo This method may cause issues https://github.com/iden3/snarkjs/issues/494
|
|
77
78
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitZKit.d.ts","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CircuitZKit.d.ts","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAqB,MAAM,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKlF;;;;GAIG;AACH,qBAAa,WAAW;IAQpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR3B;;;;;OAKG;gBAEgB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,WAAW;IAGxC;;;;;;;OAOG;IACU,OAAO,CAAC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB7F;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5C;;;;;;;;OAQG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOhE;;;;;;;;OAQG;IACU,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9D;;;;;;OAMG;IACU,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMpE;;;;OAIG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;OAIG;IACI,aAAa,IAAI,MAAM;IAI9B;;;;;;OAMG;YACW,aAAa;IA0B3B;;;;OAIG;YACW,aAAa;IAS3B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAYvB;;;;;OAKG;YACW,QAAQ;IAiBtB;;;;;OAKG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCtD;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAuBhB;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAef;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;CAczB"}
|
package/dist/core/CircuitZKit.js
CHANGED
|
@@ -27,6 +27,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.CircuitZKit = void 0;
|
|
30
|
+
const crypto_1 = require("crypto");
|
|
30
31
|
const ejs_1 = __importDefault(require("ejs"));
|
|
31
32
|
const fs_1 = __importDefault(require("fs"));
|
|
32
33
|
const path_1 = __importDefault(require("path"));
|
|
@@ -67,7 +68,7 @@ class CircuitZKit {
|
|
|
67
68
|
fs_1.default.mkdirSync(tempDir, { recursive: true });
|
|
68
69
|
const overriddenOptions = { ...config_1.defaultCompileOptions, ...options };
|
|
69
70
|
await this._compile(overriddenOptions, tempDir);
|
|
70
|
-
await this._generateZKey(tempDir);
|
|
71
|
+
await this._generateZKey(overriddenOptions, tempDir);
|
|
71
72
|
await this._generateVKey(tempDir);
|
|
72
73
|
this._moveFromTempDirToOutDir(tempDir, artifactDir);
|
|
73
74
|
}
|
|
@@ -154,15 +155,24 @@ class CircuitZKit {
|
|
|
154
155
|
/**
|
|
155
156
|
* Generates zero-knowledge key for the circuit.
|
|
156
157
|
*
|
|
158
|
+
* @param {CompileOptions} options - Compilation options.
|
|
157
159
|
* @param {string} outDir - The directory to save the generated key.
|
|
158
160
|
* @todo This method may cause issues https://github.com/iden3/snarkjs/issues/494
|
|
159
161
|
*/
|
|
160
|
-
async _generateZKey(outDir) {
|
|
162
|
+
async _generateZKey(options, outDir) {
|
|
161
163
|
const r1csFile = this._getFile("r1cs", outDir);
|
|
162
164
|
const zKeyFile = this._getFile("zkey", outDir);
|
|
163
165
|
const constraints = await this._getConstraints(outDir);
|
|
164
166
|
const ptauFile = await this._manager.fetchPtauFile(constraints);
|
|
165
|
-
|
|
167
|
+
if (options.setup == "groth16") {
|
|
168
|
+
await snarkjs.zKey.newZKey(r1csFile, ptauFile, zKeyFile);
|
|
169
|
+
const zKeyFileNext = `${zKeyFile}.next.zkey`;
|
|
170
|
+
for (let i = 0; i < options.contributions; ++i) {
|
|
171
|
+
await snarkjs.zKey.contribute(zKeyFile, zKeyFileNext, `${zKeyFile}_contribution_${i}`, (0, crypto_1.randomBytes)(32).toString("hex"));
|
|
172
|
+
fs_1.default.rmSync(zKeyFile);
|
|
173
|
+
fs_1.default.renameSync(zKeyFileNext, zKeyFile);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
166
176
|
}
|
|
167
177
|
/**
|
|
168
178
|
* Generates verification key for the circuit.
|
|
@@ -305,7 +315,6 @@ class CircuitZKit {
|
|
|
305
315
|
* @param {string} outDir - The output directory.
|
|
306
316
|
*/
|
|
307
317
|
_moveFromTempDirToOutDir(tempDir, outDir) {
|
|
308
|
-
fs_1.default.rmSync(outDir, { recursive: true, force: true });
|
|
309
318
|
fs_1.default.mkdirSync(outDir, { recursive: true });
|
|
310
319
|
(0, utils_1.readDirRecursively)(tempDir, (dir, file) => {
|
|
311
320
|
const correspondingOutDir = path_1.default.join(outDir, path_1.default.relative(tempDir, dir));
|
|
@@ -313,6 +322,9 @@ class CircuitZKit {
|
|
|
313
322
|
if (!fs_1.default.existsSync(correspondingOutDir)) {
|
|
314
323
|
fs_1.default.mkdirSync(correspondingOutDir);
|
|
315
324
|
}
|
|
325
|
+
if (fs_1.default.existsSync(correspondingOutFile)) {
|
|
326
|
+
fs_1.default.rmSync(correspondingOutFile);
|
|
327
|
+
}
|
|
316
328
|
fs_1.default.copyFileSync(file, correspondingOutFile);
|
|
317
329
|
});
|
|
318
330
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,4CAAoB;AACpB,gDAAwB;AACxB,iDAAmC;AAEnC,6CAAyE;AAGzE,0CAAoD;AAEpD,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAEtE;;;;GAIG;AACH,MAAa,WAAW;IAQH;IACA;IARnB;;;;;OAKG;IACH,YACmB,QAAgB,EAChB,QAAqB;QADrB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAa;IACrC,CAAC;IAEJ;;;;;;;OAOG;IACI,KAAK,CAAC,OAAO,CAAC,UAAmC,8BAAqB;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE7C,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,MAAM,iBAAiB,GAAmB,EAAE,GAAG,8BAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;YAEnF,MAAM,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAEhD,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/config/config.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { TemplateType } from "../types/types";
|
|
2
|
+
|
|
1
3
|
const { Context } = require("@distributedlab/circom2");
|
|
2
4
|
|
|
3
5
|
export type ManagerZKitConfig = {
|
|
@@ -20,6 +22,8 @@ export type CompileOptions = {
|
|
|
20
22
|
json: boolean;
|
|
21
23
|
c: boolean;
|
|
22
24
|
quiet: boolean;
|
|
25
|
+
setup: TemplateType;
|
|
26
|
+
contributions: number;
|
|
23
27
|
};
|
|
24
28
|
|
|
25
29
|
export const defaultCompileOptions: CompileOptions = {
|
|
@@ -27,6 +31,8 @@ export const defaultCompileOptions: CompileOptions = {
|
|
|
27
31
|
json: false,
|
|
28
32
|
c: false,
|
|
29
33
|
quiet: false,
|
|
34
|
+
setup: "groth16",
|
|
35
|
+
contributions: 5,
|
|
30
36
|
};
|
|
31
37
|
|
|
32
38
|
export type ManagerZKitPrivateConfig = ManagerZKitConfig & {
|
package/src/core/CircuitZKit.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { randomBytes } from "crypto";
|
|
1
2
|
import ejs from "ejs";
|
|
2
3
|
import fs from "fs";
|
|
3
4
|
import path from "path";
|
|
@@ -47,7 +48,7 @@ export class CircuitZKit {
|
|
|
47
48
|
|
|
48
49
|
await this._compile(overriddenOptions, tempDir);
|
|
49
50
|
|
|
50
|
-
await this._generateZKey(tempDir);
|
|
51
|
+
await this._generateZKey(overriddenOptions, tempDir);
|
|
51
52
|
await this._generateVKey(tempDir);
|
|
52
53
|
|
|
53
54
|
this._moveFromTempDirToOutDir(tempDir, artifactDir);
|
|
@@ -152,17 +153,34 @@ export class CircuitZKit {
|
|
|
152
153
|
/**
|
|
153
154
|
* Generates zero-knowledge key for the circuit.
|
|
154
155
|
*
|
|
156
|
+
* @param {CompileOptions} options - Compilation options.
|
|
155
157
|
* @param {string} outDir - The directory to save the generated key.
|
|
156
158
|
* @todo This method may cause issues https://github.com/iden3/snarkjs/issues/494
|
|
157
159
|
*/
|
|
158
|
-
private async _generateZKey(outDir: string): Promise<void> {
|
|
160
|
+
private async _generateZKey(options: CompileOptions, outDir: string): Promise<void> {
|
|
159
161
|
const r1csFile = this._getFile("r1cs", outDir);
|
|
160
162
|
const zKeyFile = this._getFile("zkey", outDir);
|
|
161
163
|
|
|
162
164
|
const constraints = await this._getConstraints(outDir);
|
|
163
165
|
const ptauFile = await this._manager.fetchPtauFile(constraints);
|
|
164
166
|
|
|
165
|
-
|
|
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
|
+
}
|
|
166
184
|
}
|
|
167
185
|
|
|
168
186
|
/**
|
|
@@ -336,7 +354,6 @@ export class CircuitZKit {
|
|
|
336
354
|
* @param {string} outDir - The output directory.
|
|
337
355
|
*/
|
|
338
356
|
private _moveFromTempDirToOutDir(tempDir: string, outDir: string): void {
|
|
339
|
-
fs.rmSync(outDir, { recursive: true, force: true });
|
|
340
357
|
fs.mkdirSync(outDir, { recursive: true });
|
|
341
358
|
|
|
342
359
|
readDirRecursively(tempDir, (dir: string, file: string) => {
|
|
@@ -347,6 +364,10 @@ export class CircuitZKit {
|
|
|
347
364
|
fs.mkdirSync(correspondingOutDir);
|
|
348
365
|
}
|
|
349
366
|
|
|
367
|
+
if (fs.existsSync(correspondingOutFile)) {
|
|
368
|
+
fs.rmSync(correspondingOutFile);
|
|
369
|
+
}
|
|
370
|
+
|
|
350
371
|
fs.copyFileSync(file, correspondingOutFile);
|
|
351
372
|
});
|
|
352
373
|
}
|