diff --git a/lisp/jubjub-add.lisp b/lisp/jubjub-add.lisp index 9cf37a5b7..6b4470bab 100644 --- a/lisp/jubjub-add.lisp +++ b/lisp/jubjub-add.lisp @@ -35,6 +35,16 @@ (scalar::one B) (scalar::one C) ) + (enforce + (scalar::one C) + (scalar::one u3) + ((scalar::one A) (scalar::one B)) + ) + (enforce + (scalar::one::neg C) + (scalar::one v3) + ((scalar::one::neg U) (scalar::one::neg A) (scalar::one::neg B)) + ) ) ) ) diff --git a/lisp/types.rs b/lisp/types.rs index 4c4367a36..c26d6b3f1 100644 --- a/lisp/types.rs +++ b/lisp/types.rs @@ -6,6 +6,7 @@ use bellman::{ }; use std::ops::{Add, AddAssign, MulAssign, SubAssign}; use std::cell::RefCell; +use sapvi::bls_extensions::BlsStringConversion; use std::rc::Rc; //use std::collections::HashMap; use fnv::FnvHashMap; @@ -48,12 +49,18 @@ impl Circuit for LispCircuit { println!("Allocations\n"); for (k, v) in &self.allocs { - if let MalVal::ZKScalar(val) = v { - println!("val {:?}", val); - let var = cs.alloc(|| "alloc", || Ok(*val))?; - variables.insert(k.to_string(), var); - } else { - println!("k {:?} v {:?}", k, v); + // match str + match v { + MalVal::ZKScalar(val) => { + let var = cs.alloc(|| "alloc", || Ok(*val))?; + variables.insert(k.to_string(), var); + } + MalVal::Str(val) => { + let val_scalar = bls12_381::Scalar::from_string(&*val); + let var = cs.alloc(|| "alloc", || Ok(val_scalar))?; + variables.insert(k.to_string(), var); + } + _ => { println!("not allocated k {:?} v {:?}", k, v); } } } @@ -64,7 +71,7 @@ impl Circuit for LispCircuit { let var = cs.alloc_input(|| "alloc", || Ok(*val))?; variables.insert(k.to_string(), var); } else { - println!("k {:?} v {:?}", k, v); + println!("not allocated k {:?} v {:?}", k, v); } } @@ -96,6 +103,7 @@ impl Circuit for LispCircuit { } for values in alloc_value.right.iter() { + println!("{:?}", values); let (a, b) = values; let mut val_b = CS::one(); if b != "cs::one" {