circom/circuits/barry.jaz
circuits/barry.jazRaw
1
2
3
4template AND() {
5 signal input a;
6 signal input b;
7 signal output c;
8
9 c <== a*b;
10}
11
12template AND3() {
13 signal input in1;
14 signal input in2;
15 signal input in3;
16 signal output out;
17
18 component and1 = AND();
19 component and2 = AND();
20
21 in1 ==> and1.a;
22 in2 ==> and1.b;
23 in3 ==> and2.a;
24 and1.c ==> and2.b;
25 and2.c ==> out;
26}
27
28template ToBin() {
29 signal input in;
30 signal output out[32];
31
32 var lc = 0;
33
34 for (var i=0; i<32; i++) {
35 out[i] <-- (in >> i) & 1;
36 lc = lc + out[i] * 2**i;
37 out[i]*(out[i]-1) === 0;
38 }
39
40 lc === in;
41}
42
43component main = ToBin();