From db08d499f394ac6c8a3c699ab04755b984798ff1 Mon Sep 17 00:00:00 2001 From: porcuquine Date: Fri, 25 Sep 2020 12:35:26 -0700 Subject: [PATCH] Make cache internally optional again. --- .../porep/src/stacked/circuit/create_label.rs | 22 +++++++++++---- .../stacked/vanilla/create_label/single.rs | 8 +++--- .../porep/src/stacked/vanilla/graph.rs | 28 +++++++++++++++---- 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/storage-proofs/porep/src/stacked/circuit/create_label.rs b/storage-proofs/porep/src/stacked/circuit/create_label.rs index 4a1dc59c35..746907e32b 100644 --- a/storage-proofs/porep/src/stacked/circuit/create_label.rs +++ b/storage-proofs/porep/src/stacked/circuit/create_label.rs @@ -85,7 +85,7 @@ mod tests { use crate::stacked::vanilla::{create_label, StackedBucketGraph, EXP_DEGREE, TOTAL_PARENTS}; #[test] - fn test_create_label_multi() { + fn test_create_label() { let mut cs = TestConstraintSystem::::new(); let rng = &mut XorShiftRng::from_seed(crate::TEST_SEED); @@ -165,17 +165,27 @@ mod tests { assert_eq!(cs.num_constraints(), 532_025); let (l1, l2) = data.split_at_mut(size * NODE_SIZE); - // FIXME: Update this test. - create_label::multi::create_label( - &mut graph.parent_cache().unwrap(), - &fr_into_bytes(&id_fr), + create_label::single::create_label_exp( + &graph, + None, + fr_into_bytes(&id_fr), &*l2, l1, layer, node, - false, ) .unwrap(); + + // create_label::single::create_label( + // &graph, + // Some(&mut graph.parent_cache().unwrap()), + // &fr_into_bytes(&id_fr), + // // &*l2, + // l2, + // layer, + // node, + // ) + // .unwrap(); let expected_raw = data_at_node(&l1, node).unwrap(); let expected = bytes_into_fr(expected_raw).unwrap(); diff --git a/storage-proofs/porep/src/stacked/vanilla/create_label/single.rs b/storage-proofs/porep/src/stacked/vanilla/create_label/single.rs index b272af5c81..2c65d72aa7 100644 --- a/storage-proofs/porep/src/stacked/vanilla/create_label/single.rs +++ b/storage-proofs/porep/src/stacked/vanilla/create_label/single.rs @@ -42,7 +42,7 @@ pub fn create_labels>( for node in 0..graph.size() { create_label( graph, - parents_cache, + Some(parents_cache), &replica_id, &mut layer_labels, layer, @@ -53,7 +53,7 @@ pub fn create_labels>( for node in 0..graph.size() { create_label_exp( graph, - parents_cache, + Some(parents_cache), &replica_id, &exp_labels, &mut layer_labels, @@ -106,7 +106,7 @@ pub fn create_labels>( pub fn create_label>( graph: &StackedBucketGraph, - cache: &mut ParentCache, + cache: Option<&mut ParentCache>, replica_id: T, layer_labels: &mut [u8], layer_index: usize, @@ -143,7 +143,7 @@ pub fn create_label>( pub fn create_label_exp>( graph: &StackedBucketGraph, - cache: &mut ParentCache, + cache: Option<&mut ParentCache>, replica_id: T, exp_parents_data: &[u8], layer_labels: &mut [u8], diff --git a/storage-proofs/porep/src/stacked/vanilla/graph.rs b/storage-proofs/porep/src/stacked/vanilla/graph.rs index 72482d504b..7040137459 100644 --- a/storage-proofs/porep/src/stacked/vanilla/graph.rs +++ b/storage-proofs/porep/src/stacked/vanilla/graph.rs @@ -146,10 +146,18 @@ where base_data: &[u8], exp_data: &[u8], hasher: Sha256, - cache: &mut ParentCache, + mut cache: Option<&mut ParentCache>, ) -> Result<[u8; 32]> { - let cache_parents = cache.read(node as u32)?; - Ok(self.copy_parents_data_inner_exp(&cache_parents, base_data, exp_data, hasher)) + if let Some(ref mut cache) = cache { + let cache_parents = cache.read(node as u32)?; + Ok(self.copy_parents_data_inner_exp(&cache_parents, base_data, exp_data, hasher)) + } else { + let mut cache_parents = [0u32; DEGREE]; + + self.parents(node as usize, &mut cache_parents[..]) + .expect("parents failure"); + Ok(self.copy_parents_data_inner_exp(&cache_parents, base_data, exp_data, hasher)) + } } pub fn copy_parents_data( @@ -157,10 +165,18 @@ where node: u32, base_data: &[u8], hasher: Sha256, - cache: &mut ParentCache, + mut cache: Option<&mut ParentCache>, ) -> Result<[u8; 32]> { - let cache_parents = cache.read(node as u32)?; - Ok(self.copy_parents_data_inner(&cache_parents, base_data, hasher)) + if let Some(ref mut cache) = cache { + let cache_parents = cache.read(node as u32)?; + Ok(self.copy_parents_data_inner(&cache_parents, base_data, hasher)) + } else { + let mut cache_parents = [0u32; DEGREE]; + + self.parents(node as usize, &mut cache_parents[..]) + .expect("parents failure"); + Ok(self.copy_parents_data_inner(&cache_parents, base_data, hasher)) + } } fn copy_parents_data_inner_exp(