circomlib/circuit/babyjub.circom
circuit/babyjub.circomRaw
1
2
3template BabyAdd() {
4 signal input x1;
5 signal input y1;
6 signal input x2;
7 signal input y2;
8 signal output xout;
9 signal output yout;
10
11 signal beta;
12 signal gamma;
13 signal delta;
14 signal epsilon;
15 signal tau;
16
17 var a = 168700;
18 var d = 168696;
19
20 beta <== x1*y2;
21 gamma <== y1*x2;
22 delta <== y1*y2;
23 epsilon <== x1*x2;
24 tau <== delta * epsilon;
25
26 xout <-- (beta + gamma) / (1+ d*tau);
27 (1+ d*tau) * xout === (beta + gamma);
28
29 yout <-- (delta - a * epsilon) / (1-d*tau);
30 (1-d*tau)*yout === (delta - a * epsilon);
31}