@solarity/zkit 0.3.2 → 0.3.3
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/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/core/CircuitZKit.d.ts +5 -0
- package/dist/core/CircuitZKit.d.ts.map +1 -1
- package/dist/core/CircuitZKit.js +18 -1
- package/dist/core/CircuitZKit.js.map +1 -1
- package/package.json +1 -1
- package/src/constants.ts +2 -0
- package/src/core/CircuitZKit.ts +24 -4
package/dist/constants.d.ts
CHANGED
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,eAAO,MAAM,oBAAoB,MAAM,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BN128_CURVE_NAME = void 0;
|
|
3
|
+
exports.MAX_FILE_NAME_LENGTH = exports.BN128_CURVE_NAME = void 0;
|
|
4
4
|
exports.BN128_CURVE_NAME = "bn128";
|
|
5
|
+
exports.MAX_FILE_NAME_LENGTH = 255;
|
|
5
6
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAE3B,QAAA,oBAAoB,GAAG,GAAG,CAAC"}
|
|
@@ -12,6 +12,11 @@ export declare class CircuitZKit<Type extends ProvingSystemType> {
|
|
|
12
12
|
* Creates a verifier contract for the specified contract language with optional name suffix.
|
|
13
13
|
* For more details regarding the structure of the contract verifier name, see {@link getVerifierName} description.
|
|
14
14
|
*
|
|
15
|
+
* In case the length of the verifier filename exceeds the {@link MAX_FILE_NAME_LENGTH},
|
|
16
|
+
* the `verifierNameSuffix` will be replaced by the first four bytes of its `sha1` hash.
|
|
17
|
+
*
|
|
18
|
+
* If no suffix was passed, but the verifier's filename still exceeds {@link MAX_FILE_NAME_LENGTH}, an error will be thrown.
|
|
19
|
+
*
|
|
15
20
|
* @param {VerifierLanguageType} languageExtension - The verifier contract language extension.
|
|
16
21
|
* @param {string} verifierNameSuffix - The optional verifier name suffix.
|
|
17
22
|
*/
|
|
@@ -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,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIxH;;GAEG;AACH,qBAAa,WAAW,CAAC,IAAI,SAAS,iBAAiB;IAEnD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,oBAAoB,CAAC,IAAI,CAAC;IAG3D;;;;;;;;;;;OAWG;IACU,cAAc,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBhH;;;;;OAKG;IACU,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBjE;;;;;;;;OAQG;IACU,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAOjF;;;;;;;;OAQG;IACU,WAAW,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAM9E;;;;;;OAMG;IACU,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAIpG;;;;OAIG;IACI,cAAc,IAAI,MAAM;IAI/B;;;;;;;OAOG;IACI,eAAe,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM;IAI3D;;;;OAIG;IACI,oBAAoB,IAAI,iBAAiB;IAIhD;;;;OAIG;IACI,mBAAmB,CAAC,iBAAiB,EAAE,oBAAoB,GAAG,MAAM;IAI3E;;;;;OAKG;IACI,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM;IAUpE;;;;;OAKG;IACI,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM;CAgCjE"}
|
package/dist/core/CircuitZKit.js
CHANGED
|
@@ -31,6 +31,8 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
31
31
|
const path_1 = __importDefault(require("path"));
|
|
32
32
|
const os = __importStar(require("os"));
|
|
33
33
|
const snarkjs = __importStar(require("snarkjs"));
|
|
34
|
+
const crypto_1 = require("crypto");
|
|
35
|
+
const constants_1 = require("../constants");
|
|
34
36
|
/**
|
|
35
37
|
* `CircuitZKit` represents a single circuit and provides a high-level API to work with it.
|
|
36
38
|
*/
|
|
@@ -45,12 +47,27 @@ class CircuitZKit {
|
|
|
45
47
|
* Creates a verifier contract for the specified contract language with optional name suffix.
|
|
46
48
|
* For more details regarding the structure of the contract verifier name, see {@link getVerifierName} description.
|
|
47
49
|
*
|
|
50
|
+
* In case the length of the verifier filename exceeds the {@link MAX_FILE_NAME_LENGTH},
|
|
51
|
+
* the `verifierNameSuffix` will be replaced by the first four bytes of its `sha1` hash.
|
|
52
|
+
*
|
|
53
|
+
* If no suffix was passed, but the verifier's filename still exceeds {@link MAX_FILE_NAME_LENGTH}, an error will be thrown.
|
|
54
|
+
*
|
|
48
55
|
* @param {VerifierLanguageType} languageExtension - The verifier contract language extension.
|
|
49
56
|
* @param {string} verifierNameSuffix - The optional verifier name suffix.
|
|
50
57
|
*/
|
|
51
58
|
async createVerifier(languageExtension, verifierNameSuffix) {
|
|
52
59
|
const vKeyFilePath = this.mustGetArtifactsFilePath("vkey");
|
|
53
|
-
|
|
60
|
+
let verifierFileName = `${this.getVerifierName(verifierNameSuffix)}.${languageExtension}`;
|
|
61
|
+
if (verifierFileName.length >= constants_1.MAX_FILE_NAME_LENGTH) {
|
|
62
|
+
const modifiedSuffix = verifierNameSuffix
|
|
63
|
+
? `_0x${(0, crypto_1.createHash)("sha1").update(verifierNameSuffix).digest("hex").slice(0, 8)}_`
|
|
64
|
+
: "";
|
|
65
|
+
verifierFileName = `${this.getVerifierName(modifiedSuffix)}.${languageExtension}`;
|
|
66
|
+
if (verifierFileName.length >= constants_1.MAX_FILE_NAME_LENGTH) {
|
|
67
|
+
throw new Error(`Verifier file name "${verifierFileName}" exceeds the maximum file name length`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const verifierFilePath = path_1.default.join(this._config.verifierDirPath, verifierFileName);
|
|
54
71
|
this._implementer.createVerifier(vKeyFilePath, verifierFilePath, languageExtension);
|
|
55
72
|
}
|
|
56
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,uCAAyB;AACzB,iDAAmC;
|
|
1
|
+
{"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/constants.ts
CHANGED
package/src/core/CircuitZKit.ts
CHANGED
|
@@ -2,11 +2,14 @@ import fs from "fs";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import * as os from "os";
|
|
4
4
|
import * as snarkjs from "snarkjs";
|
|
5
|
+
import { createHash } from "crypto";
|
|
5
6
|
|
|
6
7
|
import { ArtifactsFileType, CircuitZKitConfig, VerifierLanguageType } from "../types/circuit-zkit";
|
|
7
8
|
import { Signals } from "../types/proof-utils";
|
|
8
9
|
import { CalldataByProtocol, IProtocolImplementer, ProofStructByProtocol, ProvingSystemType } from "../types/protocols";
|
|
9
10
|
|
|
11
|
+
import { MAX_FILE_NAME_LENGTH } from "../constants";
|
|
12
|
+
|
|
10
13
|
/**
|
|
11
14
|
* `CircuitZKit` represents a single circuit and provides a high-level API to work with it.
|
|
12
15
|
*/
|
|
@@ -20,15 +23,32 @@ export class CircuitZKit<Type extends ProvingSystemType> {
|
|
|
20
23
|
* Creates a verifier contract for the specified contract language with optional name suffix.
|
|
21
24
|
* For more details regarding the structure of the contract verifier name, see {@link getVerifierName} description.
|
|
22
25
|
*
|
|
26
|
+
* In case the length of the verifier filename exceeds the {@link MAX_FILE_NAME_LENGTH},
|
|
27
|
+
* the `verifierNameSuffix` will be replaced by the first four bytes of its `sha1` hash.
|
|
28
|
+
*
|
|
29
|
+
* If no suffix was passed, but the verifier's filename still exceeds {@link MAX_FILE_NAME_LENGTH}, an error will be thrown.
|
|
30
|
+
*
|
|
23
31
|
* @param {VerifierLanguageType} languageExtension - The verifier contract language extension.
|
|
24
32
|
* @param {string} verifierNameSuffix - The optional verifier name suffix.
|
|
25
33
|
*/
|
|
26
34
|
public async createVerifier(languageExtension: VerifierLanguageType, verifierNameSuffix?: string): Promise<void> {
|
|
27
35
|
const vKeyFilePath: string = this.mustGetArtifactsFilePath("vkey");
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
)
|
|
36
|
+
|
|
37
|
+
let verifierFileName: string = `${this.getVerifierName(verifierNameSuffix)}.${languageExtension}`;
|
|
38
|
+
|
|
39
|
+
if (verifierFileName.length >= MAX_FILE_NAME_LENGTH) {
|
|
40
|
+
const modifiedSuffix: string = verifierNameSuffix
|
|
41
|
+
? `_0x${createHash("sha1").update(verifierNameSuffix).digest("hex").slice(0, 8)}_`
|
|
42
|
+
: "";
|
|
43
|
+
|
|
44
|
+
verifierFileName = `${this.getVerifierName(modifiedSuffix)}.${languageExtension}`;
|
|
45
|
+
|
|
46
|
+
if (verifierFileName.length >= MAX_FILE_NAME_LENGTH) {
|
|
47
|
+
throw new Error(`Verifier file name "${verifierFileName}" exceeds the maximum file name length`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const verifierFilePath = path.join(this._config.verifierDirPath, verifierFileName);
|
|
32
52
|
|
|
33
53
|
this._implementer.createVerifier(vKeyFilePath, verifierFilePath, languageExtension);
|
|
34
54
|
}
|