@solarity/zkit 0.2.1 → 0.2.2
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/core/CircuitZKit.d.ts +0 -8
- package/dist/core/CircuitZKit.d.ts.map +1 -1
- package/dist/core/CircuitZKit.js +0 -15
- package/dist/core/CircuitZKit.js.map +1 -1
- package/dist/core/templates/verifier_groth16.sol.ejs +14 -14
- package/dist/types/circuit-zkit.d.ts +2 -4
- package/dist/types/circuit-zkit.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/CircuitZKit.ts +0 -17
- package/src/core/templates/verifier_groth16.sol.ejs +14 -14
- package/src/types/circuit-zkit.ts +2 -2
|
@@ -16,14 +16,6 @@ export declare class CircuitZKit {
|
|
|
16
16
|
* Creates a Solidity verifier contract.
|
|
17
17
|
*/
|
|
18
18
|
createVerifier(): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Creates a witness for the given inputs.
|
|
21
|
-
*
|
|
22
|
-
* @dev The `inputs` should be in the same order as the circuit expects them.
|
|
23
|
-
*
|
|
24
|
-
* @param {Inputs} inputs - The inputs for the circuit.
|
|
25
|
-
*/
|
|
26
|
-
createWitness(inputs: Inputs): Promise<void>;
|
|
27
19
|
/**
|
|
28
20
|
* Generates a proof for the given inputs.
|
|
29
21
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitZKit.d.ts","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB;IAEvD;;;;;OAKG;WACW,WAAW,CAAC,YAAY,EAAE,oBAAoB,GAAG,MAAM;IASrE;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5C
|
|
1
|
+
{"version":3,"file":"CircuitZKit.d.ts","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB;IAEvD;;;;;OAKG;WACW,WAAW,CAAC,YAAY,EAAE,oBAAoB,GAAG,MAAM;IASrE;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5C;;;;;;;;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,cAAc,IAAI,MAAM;IAI/B;;;;OAIG;IACI,eAAe,IAAI,MAAM;IAIhC;;;;OAIG;IACI,eAAe,IAAI,oBAAoB;IAI9C;;;;;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
|
@@ -68,18 +68,6 @@ class CircuitZKit {
|
|
|
68
68
|
const verifierCode = ejs_1.default.render(verifierTemplate, templateParams);
|
|
69
69
|
fs_1.default.writeFileSync(verifierFilePath, verifierCode, "utf-8");
|
|
70
70
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Creates a witness for the given inputs.
|
|
73
|
-
*
|
|
74
|
-
* @dev The `inputs` should be in the same order as the circuit expects them.
|
|
75
|
-
*
|
|
76
|
-
* @param {Inputs} inputs - The inputs for the circuit.
|
|
77
|
-
*/
|
|
78
|
-
async createWitness(inputs) {
|
|
79
|
-
const wasmFile = this.mustGetArtifactsFilePath("wasm");
|
|
80
|
-
const wtnsFile = this.getArtifactsFilePath("wtns");
|
|
81
|
-
await snarkjs.wtns.calculate(inputs, wasmFile, wtnsFile);
|
|
82
|
-
}
|
|
83
71
|
/**
|
|
84
72
|
* Generates a proof for the given inputs.
|
|
85
73
|
*
|
|
@@ -182,9 +170,6 @@ class CircuitZKit {
|
|
|
182
170
|
case "json":
|
|
183
171
|
fileName = `${circuitName}_constraints.json`;
|
|
184
172
|
break;
|
|
185
|
-
case "wtns":
|
|
186
|
-
fileName = `${circuitName}.wtns`;
|
|
187
|
-
break;
|
|
188
173
|
case "wasm":
|
|
189
174
|
fileName = `${circuitName}.wasm`;
|
|
190
175
|
fileDir = path_1.default.join(fileDir, `${circuitName}_js`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,4CAAoB;AACpB,gDAAwB;AACxB,iDAAmC;AAWnC;;GAEG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAE3D;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,YAAkC;QAC1D,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,SAAS;gBACZ,OAAO,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,0BAA0B,CAAC,EAAE,MAAM,CAAC,CAAC;YAChG;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,GAAG,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;QACzB,MAAM,YAAY,GAAW,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAElG,MAAM,gBAAgB,GAAW,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAEjF,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACjD,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvD,MAAM,YAAY,GAAG,aAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAElE,YAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"CircuitZKit.js","sourceRoot":"","sources":["../../src/core/CircuitZKit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,4CAAoB;AACpB,gDAAwB;AACxB,iDAAmC;AAWnC;;GAEG;AACH,MAAa,WAAW;IACO;IAA7B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAE3D;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,YAAkC;QAC1D,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,SAAS;gBACZ,OAAO,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,0BAA0B,CAAC,EAAE,MAAM,CAAC,CAAC;YAChG;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,GAAG,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;QACzB,MAAM,YAAY,GAAW,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAElG,MAAM,gBAAgB,GAAW,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QAEjF,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACjD,YAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,cAAc,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvD,MAAM,YAAY,GAAG,aAAG,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAElE,YAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,aAAa,CAAC,MAAc;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAEvD,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAgB,CAAC;IACtF,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,WAAW,CAAC,KAAkB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAElE,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,gBAAgB,CAAC,KAAkB;QAC9C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QAEhG,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAa,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACI,eAAe;QACpB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,UAAU,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,SAAS,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACI,wBAAwB,CAAC,QAA2B;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACI,oBAAoB,CAAC,QAA2B;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAE1C,IAAI,QAAgB,CAAC;QACrB,IAAI,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAExD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM;gBACT,QAAQ,GAAG,GAAG,WAAW,OAAO,CAAC;gBACjC,MAAM;YACR,KAAK,MAAM;gBACT,QAAQ,GAAG,GAAG,WAAW,OAAO,CAAC;gBACjC,MAAM;YACR,KAAK,MAAM;gBACT,QAAQ,GAAG,GAAG,WAAW,YAAY,CAAC;gBACtC,MAAM;YACR,KAAK,KAAK;gBACR,QAAQ,GAAG,GAAG,WAAW,MAAM,CAAC;gBAChC,MAAM;YACR,KAAK,MAAM;gBACT,QAAQ,GAAG,GAAG,WAAW,mBAAmB,CAAC;gBAC7C,MAAM;YACR,KAAK,MAAM;gBACT,QAAQ,GAAG,GAAG,WAAW,OAAO,CAAC;gBACjC,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,KAAK,CAAC,CAAC;gBAClD,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,GAAG,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;CACF;AAtKD,kCAsKC"}
|
|
@@ -48,10 +48,10 @@ contract <%=verifier_id%> {
|
|
|
48
48
|
uint16 public constant P_LAST_MEM = 896;
|
|
49
49
|
|
|
50
50
|
function verifyProof(
|
|
51
|
-
uint256[2]
|
|
52
|
-
uint256[2][2]
|
|
53
|
-
uint256[2]
|
|
54
|
-
uint256[<%=IC.length-1%>]
|
|
51
|
+
uint256[2] memory pA_,
|
|
52
|
+
uint256[2][2] memory pB_,
|
|
53
|
+
uint256[2] memory pC_,
|
|
54
|
+
uint256[<%=IC.length-1%>] memory pubSignals_
|
|
55
55
|
) public view returns (bool) {
|
|
56
56
|
assembly {
|
|
57
57
|
function checkField(v) {
|
|
@@ -96,21 +96,21 @@ contract <%=verifier_id%> {
|
|
|
96
96
|
mstore(add(pVk_, 32), IC0_Y)
|
|
97
97
|
|
|
98
98
|
/// @dev Compute the linear combination vk_x
|
|
99
|
-
<% for (let i = 1; i <= nPublic; i++) { %>g1MulAccC(pVk_, IC<%=i%>_X, IC<%=i%>_Y,
|
|
99
|
+
<% for (let i = 1; i <= nPublic; i++) { %>g1MulAccC(pVk_, IC<%=i%>_X, IC<%=i%>_Y, mload(add(pubSignals, <%=(i-1)*32%>)))
|
|
100
100
|
<% } -%>
|
|
101
101
|
|
|
102
102
|
/// @dev -A
|
|
103
|
-
mstore(pPairing_,
|
|
103
|
+
mstore(pPairing_, mload(pA))
|
|
104
104
|
mstore(
|
|
105
105
|
add(pPairing_, 32),
|
|
106
|
-
mod(sub(BASE_FIELD_SIZE,
|
|
106
|
+
mod(sub(BASE_FIELD_SIZE, mload(add(pA, 32))), BASE_FIELD_SIZE)
|
|
107
107
|
)
|
|
108
108
|
|
|
109
109
|
/// @dev B
|
|
110
|
-
mstore(add(pPairing_, 64),
|
|
111
|
-
mstore(add(pPairing_, 96),
|
|
112
|
-
mstore(add(pPairing_, 128),
|
|
113
|
-
mstore(add(pPairing_, 160),
|
|
110
|
+
mstore(add(pPairing_, 64), mload(mload(pB)))
|
|
111
|
+
mstore(add(pPairing_, 96), mload(add(mload(pB), 32)))
|
|
112
|
+
mstore(add(pPairing_, 128), mload(mload(add(pB, 32))))
|
|
113
|
+
mstore(add(pPairing_, 160), mload(add(mload(add(pB, 32)), 32)))
|
|
114
114
|
|
|
115
115
|
/// @dev alpha1
|
|
116
116
|
mstore(add(pPairing_, 192), ALPHA_X)
|
|
@@ -133,8 +133,8 @@ contract <%=verifier_id%> {
|
|
|
133
133
|
mstore(add(pPairing_, 544), GAMMA_Y2)
|
|
134
134
|
|
|
135
135
|
/// @dev C
|
|
136
|
-
mstore(add(pPairing_, 576),
|
|
137
|
-
mstore(add(pPairing_, 608),
|
|
136
|
+
mstore(add(pPairing_, 576), mload(pC))
|
|
137
|
+
mstore(add(pPairing_, 608), mload(add(pC, 32)))
|
|
138
138
|
|
|
139
139
|
/// @dev delta2
|
|
140
140
|
mstore(add(pPairing_, 640), DELTA_X1)
|
|
@@ -151,7 +151,7 @@ contract <%=verifier_id%> {
|
|
|
151
151
|
mstore(0x40, add(pMem_, P_LAST_MEM))
|
|
152
152
|
|
|
153
153
|
/// @dev Validate that all evaluations ∈ F
|
|
154
|
-
<% for (let i = 0; i < IC.length; i++) { %>checkField(
|
|
154
|
+
<% for (let i = 0; i < IC.length; i++) { %>checkField(mload(add(pubSignals_, <%=i*32%>)))
|
|
155
155
|
<% } -%>
|
|
156
156
|
|
|
157
157
|
/// @dev Validate all evaluations
|
|
@@ -20,9 +20,7 @@ export type Calldata = [
|
|
|
20
20
|
NumericString,
|
|
21
21
|
NumericString
|
|
22
22
|
],
|
|
23
|
-
|
|
24
|
-
NumericString
|
|
25
|
-
]
|
|
23
|
+
PublicSignals
|
|
26
24
|
];
|
|
27
25
|
export type ProofStruct = {
|
|
28
26
|
proof: Groth16Proof;
|
|
@@ -32,7 +30,7 @@ export type NumberLike = number | bigint | string;
|
|
|
32
30
|
export type ArrayLike = NumberLike[] | ArrayLike[];
|
|
33
31
|
export type InputLike = NumberLike | ArrayLike;
|
|
34
32
|
export type Inputs = Record<string, InputLike>;
|
|
35
|
-
export type ArtifactsFileType = "r1cs" | "zkey" | "vkey" | "sym" | "json" | "wasm"
|
|
33
|
+
export type ArtifactsFileType = "r1cs" | "zkey" | "vkey" | "sym" | "json" | "wasm";
|
|
36
34
|
export type VerifierTemplateType = "groth16";
|
|
37
35
|
export type CircuitZKitConfig = {
|
|
38
36
|
circuitName: string;
|
|
@@ -1 +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
|
|
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,aAAa;CACd,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"}
|
package/package.json
CHANGED
package/src/core/CircuitZKit.ts
CHANGED
|
@@ -54,20 +54,6 @@ export class CircuitZKit {
|
|
|
54
54
|
fs.writeFileSync(verifierFilePath, verifierCode, "utf-8");
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
/**
|
|
58
|
-
* Creates a witness for the given inputs.
|
|
59
|
-
*
|
|
60
|
-
* @dev The `inputs` should be in the same order as the circuit expects them.
|
|
61
|
-
*
|
|
62
|
-
* @param {Inputs} inputs - The inputs for the circuit.
|
|
63
|
-
*/
|
|
64
|
-
public async createWitness(inputs: Inputs): Promise<void> {
|
|
65
|
-
const wasmFile = this.mustGetArtifactsFilePath("wasm");
|
|
66
|
-
const wtnsFile = this.getArtifactsFilePath("wtns");
|
|
67
|
-
|
|
68
|
-
await snarkjs.wtns.calculate(inputs, wasmFile, wtnsFile);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
57
|
/**
|
|
72
58
|
* Generates a proof for the given inputs.
|
|
73
59
|
*
|
|
@@ -185,9 +171,6 @@ export class CircuitZKit {
|
|
|
185
171
|
case "json":
|
|
186
172
|
fileName = `${circuitName}_constraints.json`;
|
|
187
173
|
break;
|
|
188
|
-
case "wtns":
|
|
189
|
-
fileName = `${circuitName}.wtns`;
|
|
190
|
-
break;
|
|
191
174
|
case "wasm":
|
|
192
175
|
fileName = `${circuitName}.wasm`;
|
|
193
176
|
fileDir = path.join(fileDir, `${circuitName}_js`);
|
|
@@ -48,10 +48,10 @@ contract <%=verifier_id%> {
|
|
|
48
48
|
uint16 public constant P_LAST_MEM = 896;
|
|
49
49
|
|
|
50
50
|
function verifyProof(
|
|
51
|
-
uint256[2]
|
|
52
|
-
uint256[2][2]
|
|
53
|
-
uint256[2]
|
|
54
|
-
uint256[<%=IC.length-1%>]
|
|
51
|
+
uint256[2] memory pA_,
|
|
52
|
+
uint256[2][2] memory pB_,
|
|
53
|
+
uint256[2] memory pC_,
|
|
54
|
+
uint256[<%=IC.length-1%>] memory pubSignals_
|
|
55
55
|
) public view returns (bool) {
|
|
56
56
|
assembly {
|
|
57
57
|
function checkField(v) {
|
|
@@ -96,21 +96,21 @@ contract <%=verifier_id%> {
|
|
|
96
96
|
mstore(add(pVk_, 32), IC0_Y)
|
|
97
97
|
|
|
98
98
|
/// @dev Compute the linear combination vk_x
|
|
99
|
-
<% for (let i = 1; i <= nPublic; i++) { %>g1MulAccC(pVk_, IC<%=i%>_X, IC<%=i%>_Y,
|
|
99
|
+
<% for (let i = 1; i <= nPublic; i++) { %>g1MulAccC(pVk_, IC<%=i%>_X, IC<%=i%>_Y, mload(add(pubSignals, <%=(i-1)*32%>)))
|
|
100
100
|
<% } -%>
|
|
101
101
|
|
|
102
102
|
/// @dev -A
|
|
103
|
-
mstore(pPairing_,
|
|
103
|
+
mstore(pPairing_, mload(pA))
|
|
104
104
|
mstore(
|
|
105
105
|
add(pPairing_, 32),
|
|
106
|
-
mod(sub(BASE_FIELD_SIZE,
|
|
106
|
+
mod(sub(BASE_FIELD_SIZE, mload(add(pA, 32))), BASE_FIELD_SIZE)
|
|
107
107
|
)
|
|
108
108
|
|
|
109
109
|
/// @dev B
|
|
110
|
-
mstore(add(pPairing_, 64),
|
|
111
|
-
mstore(add(pPairing_, 96),
|
|
112
|
-
mstore(add(pPairing_, 128),
|
|
113
|
-
mstore(add(pPairing_, 160),
|
|
110
|
+
mstore(add(pPairing_, 64), mload(mload(pB)))
|
|
111
|
+
mstore(add(pPairing_, 96), mload(add(mload(pB), 32)))
|
|
112
|
+
mstore(add(pPairing_, 128), mload(mload(add(pB, 32))))
|
|
113
|
+
mstore(add(pPairing_, 160), mload(add(mload(add(pB, 32)), 32)))
|
|
114
114
|
|
|
115
115
|
/// @dev alpha1
|
|
116
116
|
mstore(add(pPairing_, 192), ALPHA_X)
|
|
@@ -133,8 +133,8 @@ contract <%=verifier_id%> {
|
|
|
133
133
|
mstore(add(pPairing_, 544), GAMMA_Y2)
|
|
134
134
|
|
|
135
135
|
/// @dev C
|
|
136
|
-
mstore(add(pPairing_, 576),
|
|
137
|
-
mstore(add(pPairing_, 608),
|
|
136
|
+
mstore(add(pPairing_, 576), mload(pC))
|
|
137
|
+
mstore(add(pPairing_, 608), mload(add(pC, 32)))
|
|
138
138
|
|
|
139
139
|
/// @dev delta2
|
|
140
140
|
mstore(add(pPairing_, 640), DELTA_X1)
|
|
@@ -151,7 +151,7 @@ contract <%=verifier_id%> {
|
|
|
151
151
|
mstore(0x40, add(pMem_, P_LAST_MEM))
|
|
152
152
|
|
|
153
153
|
/// @dev Validate that all evaluations ∈ F
|
|
154
|
-
<% for (let i = 0; i < IC.length; i++) { %>checkField(
|
|
154
|
+
<% for (let i = 0; i < IC.length; i++) { %>checkField(mload(add(pubSignals_, <%=i*32%>)))
|
|
155
155
|
<% } -%>
|
|
156
156
|
|
|
157
157
|
/// @dev Validate all evaluations
|
|
@@ -14,7 +14,7 @@ export type Calldata = [
|
|
|
14
14
|
[NumericString, NumericString],
|
|
15
15
|
[[NumericString, NumericString], [NumericString, NumericString]],
|
|
16
16
|
[NumericString, NumericString],
|
|
17
|
-
|
|
17
|
+
PublicSignals,
|
|
18
18
|
];
|
|
19
19
|
|
|
20
20
|
export type ProofStruct = {
|
|
@@ -28,7 +28,7 @@ export type InputLike = NumberLike | ArrayLike;
|
|
|
28
28
|
|
|
29
29
|
export type Inputs = Record<string, InputLike>;
|
|
30
30
|
|
|
31
|
-
export type ArtifactsFileType = "r1cs" | "zkey" | "vkey" | "sym" | "json" | "wasm"
|
|
31
|
+
export type ArtifactsFileType = "r1cs" | "zkey" | "vkey" | "sym" | "json" | "wasm";
|
|
32
32
|
export type VerifierTemplateType = "groth16";
|
|
33
33
|
|
|
34
34
|
export type CircuitZKitConfig = {
|