Browse Source

zk/gadget/range_check: Set k=5 and test illegal cases for 64 bits.

parazyd 4 years ago
parent
commit
8615ff2241
1 changed files with 13 additions and 14 deletions
  1. 13 14
      src/zk/gadget/range_check.rs

+ 13 - 14
src/zk/gadget/range_check.rs

@@ -247,15 +247,13 @@ mod tests {
             pallas::Base::from(rand::random::<u64>()),
             pallas::Base::from(rand::random::<u64>()),
         ];
         ];
 
 
-        /*
         let invalid_64bit = vec![
         let invalid_64bit = vec![
-            pallas::Base::from(u64::MAX as u128 + 1),
-            pallas::Base::from(-1),
-            pallas::Base::from(-u64::MAX),
+            -pallas::Base::one(),
+            pallas::Base::from_u128(u64::MAX as u128 + 1),
+            -pallas::Base::from(u64::MAX),
         ];
         ];
-        */
 
 
-        let k = 8;
+        let k = 5;
 
 
         use plotters::prelude::*;
         use plotters::prelude::*;
         let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> {
         let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> {
@@ -264,20 +262,21 @@ mod tests {
         let root = BitMapBackend::new("target/rangecheck_circuit_layout.png", (3840, 2160))
         let root = BitMapBackend::new("target/rangecheck_circuit_layout.png", (3840, 2160))
             .into_drawing_area();
             .into_drawing_area();
         root.fill(&WHITE).unwrap();
         root.fill(&WHITE).unwrap();
-        let root = root.titled("Arithmetic Circuit Layout", ("sans-serif", 60)).unwrap();
+        let root = root.titled("Range Check Circuit Layout", ("sans-serif", 60)).unwrap();
         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();
         }
         }
+
+        for val in invalid_64bit {
+            println!("64-bit range check for {:?}", val);
+            let circuit = RangeCheckCircuit::<pallas::Base, 3, 64, 22> { value: Value::known(val) };
+            let prover = MockProver::run(k, &circuit, vec![]).unwrap();
+            assert!(prover.verify().is_err());
+        }
     }
     }
-    // #[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(()));
-    // }
 }
 }