Fix plonk solidity generation when zeros

This commit is contained in:
Jordi Baylina 2021-05-31 23:06:10 +02:00
parent a8cdc8083d
commit e9fb96c976
No known key found for this signature in database
GPG Key ID: 7480C80C1BE43112
6 changed files with 23 additions and 15 deletions

@ -5335,7 +5335,9 @@ async function plonkVk(zkey) {
S2: curve.G1.toObject(zkey.S2), S2: curve.G1.toObject(zkey.S2),
S3: curve.G1.toObject(zkey.S3), S3: curve.G1.toObject(zkey.S3),
X_2: curve.G2.toObject(zkey.X_2) X_2: curve.G2.toObject(zkey.X_2),
w: curve.Fr.toObject(curve.Fr.w[zkey.power])
}; };
vKey = stringifyBigInts$1(vKey); vKey = stringifyBigInts$1(vKey);

@ -5892,7 +5892,9 @@ async function plonkVk(zkey) {
S2: curve.G1.toObject(zkey.S2), S2: curve.G1.toObject(zkey.S2),
S3: curve.G1.toObject(zkey.S3), S3: curve.G1.toObject(zkey.S3),
X_2: curve.G2.toObject(zkey.X_2) X_2: curve.G2.toObject(zkey.X_2),
w: curve.Fr.toObject(curve.Fr.w[zkey.power])
}; };
vKey = stringifyBigInts$2(vKey); vKey = stringifyBigInts$2(vKey);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -101,7 +101,9 @@ async function plonkVk(zkey) {
S2: curve.G1.toObject(zkey.S2), S2: curve.G1.toObject(zkey.S2),
S3: curve.G1.toObject(zkey.S3), S3: curve.G1.toObject(zkey.S3),
X_2: curve.G2.toObject(zkey.X_2) X_2: curve.G2.toObject(zkey.X_2),
w: curve.Fr.toObject(curve.Fr.w[zkey.power])
}; };
vKey = stringifyBigInts(vKey); vKey = stringifyBigInts(vKey);

@ -28,21 +28,21 @@ contract PlonkVerifier {
uint16 constant nLagrange = <%=Math.max(nPublic, 1)%>; uint16 constant nLagrange = <%=Math.max(nPublic, 1)%>;
uint256 constant Qmx = <%=Qm[0]%>; uint256 constant Qmx = <%=Qm[0]%>;
uint256 constant Qmy = <%=Qm[1]%>; uint256 constant Qmy = <%=Qm[0] == "0" ? "0" : Qm[1]%>;
uint256 constant Qlx = <%=Ql[0]%>; uint256 constant Qlx = <%=Ql[0]%>;
uint256 constant Qly = <%=Ql[1]%>; uint256 constant Qly = <%=Ql[0] == "0" ? "0" : Ql[1]%>;
uint256 constant Qrx = <%=Qr[0]%>; uint256 constant Qrx = <%=Qr[0]%>;
uint256 constant Qry = <%=Qr[1]%>; uint256 constant Qry = <%=Qr[0] == "0" ? "0" : Qr[1]%>;
uint256 constant Qox = <%=Qo[0]%>; uint256 constant Qox = <%=Qo[0]%>;
uint256 constant Qoy = <%=Qo[1]%>; uint256 constant Qoy = <%=Qo[0] == "0" ? "0" : Qo[1]%>;
uint256 constant Qcx = <%=Qc[0]%>; uint256 constant Qcx = <%=Qc[0]%>;
uint256 constant Qcy = <%=Qc[1]%>; uint256 constant Qcy = <%=Qc[0] == "0" ? "0" : Qc[1]%>;
uint256 constant S1x = <%=S1[0]%>; uint256 constant S1x = <%=S1[0]%>;
uint256 constant S1y = <%=S1[1]%>; uint256 constant S1y = <%=S1[0] == "0" ? "0" : S1[1]%>;
uint256 constant S2x = <%=S2[0]%>; uint256 constant S2x = <%=S2[0]%>;
uint256 constant S2y = <%=S2[1]%>; uint256 constant S2y = <%=S2[0] == "0" ? "0" : S2[1]%>;
uint256 constant S3x = <%=S3[0]%>; uint256 constant S3x = <%=S3[0]%>;
uint256 constant S3y = <%=S3[1]%>; uint256 constant S3y = <%=S3[0] == "0" ? "0" : S3[1]%>;
uint256 constant k1 = 2; uint256 constant k1 = 2;
uint256 constant k2 = 3; uint256 constant k2 = 3;
uint256 constant X2x1 = <%=X_2[0][0]%>; uint256 constant X2x1 = <%=X_2[0][0]%>;
@ -52,7 +52,7 @@ contract PlonkVerifier {
uint256 constant q = 21888242871839275222246405745257275088548364400416034343698204186575808495617; uint256 constant q = 21888242871839275222246405745257275088548364400416034343698204186575808495617;
uint256 constant qf = 21888242871839275222246405745257275088696311157297823662689037894645226208583; uint256 constant qf = 21888242871839275222246405745257275088696311157297823662689037894645226208583;
uint256 constant w1 = 19540430494807482326159819597004422086093766032135589407132600596362845576832; uint256 constant w1 = <%=w%>;
uint256 constant G1x = 1; uint256 constant G1x = 1;
uint256 constant G1y = 2; uint256 constant G1y = 2;