Browse Source

zk/gadget/range_check: Fixed chunk to value mapping of decomposed_chunks

Janmajaya Mall 4 years ago
parent
commit
6a4aaa2297
1 changed files with 9 additions and 3 deletions
  1. 9 3
      src/zk/gadget/range_check.rs

+ 9 - 3
src/zk/gadget/range_check.rs

@@ -132,7 +132,7 @@ impl<F: FieldExt + PrimeFieldBits, const WINDOW_SIZE: usize> RangeCheckChip<F, W
             let z_next = {
             let z_next = {
                 let z_curr = z.value().copied();
                 let z_curr = z.value().copied();
                 let chunk_value =
                 let chunk_value =
-                    chunk.map(|c| F::from(c.iter().fold(0, |acc, c| (acc << 1) + *c as u64)));
+                    chunk.map(|c| F::from(c.iter().rev().fold(0, |acc, c| (acc << 1) + *c as u64)));
                 // z_next = (z_curr - k_i) / 2^K
                 // z_next = (z_curr - k_i) / 2^K
                 let z_next = (z_curr - chunk_value) * two_pow_k_inverse;
                 let z_next = (z_curr - chunk_value) * two_pow_k_inverse;
                 region.assign_advice(
                 region.assign_advice(
@@ -255,7 +255,7 @@ mod tests {
         ];
         ];
         */
         */
 
 
-        let k = 5;
+        let k = 8;
 
 
         use plotters::prelude::*;
         use plotters::prelude::*;
         let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> {
         let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> {
@@ -268,10 +268,16 @@ mod tests {
         CircuitLayout::default().render(k, &circuit, &root).unwrap();
         CircuitLayout::default().render(k, &circuit, &root).unwrap();
 
 
         for val in valid_64bit {
         for val in valid_64bit {
-            println!("64-bit range check for {:?}", val);
             let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> { value: Value::known(val) };
             let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> { value: Value::known(val) };
             let prover = MockProver::run(k, &circuit, vec![]).unwrap();
             let prover = MockProver::run(k, &circuit, vec![]).unwrap();
             prover.assert_satisfied();
             prover.assert_satisfied();
         }
         }
     }
     }
+    // #[test]
+    // fn test_bit_64() {
+    //     let value = pallas::Base::from(rand::random::<u64>());
+    //     let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> { value: Value::known(value) };
+    //     let prover = MockProver::run(8, &circuit, vec![]).unwrap();
+    //     assert_eq!(prover.verify(), Ok(()));
+    // }
 }
 }