Преглед на файлове

zk: Move export_witness_json() to zk module.

zkas should be kept dependency-free.
parazyd преди 2 години
родител
ревизия
54ad30201f
променени са 4 файла, в които са добавени 52 реда и са изтрити 54 реда
  1. 0 2
      Cargo.toml
  2. 52 0
      src/zk/mod.rs
  3. 0 3
      src/zkas/mod.rs
  4. 0 49
      src/zkas/util.rs

+ 0 - 2
Cargo.toml

@@ -314,8 +314,6 @@ zk = [
 
 zkas = [
     "darkfi-serial",
-
-    "zk",
 ]
 # -----END LIBRARY FEATURES-----
 

+ 52 - 0
src/zk/mod.rs

@@ -58,3 +58,55 @@ where
         |mut region| region.assign_advice(|| "load private", column, 0, || value),
     )
 }
+
+#[cfg(feature = "tinyjson")]
+use darkfi_sdk::pasta::pallas;
+#[cfg(feature = "tinyjson")]
+use std::{collections::HashMap, fs::File, io::Write, path::Path};
+#[cfg(feature = "tinyjson")]
+use tinyjson::JsonValue::{Array as JsonArray, Object as JsonObj, String as JsonStr};
+
+#[cfg(feature = "tinyjson")]
+/// Export witness.json which can be used by zkrunner for debugging circuits
+pub fn export_witness_json<P: AsRef<Path>>(
+    output_path: P,
+    prover_witnesses: &Vec<Witness>,
+    public_inputs: &Vec<pallas::Base>,
+) {
+    let mut witnesses = Vec::new();
+    for witness in prover_witnesses {
+        let mut value_json = HashMap::new();
+        match witness {
+            Witness::Base(value) => {
+                value.map(|w1| {
+                    value_json.insert("Base".to_string(), JsonStr(format!("{:?}", w1)));
+                    w1
+                });
+            }
+            Witness::Scalar(value) => {
+                value.map(|w1| {
+                    value_json.insert("Scalar".to_string(), JsonStr(format!("{:?}", w1)));
+                    w1
+                });
+            }
+            _ => unimplemented!(),
+        }
+        witnesses.push(JsonObj(value_json));
+    }
+
+    let mut instances = Vec::new();
+    for instance in public_inputs {
+        instances.push(JsonStr(format!("{:?}", instance)));
+    }
+
+    let witnesses_json = JsonArray(witnesses);
+    let instances_json = JsonArray(instances);
+    let witness_json = JsonObj(HashMap::from([
+        ("witnesses".to_string(), witnesses_json),
+        ("instances".to_string(), instances_json),
+    ]));
+    // This is a debugging method. We don't care about .expect() crashing.
+    let json = witness_json.format().expect("cannot create debug json");
+    let mut output = File::create(output_path).expect("cannot write file");
+    output.write_all(json.as_bytes()).expect("write failed");
+}

+ 0 - 3
src/zkas/mod.rs

@@ -56,6 +56,3 @@ pub use compiler::Compiler;
 /// Decoder module
 pub mod decoder;
 pub use decoder::ZkBinary;
-
-#[cfg(feature = "tinyjson")]
-pub mod util;

+ 0 - 49
src/zkas/util.rs

@@ -1,49 +0,0 @@
-use darkfi_sdk::pasta::pallas;
-use std::{collections::HashMap, fs::File, io::Write, path::Path};
-use tinyjson::JsonValue::{Array as JsonArray, Object as JsonObj, String as JsonStr};
-
-use crate::zk::Witness;
-
-/// Export witness.json which can be used by zkrunner for debugging circuits
-pub fn export_witness_json<P: AsRef<Path>>(
-    output_path: P,
-    prover_witnesses: &Vec<Witness>,
-    public_inputs: &Vec<pallas::Base>,
-) {
-    let mut witnesses = Vec::new();
-    for witness in prover_witnesses {
-        let mut value_json = HashMap::new();
-        match witness {
-            Witness::Base(value) => {
-                value.map(|w1| {
-                    value_json.insert("Base".to_string(), JsonStr(format!("{:?}", w1)));
-                    w1
-                });
-            }
-            Witness::Scalar(value) => {
-                value.map(|w1| {
-                    value_json.insert("Scalar".to_string(), JsonStr(format!("{:?}", w1)));
-                    w1
-                });
-            }
-            _ => unimplemented!(),
-        }
-        witnesses.push(JsonObj(value_json));
-    }
-
-    let mut instances = Vec::new();
-    for instance in public_inputs {
-        instances.push(JsonStr(format!("{:?}", instance)));
-    }
-
-    let witnesses_json = JsonArray(witnesses);
-    let instances_json = JsonArray(instances);
-    let witness_json = JsonObj(HashMap::from([
-        ("witnesses".to_string(), witnesses_json),
-        ("instances".to_string(), instances_json),
-    ]));
-    // This is a debugging method. We don't care about .expect() crashing.
-    let json = witness_json.format().expect("cannot create debug json");
-    let mut output = File::create(output_path).expect("cannot write file");
-    output.write_all(json.as_bytes()).expect("write failed");
-}