add methods to load circuit from reader
This commit is contained in:
parent
aed734275e
commit
dbff653bb8
@ -4,7 +4,12 @@ extern crate bellman_ce;
|
|||||||
|
|
||||||
use std::str;
|
use std::str;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use std::fs::OpenOptions;
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
|
use std::io::{
|
||||||
|
Read,
|
||||||
|
Write,
|
||||||
|
};
|
||||||
|
|
||||||
use bellman_ce::pairing::{
|
use bellman_ce::pairing::{
|
||||||
Engine,
|
Engine,
|
||||||
@ -50,14 +55,30 @@ pub struct CircomCircuit<E: Engine> {
|
|||||||
|
|
||||||
impl<'a, E: Engine> CircomCircuit<E> {
|
impl<'a, E: Engine> CircomCircuit<E> {
|
||||||
pub fn load_witness_json_file(&mut self, filename: &str) {
|
pub fn load_witness_json_file(&mut self, filename: &str) {
|
||||||
let witness: Vec<String> = serde_json::from_str(&fs::read_to_string(filename).unwrap()).unwrap();
|
let reader = OpenOptions::new()
|
||||||
|
.read(true)
|
||||||
|
.open(filename)
|
||||||
|
.expect("unable to open.");
|
||||||
|
self.load_witness_json(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn load_witness_json<R: Read>(&mut self, reader: R) {
|
||||||
|
let witness: Vec<String> = serde_json::from_reader(reader).unwrap();
|
||||||
let witness = witness.into_iter().map(|x| E::Fr::from_str(&x).unwrap()).collect::<Vec<E::Fr>>();
|
let witness = witness.into_iter().map(|x| E::Fr::from_str(&x).unwrap()).collect::<Vec<E::Fr>>();
|
||||||
self.inputs = witness[..self.num_inputs].to_vec();
|
self.inputs = witness[..self.num_inputs].to_vec();
|
||||||
self.aux = witness[self.num_inputs..].to_vec();
|
self.aux = witness[self.num_inputs..].to_vec();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn from_json_file(filename: &str) -> CircomCircuit::<E> {
|
pub fn from_json_file(filename: &str) -> CircomCircuit::<E> {
|
||||||
let circuit_json: CircuitJson = serde_json::from_str(&fs::read_to_string(filename).unwrap()).unwrap();
|
let reader = OpenOptions::new()
|
||||||
|
.read(true)
|
||||||
|
.open(filename)
|
||||||
|
.expect("unable to open.");
|
||||||
|
return CircomCircuit::from_json(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn from_json<R: Read>(reader: R) -> CircomCircuit::<E> {
|
||||||
|
let circuit_json: CircuitJson = serde_json::from_reader(reader).unwrap();
|
||||||
|
|
||||||
let num_inputs = circuit_json.num_inputs + circuit_json.num_outputs + 1;
|
let num_inputs = circuit_json.num_inputs + circuit_json.num_outputs + 1;
|
||||||
let num_aux = circuit_json.num_variables - num_inputs;
|
let num_aux = circuit_json.num_variables - num_inputs;
|
||||||
|
Loading…
Reference in New Issue
Block a user