ada 5 лет назад
Родитель
Сommit
6a663cf0b7
2 измененных файлов с 17 добавлено и 5 удалено
  1. 2 3
      lisp/lisp.rs
  2. 15 2
      lisp/types.rs

+ 2 - 3
lisp/lisp.rs

@@ -300,8 +300,7 @@ fn eval(mut ast: MalVal, mut env: Env) -> MalRet {
                     }
                     Sym(ref a0sym) if a0sym == "setup" => {
                         let a1 = l[1].clone();
-                        let circuit = setup(&ast, env.clone())?;
-                        env_sets(&env, ZK_CIRCUIT_ENV_KEY, circuit);
+                        setup(a1.clone(), env.clone())?;
                         eval(a1.clone(), env.clone())
                     }
                     Sym(ref a0sym) if a0sym == "prove" => {
@@ -389,7 +388,7 @@ pub fn env_circuit(mut env: Env) -> MalVal {
     }
 }
 
-pub fn setup(ast: &MalVal, mut env: Env) -> MalRet {
+pub fn setup(ast: MalVal, mut env: Env) -> MalRet {
     println!("{:?}", ast);
     // TODO get params from ast
     let start = Instant::now();

+ 15 - 2
lisp/types.rs

@@ -14,12 +14,18 @@ use crate::types::MalVal::{Atom, Bool, Func, Hash, Int, List, MalFunc, Nil, Str,
 use bls12_381::Scalar;
 use sapvi::{BlsStringConversion, ConstraintInstruction};
 
+#[derive(Debug, Clone)]
+pub struct Allocation {
+    pub symbol: String,
+    pub value: Scalar
+}
+
 #[derive(Debug, Clone)]
 pub struct LispCircuit {
     // TODO refactor to vec
     pub params: Vec<Option<Scalar>>,
-    pub allocs: Vec<Option<Scalar>>,
-    pub alloc_inputs: Vec<Option<Scalar>>,
+    pub allocs: Vec<Option<Allocation>>,
+    pub alloc_inputs: Vec<Option<Allocation>>,
     pub constraints: Vec<Option<Scalar>>,
     pub env: Env,
 }
@@ -29,6 +35,13 @@ impl Circuit<bls12_381::Scalar> for LispCircuit {
         self,
         cs: &mut CS,
     ) -> Result<(), SynthesisError> {
+        
+        for alloc_value in &self.allocs {
+//            let var = cs.alloc(|| "private alloc", ||)?;
+            // TODO use env  
+            println!("{:?}", alloc_value);
+        }
+
         Ok(())
     }
 }