arnaucube
arnaucube/kestoPublic Self-hosted repository
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);