Skip to content

Commit

Permalink
Merge pull request #5 from zkmopro/dat
Browse files Browse the repository at this point in the history
feat: load .dat from build folder
  • Loading branch information
vivianjeng authored Feb 1, 2025
2 parents b5132b4 + 8f5440b commit 1ae99fa
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 19 deletions.
24 changes: 9 additions & 15 deletions tests/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,16 @@ witnesscalc_adapter::witness!(multiplier2);
witnesscalc_adapter::witness!(keccak256_256_test);
witnesscalc_adapter::witness!(rsa_main);

pub fn create_witness(inputs: HashMap<String, Vec<BigInt>>, dat_file_path: &str) -> Vec<BigInt> {
multiplier2_witness(inputs, dat_file_path)
pub fn create_witness(inputs: HashMap<String, Vec<BigInt>>) -> Vec<BigInt> {
multiplier2_witness(inputs)
}

pub fn create_keccak256_256_test_witness(
inputs: HashMap<String, Vec<BigInt>>,
dat_file_path: &str,
) -> Vec<BigInt> {
keccak256_256_test_witness(inputs, dat_file_path)
pub fn create_keccak256_256_test_witness(inputs: HashMap<String, Vec<BigInt>>) -> Vec<BigInt> {
keccak256_256_test_witness(inputs)
}

pub fn create_rsa_main_witness(
inputs: HashMap<String, Vec<BigInt>>,
dat_file_path: &str,
) -> Vec<BigInt> {
rsa_main_witness(inputs, dat_file_path)
pub fn create_rsa_main_witness(inputs: HashMap<String, Vec<BigInt>>) -> Vec<BigInt> {
rsa_main_witness(inputs)
}

#[cfg(test)]
Expand All @@ -44,7 +38,7 @@ mod test {
inputs.insert("a".to_string(), vec![a]);
inputs.insert("b".to_string(), vec![b]);

let result = create_witness(inputs, "./testdata/multiplier2.dat");
let result = create_witness(inputs);

assert_eq!(result.len(), 4);
assert_eq!(result[0], BigInt::from(1u8));
Expand All @@ -66,7 +60,7 @@ mod test {

use std::time::Instant;
let start = Instant::now();
let _ = create_keccak256_256_test_witness(inputs, "./testdata/keccak256_256_test.dat");
let _ = create_keccak256_256_test_witness(inputs);
let end = Instant::now();
println!(
"Time taken for keccak256_256_test: {:?}",
Expand Down Expand Up @@ -205,7 +199,7 @@ mod test {

use std::time::Instant;
let start = Instant::now();
let _ = create_rsa_main_witness(inputs_bigint, "./testdata/rsa_main.dat");
let _ = create_rsa_main_witness(inputs_bigint);
let end = Instant::now();
println!("Time taken for rsa_main: {:?}", end.duration_since(start));
}
Expand Down
10 changes: 6 additions & 4 deletions witnesscalc_adapter/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ pub mod convert_witness;
macro_rules! witness {
($x: ident) => {
$crate::paste::paste! {
#[allow(non_upper_case_globals)]
const [<$x _CIRCUIT_DATA>]: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/witnesscalc/src/", stringify!($x), ".dat"));
#[link(name = "witnesscalc_" [<$x>], kind = "static")]
extern "C" {
fn [<witnesscalc_ $x>](
Expand All @@ -27,7 +29,7 @@ macro_rules! witness {
}
}
$crate::paste::item! {
pub fn [<$x _witness>]<I: IntoIterator<Item = (String, Vec<num_bigint::BigInt>)>>(inputs: I, dat_file_path: &str) -> Vec<num_bigint::BigInt> {
pub fn [<$x _witness>]<I: IntoIterator<Item = (String, Vec<num_bigint::BigInt>)>>(inputs: I) -> Vec<num_bigint::BigInt> {
println!("Generating witness for circuit {}", stringify!($x));
unsafe {
//TODO: refactor the C++ code in witnesscalc to not rely on JSON but take the inputs directly?
Expand All @@ -44,9 +46,9 @@ macro_rules! witness {
let json_input = std::ffi::CString::new($crate::serde_json::to_string(&json).expect("Failed to serialize JSON")).unwrap();
let json_size = json_input.as_bytes().len() as std::ffi::c_ulong;

let circuit_data = std::fs::read(dat_file_path).unwrap();
let circuit_buffer = circuit_data.as_ptr() as *const std::ffi::c_char;
let circuit_size = circuit_data.len() as std::ffi::c_ulong;
let circuit_buffer = [<$x _CIRCUIT_DATA>].as_ptr() as *const std::ffi::c_char;
let circuit_size = [<$x _CIRCUIT_DATA>].len() as std::ffi::c_ulong;


//TODO dynamically allocate the buffer?
let mut wtns_buffer = vec![0u8; 100 * 1024 * 1024]; // 8 MB buffer
Expand Down

0 comments on commit 1ae99fa

Please sign in to comment.