Browse Source

split zk functions from jj.rkt

narodnik 5 năm trước cách đây
mục cha
commit
b6a898a95c
2 tập tin đã thay đổi với 145 bổ sung117 xóa
  1. 4 117
      lisp/jj.rkt
  2. 141 0
      lisp/zk.rkt

+ 4 - 117
lisp/jj.rkt

@@ -1,111 +1,6 @@
 #lang racket
 
-(struct zk_variable 
-    (name type)
-)
-
-(define (zk_constant name hex_value)
-    (fprintf out "constant ~a ~a\n" name hex_value)
-    name
-)
-
-(define (zk_param name)
-    (fprintf out "param ~a\n" name)
-    (zk_variable name 'param)
-)
-
-(define (zk_public name)
-    (fprintf out "public ~a\n" name)
-    (zk_variable name 'public)
-)
-
-(define (strings->string sts)
-    (apply string-append sts))
-
-(define (apply_ns namespace name)
-    (strings->string
-        (append namespace
-            (list "__" (symbol->string name))
-        )))
-
-(define (zk_local namespace name)
-    (let ([name (apply_ns namespace name)])
-        (fprintf out "local ~a\n" name)
-        (zk_variable name 'local)
-    )
-)
-
-(define (zk_private namespace name)
-    (let ([name (apply_ns namespace name)])
-        (fprintf out "private ~a\n" name)
-        (zk_variable name 'private)
-    )
-)
-
-(define (zk_comment str)
-    (fprintf out "# ~a\n" str)
-)
-
-(define (zk_set self other)
-    (fprintf out "set ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
-)
-(define (zk_add self other)
-    (fprintf out "add ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
-)
-(define (zk_sub self other)
-    (fprintf out "sub ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
-)
-(define (zk_mul self other)
-    (fprintf out "mul ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
-)
-(define (zk_divide self other)
-    (fprintf out "divide ~a ~a\n"
-        (zk_variable-name self) (zk_variable-name other))
-)
-
-(define (zk_load self constant)
-    (fprintf out "load ~a ~a\n" (zk_variable-name self) constant)
-)
-
-(define (zk_lc0_add self)
-    (fprintf out "lc0_add ~a\n" (zk_variable-name self)))
-(define (zk_lc1_add self)
-    (fprintf out "lc1_add ~a\n" (zk_variable-name self)))
-(define (zk_lc2_add self)
-    (fprintf out "lc2_add ~a\n" (zk_variable-name self)))
-(define (zk_lc0_sub self)
-    (fprintf out "lc0_sub ~a\n" (zk_variable-name self)))
-(define (zk_lc1_sub self)
-    (fprintf out "lc1_sub ~a\n" (zk_variable-name self)))
-(define (zk_lc2_sub self)
-    (fprintf out "lc2_sub ~a\n" (zk_variable-name self)))
-(define (zk_lc0_add_coeff constant self)
-    (fprintf out "lc0_add_coeff ~a ~a\n" constant (zk_variable-name self)))
-(define (zk_lc1_add_coeff constant self)
-    (fprintf out "lc1_add_coeff ~a ~a\n" constant (zk_variable-name self)))
-(define (zk_lc2_add_coeff constant self)
-    (fprintf out "lc2_add_coeff ~a ~a\n" constant (zk_variable-name self)))
-(define (zk_lc0_add_one)
-    (fprintf out "lc0_add_one\n"))
-(define (zk_lc1_add_one)
-    (fprintf out "lc1_add_one\n"))
-(define (zk_lc2_add_one)
-    (fprintf out "lc2_add_one\n"))
-(define (zk_enforce)
-    (fprintf out "enforce\n")
-)
-
-(define (zk_distance namespace result x y)
-    (let ([namespace (append namespace (list "_distance"))])
-        (zk_set result x)
-        (zk_mul result x)
-        (let ([tmp (zk_local namespace 'tmp)])
-            (zk_set tmp y)
-            (zk_mul tmp y)
-            (zk_add result tmp)
-        )
-    )
-)
+(require "zk.rkt")
 
 (struct jj_point
     (u v)
@@ -201,26 +96,18 @@
     )
 )
 
-(define-syntax-rule (create_param name)
-    (define name (zk_param 'name))
-)
-(define-syntax-rule (create_public name)
-    (define name (zk_public 'name))
-)
-
-(define out (open-output-file "jj.psm" #:exists 'truncate))
+(create_zk_output "jj.psm")
 
 (define const_d (zk_constant
     "d" "0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1"))
 (define const_one (zk_constant
     "one" "0x0000000000000000000000000000000000000000000000000000000000000001"))
 
-(fprintf out "contract foo\n")
+(zk_contract_begin "foo")
 (define namespace (list "_"))
 (define a (create_jj_param_point "a"))
 (define b (create_jj_param_point "b"))
 (define result (create_jj_public_point "result"))
-;(zk_distance (list "_") result x y)
 (zk_jj_add namespace result a b)
-(fprintf out "end\n")
+(zk_contract_end)
 

+ 141 - 0
lisp/zk.rkt

@@ -0,0 +1,141 @@
+#lang racket
+
+(provide zk_variable)
+(provide zk_constant)
+(provide zk_param)
+(provide zk_public)
+(provide zk_local)
+(provide zk_private)
+(provide zk_comment)
+(provide zk_set)
+(provide zk_add)
+(provide zk_sub)
+(provide zk_mul)
+(provide zk_divide)
+(provide zk_load)
+(provide zk_lc0_add)
+(provide zk_lc1_add)
+(provide zk_lc2_add)
+(provide zk_lc0_sub)
+(provide zk_lc1_sub)
+(provide zk_lc2_sub)
+(provide zk_lc0_add_coeff)
+(provide zk_lc1_add_coeff)
+(provide zk_lc2_add_coeff)
+(provide zk_lc0_add_one)
+(provide zk_lc1_add_one)
+(provide zk_lc2_add_one)
+(provide zk_enforce)
+
+(provide create_zk_output)
+(provide zk_contract_begin)
+(provide zk_contract_end)
+
+(define out '0)
+(define (create_zk_output filename)
+    (set! out (open-output-file "jj.psm" #:exists 'truncate))
+)
+
+(struct zk_variable 
+    (name type)
+)
+
+(define (zk_constant name hex_value)
+    (fprintf out "constant ~a ~a\n" name hex_value)
+    name
+)
+
+(define (zk_contract_begin contract_name)
+    (fprintf out "contract ~a\n" contract_name)
+)
+(define (zk_contract_end)
+    (fprintf out "end\n")
+)
+
+(define (zk_param name)
+    (fprintf out "param ~a\n" name)
+    (zk_variable name 'param)
+)
+
+(define (zk_public name)
+    (fprintf out "public ~a\n" name)
+    (zk_variable name 'public)
+)
+
+(define (strings->string sts)
+    (apply string-append sts))
+
+(define (apply_ns namespace name)
+    (strings->string
+        (append namespace
+            (list "__" (symbol->string name))
+        )))
+
+(define (zk_local namespace name)
+    (let ([name (apply_ns namespace name)])
+        (fprintf out "local ~a\n" name)
+        (zk_variable name 'local)
+    )
+)
+
+(define (zk_private namespace name)
+    (let ([name (apply_ns namespace name)])
+        (fprintf out "private ~a\n" name)
+        (zk_variable name 'private)
+    )
+)
+
+(define (zk_comment str)
+    (fprintf out "# ~a\n" str)
+)
+
+(define (zk_set self other)
+    (fprintf out "set ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
+)
+(define (zk_add self other)
+    (fprintf out "add ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
+)
+(define (zk_sub self other)
+    (fprintf out "sub ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
+)
+(define (zk_mul self other)
+    (fprintf out "mul ~a ~a\n" (zk_variable-name self) (zk_variable-name other))
+)
+(define (zk_divide self other)
+    (fprintf out "divide ~a ~a\n"
+        (zk_variable-name self) (zk_variable-name other))
+)
+
+(define (zk_load self constant)
+    (fprintf out "load ~a ~a\n" (zk_variable-name self) constant)
+)
+
+(define (zk_lc0_add self)
+    (fprintf out "lc0_add ~a\n" (zk_variable-name self)))
+(define (zk_lc1_add self)
+    (fprintf out "lc1_add ~a\n" (zk_variable-name self)))
+(define (zk_lc2_add self)
+    (fprintf out "lc2_add ~a\n" (zk_variable-name self)))
+(define (zk_lc0_sub self)
+    (fprintf out "lc0_sub ~a\n" (zk_variable-name self)))
+(define (zk_lc1_sub self)
+    (fprintf out "lc1_sub ~a\n" (zk_variable-name self)))
+(define (zk_lc2_sub self)
+    (fprintf out "lc2_sub ~a\n" (zk_variable-name self)))
+(define (zk_lc0_add_coeff constant self)
+    (fprintf out "lc0_add_coeff ~a ~a\n" constant (zk_variable-name self)))
+(define (zk_lc1_add_coeff constant self)
+    (fprintf out "lc1_add_coeff ~a ~a\n" constant (zk_variable-name self)))
+(define (zk_lc2_add_coeff constant self)
+    (fprintf out "lc2_add_coeff ~a ~a\n" constant (zk_variable-name self)))
+(define (zk_lc0_add_one)
+    (fprintf out "lc0_add_one\n"))
+(define (zk_lc1_add_one)
+    (fprintf out "lc1_add_one\n"))
+(define (zk_lc2_add_one)
+    (fprintf out "lc2_add_one\n"))
+(define (zk_enforce)
+    (fprintf out "enforce\n")
+)
+
+