diff --git a/lisp/jubjub.lisp b/lisp/jubjub.lisp index 4058a193b..f06d59fdd 100644 --- a/lisp/jubjub.lisp +++ b/lisp/jubjub.lisp @@ -1,38 +1,19 @@ - (def! D "0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1") - (def! ONE "0x0000000000000000000000000000000000000000000000000000000000000001") - (def! jj-add (fn* [x1 y1 x2 y2] (println x1 y1 x2 y2 D ONE))) - (jj-add 1 2 3 4) -;; (def! U (mul (add (x1 y1)) (add (x2 y2)))) -;; (enforce -;; (add_lc0 (x1 y1)) -;; (add_lc1 (x2 y2)) -;; (add_lc2 U)) -;; (def A (mul (x2 x1))) -;; (def B (mul (x2 y1))) -;; (def C (mul (C_ONE A))) -;; (enforce -;; (add_coeff_lc0 (C_D A)) -;; (add_lc1 B) -;; (add_lc2 C)) -;; (def Px -;; (div (add A B) -;; (add C_ONE C))) -;; (enforce -;; (add_one_lc0) -;; (sub_lc0 C) -;; (add_lc1 Px) -;; (add_lc2 (A B))) -;; -;; (def Py -;; (div (sub U A B) -;; (sub C_ONE C))) -;; (enforce -;; (add_one_lc0) -;; (sub_lc0 C) -;; (add_lc1 Py) -;; (add_lc2 (U A B))) -;; (Px Py) -;; ) +(def! D "0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1") +(def! ONE "0x0000000000000000000000000000000000000000000000000000000000000001") +(def! jj-add (fn* [x1 y1 x2 y2] ( + (def! U (mul (add (x1 y1)) (add (x2 y2)))) + (enforce (add-lc0 (x1 y1)) (add-lc1 (x2 y2)) (add-lc2 U)) + (def! A (mul (x2 x1))) + (def! B (mul (x2 y1))) + (def! C (mul (ONE A))) + (enforce (add-coeff-lc0 (D A)) (add-lc1 B) (add-lc2 C)) + (def! Px (div (add A B) (add C_ONE C))) + (enforce (add-one-lc0) (sub-lc0 C) (add-lc1 Px) (add-lc2 (A B))) + + (def! Py (div (sub U A B) (sub C_ONE C))) + (enforce (add-one-lc0) (sub-lc0 C) (add-lc1 Py) (add-lc2 (U A B))) + (Px Py) +))) ;; (def input_spend (contract x1 y1 x2 y2) ( ;; (def P (jjadd (x1 y1 x2 y2))) ;; (enforce @@ -44,4 +25,3 @@ ;; (add_lc1_one) ;; (add_lc2 Py)) ;; ) -