Compare commits
4 Commits
ee79410f42
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 672b738d06 | |||
|
|
733c435f66 | ||
|
|
ae4309e189 | ||
|
|
869181cfaf |
6
cli.js
Executable file → Normal file
6
cli.js
Executable file → Normal file
@@ -446,7 +446,7 @@ function generateVerifier_original(verificationKey) {
|
|||||||
|
|
||||||
// The points
|
// The points
|
||||||
|
|
||||||
template = template.replace("<%vk_input_length%>", (verificationKey.IC.length-1).toString());
|
template = template.replace(/<%vk_input_length%>/g, (verificationKey.IC.length-1).toString());
|
||||||
template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString());
|
template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString());
|
||||||
let vi = "";
|
let vi = "";
|
||||||
for (let i=0; i<verificationKey.IC.length; i++) {
|
for (let i=0; i<verificationKey.IC.length; i++) {
|
||||||
@@ -488,7 +488,7 @@ function generateVerifier_groth(verificationKey) {
|
|||||||
|
|
||||||
// The points
|
// The points
|
||||||
|
|
||||||
template = template.replace("<%vk_input_length%>", (verificationKey.IC.length-1).toString());
|
template = template.replace(/<%vk_input_length%>/g, (verificationKey.IC.length-1).toString());
|
||||||
template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString());
|
template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString());
|
||||||
let vi = "";
|
let vi = "";
|
||||||
for (let i=0; i<verificationKey.IC.length; i++) {
|
for (let i=0; i<verificationKey.IC.length; i++) {
|
||||||
@@ -529,7 +529,7 @@ function generateVerifier_kimleeoh(verificationKey) {
|
|||||||
|
|
||||||
// The points
|
// The points
|
||||||
|
|
||||||
template = template.replace("<%vk_input_length%>", (verificationKey.IC.length-1).toString());
|
template = template.replace(/<%vk_input_length%>/g, (verificationKey.IC.length-1).toString());
|
||||||
template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString());
|
template = template.replace("<%vk_ic_length%>", verificationKey.IC.length.toString());
|
||||||
let vi = "";
|
let vi = "";
|
||||||
for (let i=0; i<verificationKey.IC.length; i++) {
|
for (let i=0; i<verificationKey.IC.length; i++) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "snarkjs",
|
"name": "@tornado/snarkjs",
|
||||||
"version": "0.1.20",
|
"version": "0.1.20",
|
||||||
"description": "zkSNARKs implementation in JavaScript",
|
"description": "zkSNARKs implementation in JavaScript",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/iden3/snarkjs.git"
|
"url": "https://git.tornado.ws/tornado-packages/snarkjs"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"big-integer": "^1.6.43",
|
"big-integer": "^1.6.43",
|
||||||
|
|||||||
@@ -220,4 +220,9 @@ contract Verifier {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function verifyProof(bytes calldata proof, uint[<%vk_input_length%>] calldata inputs) external view returns (bool r) {
|
||||||
|
// solidity does not support decoding uint[2][2] yet
|
||||||
|
(uint[2] memory a, uint[2] memory b1, uint[2] memory b2, uint[2] memory c) = abi.decode(proof, (uint[2], uint[2], uint[2], uint[2]));
|
||||||
|
return verifyProof(a, [b1, b2], c, inputs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,4 +211,9 @@ contract Verifier {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function verifyProof(bytes calldata proof, uint[<%vk_input_length%>] calldata inputs) external view returns (bool r) {
|
||||||
|
// solidity does not support decoding uint[2][2] yet
|
||||||
|
(uint[2] memory a, uint[2] memory b1, uint[2] memory b2, uint[2] memory c) = abi.decode(proof, (uint[2], uint[2], uint[2], uint[2]));
|
||||||
|
return verifyProof(a, [b1, b2], c, inputs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -238,6 +238,21 @@ contract Verifier {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function verifyProof(bytes calldata proof, uint[<%vk_input_length%>] calldata inputs) external view returns (bool r) {
|
||||||
|
// solidity does not support decoding uint[2][2] yet
|
||||||
|
(
|
||||||
|
uint[2] memory a,
|
||||||
|
uint[2] memory a_p,
|
||||||
|
uint[2] memory b1,
|
||||||
|
uint[2] memory b2,
|
||||||
|
uint[2] memory b_p,
|
||||||
|
uint[2] memory c,
|
||||||
|
uint[2] memory c_p,
|
||||||
|
uint[2] memory h,
|
||||||
|
uint[2] memory k
|
||||||
|
) = abi.decode(proof, (uint[2], uint[2], uint[2], uint[2], uint[2], uint[2], uint[2], uint[2], uint[2]));
|
||||||
|
return verifyProof(a, a_p, [b1, b2], b_p, c, c_p, h, k, inputs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user