jubjub-mul.lisp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. (println "jubjub-mul.lisp")
  2. (def! param4 (scalar "015d8c7f5b43fe33f7891142c001d9251f3abeeb98fad3e87b0dc53c4ebf1891"))
  3. (def! param3 (scalar "15a36d1f0f390d8852a35a8c1908dd87a361ee3fd48fdf77b9819dc82d90607e"))
  4. (def! param2 (scalar "015d8c7f5b43fe33f7891142c001d9251f3abeeb98fad3e87b0dc53c4ebf1891"))
  5. (def! param1 (scalar "15a36d1f0f390d8852a35a8c1908dd87a361ee3fd48fdf77b9819dc82d90607e"))
  6. (setup
  7. (prove
  8. (
  9. (def! zk-square (fn* [var] (
  10. (def! result (alloc "square-var" (square var)))
  11. (enforce
  12. (scalar::one square-var)
  13. (scalar::one square-var)
  14. (scalar::one result)
  15. )
  16. )
  17. ))
  18. (def! u1 (alloc "u1" param1))
  19. (def! v1 (alloc "v1" param2))
  20. (def! u2 (alloc "u2" param3))
  21. (def! v2 (alloc "v2" param4))
  22. (def! EDWARDS_D (alloc-const "EDWARDS_D" (scalar "2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1")))
  23. (def! U (alloc "U" (* (+ u1 v1) (+ u2 v2))))
  24. (def! A (alloc "A" (* v2 u1)))
  25. (def! B (alloc "B" (* u2 v1)))
  26. (def! C (alloc "C" (* EDWARDS_D (* A B))))
  27. (def! u3 (alloc-input "u3" (/ (+ A B) (+ scalar::one C))))
  28. (def! v3 (alloc-input "v3" (/ (- (- U A) B) (- scalar::one C))))
  29. (println 'square (zk-square param1))
  30. (
  31. (enforce
  32. ((scalar::one u1) (scalar::one v1))
  33. ((scalar::one u2) (scalar::one v2))
  34. (scalar::one U)
  35. )
  36. (enforce
  37. (EDWARDS_D A)
  38. (scalar::one B)
  39. (scalar::one C)
  40. )
  41. (enforce
  42. ((scalar::one cs::one)(scalar::one C))
  43. (scalar::one u3)
  44. ((scalar::one A) (scalar::one B))
  45. )
  46. (enforce
  47. ((scalar::one cs::one) (scalar::one::neg C))
  48. (scalar::one v3)
  49. ((scalar::one U) (scalar::one::neg A) (scalar::one::neg B))
  50. )
  51. )
  52. )
  53. )
  54. )