mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-06 21:34:00 -05:00
142 lines
3.5 KiB
Racket
142 lines
3.5 KiB
Racket
#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")
|
|
)
|
|
|
|
|