Skip to content

Commit

Permalink
randomized blob generation and testing
Browse files Browse the repository at this point in the history
  • Loading branch information
anupsv committed May 23, 2024
1 parent d30a0fb commit 071779a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 15 deletions.
29 changes: 14 additions & 15 deletions src/kzg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -565,28 +565,27 @@ fn test_compute_kzg_proof_rand(){
).unwrap();

let mut rng = rand::thread_rng();
let random_blob: Vec<u8> = (0..4095).map(|_| rng.gen_range(32..=126) as u8).collect();
let input = Blob::from_bytes_and_pad(&random_blob);
let input_poly = input.to_polynomial().unwrap();

for index in 0..10 {
// let index = rand::thread_rng().gen_range(0..input_poly.len());

for _ in 0..10 {

let blob_length = rand::thread_rng().gen_range(0..65000);
let random_blob: Vec<u8> = (0..blob_length).map(|_| rng.gen_range(32..=126) as u8).collect();
println!("generating blob of length is {}", blob_length);

let input = Blob::from_bytes_and_pad(&random_blob);
let input_poly = input.to_polynomial().unwrap();
kzg.data_setup_custom(4, input.len().try_into().unwrap()).unwrap();
let mut rand_index = rand::thread_rng().gen_range(0..kzg.expanded_roots_of_unity.len());
loop {
if index == rand_index{
rand_index = rand::thread_rng().gen_range(0..kzg.expanded_roots_of_unity.len());
} else {
break;
}
}

let index = rand::thread_rng().gen_range(0..input_poly.get_length_of_padded_blob_as_fr_vector());
let commitment = kzg.commit(&input_poly.clone()).unwrap();
let proof = kzg.compute_kzg_proof_with_roots_of_unity(&input_poly, index.try_into().unwrap()).unwrap();
let value_fr = input_poly.get_at_index(index).unwrap();
let z_fr = kzg.get_nth_root_of_unity(index).unwrap();
let pairing_result = kzg.verify_kzg_proof(commitment, proof, value_fr.clone(), z_fr.clone());
assert_eq!(pairing_result, true);
assert_eq!(kzg.verify_kzg_proof(commitment, proof, value_fr.clone(), kzg.get_nth_root_of_unity(rand_index).unwrap().clone()), false)

// take random index, not the same index and check
assert_eq!(kzg.verify_kzg_proof(commitment, proof, value_fr.clone(), kzg.get_nth_root_of_unity((index+1)%input_poly.get_length_of_padded_blob_as_fr_vector()).unwrap().clone()), false)
}
}

Expand Down
4 changes: 4 additions & 0 deletions src/polynomial.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ impl Polynomial {
Ok(Polynomial { elements: padded_input_fr, length_of_padded_blob, length_of_padded_blob_as_fr_vector: elements.len() })
}

pub fn get_length_of_padded_blob_as_fr_vector(&self) -> usize {
self.length_of_padded_blob_as_fr_vector
}

/// Returns the number of elements in the polynomial.
pub fn len(&self) -> usize {
self.elements.len()
Expand Down

0 comments on commit 071779a

Please sign in to comment.