From 024188b63826a2ed615e2835a44eae8e3f3a7e43 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Thu, 5 Sep 2019 17:10:20 +0200 Subject: [PATCH 1/3] Support mutiply by point 0 in scalarmulany --- circuits/escalarmulany.circom | 16 ++++++++++------ circuits/escalarmulfix.circom | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/circuits/escalarmulany.circom b/circuits/escalarmulany.circom index 50c0c7e..3f6aec4 100644 --- a/circuits/escalarmulany.circom +++ b/circuits/escalarmulany.circom @@ -19,6 +19,7 @@ include "montgomery.circom"; include "babyjub.circom"; +include "comparators.circom"; template Multiplexor2() { signal input sel; @@ -138,6 +139,8 @@ template EscalarMulAny(n) { component doublers[nsegments-1]; component m2e[nsegments-1]; component adders[nsegments-1]; + component zeropoint = IsZero(); + zeropoint.in <== p[0]; var s; var i; @@ -154,8 +157,9 @@ template EscalarMulAny(n) { } if (s==0) { - p[0] ==> segments[s].p[0]; - p[1] ==> segments[s].p[1]; + // force G8 point if input point is zero + segments[s].p[0] <== p[0] + (5299619240641551281634865583518297030282874472190772894086521144482721001553 - p[0])*zeropoint.out; + segments[s].p[1] <== p[1] + (16950150798460657717958625567821834550301663161624707787222815936182638968203 - p[1])*zeropoint.out; } else { doublers[s-1] = MontgomeryDouble(); m2e[s-1] = Montgomery2Edwards(); @@ -183,10 +187,10 @@ template EscalarMulAny(n) { } if (nsegments == 1) { - segments[0].out[0] ==> out[0]; - segments[0].out[1] ==> out[1]; + segments[0].out[0]*(1-zeropoint.out) ==> out[0]; + segments[0].out[1]+(1-segments[0].out[1])*zeropoint.out ==> out[1]; } else { - adders[nsegments-2].xout ==> out[0]; - adders[nsegments-2].yout ==> out[1]; + adders[nsegments-2].xout*(1-zeropoint.out) ==> out[0]; + adders[nsegments-2].yout+(1-adders[nsegments-2].yout)*zeropoint.out ==> out[1]; } } diff --git a/circuits/escalarmulfix.circom b/circuits/escalarmulfix.circom index e8262c0..8e3e031 100644 --- a/circuits/escalarmulfix.circom +++ b/circuits/escalarmulfix.circom @@ -246,7 +246,7 @@ template EscalarMulFix(n, BASE) { var s; var i; var nseg; - var nWindows + var nWindows; for (s=0; s Date: Thu, 5 Sep 2019 17:12:47 +0200 Subject: [PATCH 2/3] deps snarkjs --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 822da2e..5e8e06e 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "blake-hash": "^1.1.0", "blake2b": "^2.1.3", - "snarkjs": "^0.1.18", + "snarkjs": "^0.1.19", "typedarray-to-buffer": "^3.1.5", "web3": "^1.0.0-beta.55" }, From f9e048466356cbdcfdf1d30eb192cae2eb1c3cd0 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Thu, 5 Sep 2019 17:12:56 +0200 Subject: [PATCH 3/3] 0.0.15 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index d6415fc..133e910 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "circomlib", - "version": "0.0.14", + "version": "0.0.15", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5e8e06e..50cb5f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "circomlib", - "version": "0.0.14", + "version": "0.0.15", "description": "Basic circuits library for Circom", "main": "index.js", "directories": {