kesto/circom-examples/circuits/equation.circom
circom-examples/circuits/equation.circomRaw
1include "../node_modules/circomlib/circuits/comparators.circom";
2
3/*
4 Circuit to check that prover knows a private inputs x & y,
5 such as x**a - y**b = 0, where a & b are known parameters.
6*/
7template Equation(a, b) {
8 signal private input x;
9 signal private input y;
10
11
12 signal aArray[a];
13 signal bArray[b];
14 for (var i=0; i<a; i++) {
15 if (i==0) {
16 aArray[0] <== x;
17 } else {
18 aArray[i] <== x * aArray[i-1];
19 }
20 }
21 for(var i=0; i<b; i++) {
22 if (i==0) {
23 bArray[0] <== y;
24 } else {
25 bArray[i] <== y * bArray[i-1];
26 }
27 }
28
29 component checkEq = IsEqual();
30 checkEq.in[0] <== aArray[a-1];
31 checkEq.in[1] <== bArray[b-1];
32 checkEq.out === 1;
33}
34
35component main = Equation(4, 8);