Skip to content

Commit f5a2e0a

Browse files
Less asserts (#965)
Less asserts
2 parents 3abf8c7 + aa41575 commit f5a2e0a

37 files changed

+567
-416
lines changed

fil-proofs-tooling/src/bin/benchy/stacked.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ pub struct RunOpts {
497497
}
498498

499499
pub fn run(opts: RunOpts) -> anyhow::Result<()> {
500-
let config = StackedConfig::new(opts.layers, opts.window_challenges, opts.wrapper_challenges);
500+
let config = StackedConfig::new(opts.layers, opts.window_challenges, opts.wrapper_challenges)?;
501501

502502
let params = Params {
503503
config,

filecoin-proofs/examples/stacked.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,8 @@ fn main() {
507507
let circuit = matches.is_present("circuit");
508508
let extract = matches.is_present("extract");
509509

510-
let config = StackedConfig::new(layers, window_challenge_count, wrapper_challenge_count);
510+
let config =
511+
StackedConfig::new(layers, window_challenge_count, wrapper_challenge_count).unwrap();
511512

512513
info!("hasher: {}", hasher);
513514
match hasher.as_ref() {

filecoin-proofs/src/api/seal.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::fs::{self, File, OpenOptions};
22
use std::io::prelude::*;
33
use std::path::Path;
44

5-
use anyhow::Result;
5+
use anyhow::{Context, Result};
66
use bincode::{deserialize, serialize};
77
use memmap::MmapOptions;
88
use merkletree::store::{StoreConfig, DEFAULT_CACHED_ABOVE_BASE_LAYER};
@@ -243,20 +243,17 @@ pub fn seal_commit<T: AsRef<Path>>(
243243

244244
// Verification is cheap when parameters are cached,
245245
// and it is never correct to return a proof which does not verify.
246-
assert!(
247-
verify_seal(
248-
porep_config,
249-
comm_r,
250-
comm_d,
251-
prover_id,
252-
sector_id,
253-
ticket,
254-
seed,
255-
&buf,
256-
)
257-
.expect("post-seal verification sanity check failed"),
258-
"invalid seal generated, bad things have happened"
259-
);
246+
verify_seal(
247+
porep_config,
248+
comm_r,
249+
comm_d,
250+
prover_id,
251+
sector_id,
252+
ticket,
253+
seed,
254+
&buf,
255+
)
256+
.context("post-seal verification sanity check failed")?;
260257

261258
info!("seal_commit:end");
262259

filecoin-proofs/src/fr32.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::cmp::min;
22
use std::io::{self, Error, ErrorKind, Read, Seek, SeekFrom, Write};
33

4+
use anyhow::{ensure, Result};
45
use bitvec::{BitVec, LittleEndian};
56

67
/** PaddingMap represents a mapping between data and its padded equivalent.
@@ -255,16 +256,24 @@ impl BitByte {
255256
}
256257

257258
impl PaddingMap {
258-
pub fn new(data_bits: usize, element_bits: usize) -> PaddingMap {
259+
pub fn new(data_bits: usize, element_bits: usize) -> Result<PaddingMap> {
259260
// Check that we add less than 1 byte of padding (sub-byte padding).
260-
assert!(element_bits - data_bits <= 7);
261+
ensure!(
262+
element_bits - data_bits <= 7,
263+
"Padding (num bits: {}) must be less than 1 byte.",
264+
element_bits - data_bits
265+
);
261266
// Check that the element is byte aligned.
262-
assert_eq!(element_bits % 8, 0);
267+
ensure!(
268+
element_bits % 8 == 0,
269+
"Element (num bits: {}) must be byte aligned.",
270+
element_bits
271+
);
263272

264-
PaddingMap {
273+
Ok(PaddingMap {
265274
data_bits,
266275
element_bits,
267-
}
276+
})
268277
}
269278

270279
pub fn pad(&self, bits_out: &mut BitVecLEu8) {

filecoin-proofs/src/parameters.rs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use anyhow::Result;
1+
use anyhow::{ensure, Result};
22
use storage_proofs::drgraph::{DefaultTreeHasher, BASE_DEGREE};
33
use storage_proofs::election_post::{self, ElectionPoSt};
44
use storage_proofs::proof::ProofScheme;
@@ -57,24 +57,24 @@ pub fn setup_params(
5757
sector_bytes: PaddedBytesAmount,
5858
partitions: usize,
5959
) -> Result<stacked::SetupParams> {
60-
let window_challenges = select_challenges(partitions, POREP_WINDOW_MINIMUM_CHALLENGES, LAYERS);
60+
let window_challenges = select_challenges(partitions, POREP_WINDOW_MINIMUM_CHALLENGES, LAYERS)?;
6161
let wrapper_challenges =
62-
select_challenges(partitions, POREP_WRAPPER_MINIMUM_CHALLENGES, LAYERS);
63-
let window_size_nodes = window_size_nodes_for_sector_bytes(sector_bytes).unwrap();
62+
select_challenges(partitions, POREP_WRAPPER_MINIMUM_CHALLENGES, LAYERS)?;
63+
let window_size_nodes = window_size_nodes_for_sector_bytes(sector_bytes)?;
6464
let sector_bytes = usize::from(sector_bytes);
6565

6666
let config = StackedConfig {
6767
window_challenges,
6868
wrapper_challenges,
6969
};
7070

71-
assert!(
71+
ensure!(
7272
sector_bytes % 32 == 0,
7373
"sector_bytes ({}) must be a multiple of 32",
7474
sector_bytes,
7575
);
7676

77-
assert!(
77+
ensure!(
7878
sector_bytes % window_size_nodes * 32 == 0,
7979
"sector_bytes ({}) must be a multiple of the window size ({})",
8080
sector_bytes,
@@ -96,14 +96,14 @@ fn select_challenges(
9696
partitions: usize,
9797
minimum_total_challenges: usize,
9898
layers: usize,
99-
) -> LayerChallenges {
99+
) -> Result<LayerChallenges> {
100100
let mut count = 1;
101-
let mut guess = LayerChallenges::new(layers, count);
101+
let mut guess = LayerChallenges::new(layers, count)?;
102102
while partitions * guess.challenges_count_all() < minimum_total_challenges {
103103
count += 1;
104-
guess = LayerChallenges::new(layers, count);
104+
guess = LayerChallenges::new(layers, count)?;
105105
}
106-
guess
106+
Ok(guess)
107107
}
108108

109109
#[cfg(test)]
@@ -114,7 +114,11 @@ mod tests {
114114

115115
#[test]
116116
fn partition_layer_challenges_test() {
117-
let f = |partitions| select_challenges(partitions, 12, LAYERS).challenges_count_all();
117+
let f = |partitions| {
118+
select_challenges(partitions, 12, LAYERS)
119+
.unwrap()
120+
.challenges_count_all()
121+
};
118122
// Update to ensure all supported PoRepProofPartitions options are represented here.
119123
assert_eq!(6, f(usize::from(PoRepProofPartitions(2))));
120124

filecoin-proofs/src/pieces.rs

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,17 @@ pub fn compute_comm_d(sector_size: SectorSize, piece_infos: &[PieceInfo]) -> Res
6565
);
6666

6767
while stack.peek().size < piece_info.size {
68-
stack.shift_reduce(zero_padding(stack.peek().size))
68+
stack.shift_reduce(zero_padding(stack.peek().size)?)?
6969
}
7070

71-
stack.shift_reduce(piece_info.clone());
71+
stack.shift_reduce(piece_info.clone())?;
7272
}
7373

7474
while stack.len() > 1 {
75-
stack.shift_reduce(zero_padding(stack.peek().size));
75+
stack.shift_reduce(zero_padding(stack.peek().size)?)?;
7676
}
7777

78-
assert_eq!(stack.len(), 1);
78+
ensure!(stack.len() == 1, "Stack size ({}) must be 1.", stack.len());
7979

8080
let comm_d_calculated = stack.pop().commitment;
8181

@@ -111,29 +111,30 @@ impl Stack {
111111
self.0.pop().expect("empty stack popped")
112112
}
113113

114-
pub fn reduce1(&mut self) -> bool {
114+
pub fn reduce1(&mut self) -> Result<bool> {
115115
if self.len() < 2 {
116-
return false;
116+
return Ok(false);
117117
}
118118

119119
if self.peek().size == self.peek2().size {
120120
let right = self.pop();
121121
let left = self.pop();
122-
let joined = join_piece_infos(left, right);
122+
let joined = join_piece_infos(left, right)?;
123123
self.shift(joined);
124-
return true;
124+
return Ok(true);
125125
}
126126

127-
false
127+
Ok(false)
128128
}
129129

130-
pub fn reduce(&mut self) {
131-
while self.reduce1() {}
130+
pub fn reduce(&mut self) -> Result<()> {
131+
while self.reduce1()? {}
132+
Ok(())
132133
}
133134

134-
pub fn shift_reduce(&mut self, piece: PieceInfo) {
135+
pub fn shift_reduce(&mut self, piece: PieceInfo) -> Result<()> {
135136
self.shift(piece);
136-
self.reduce();
137+
self.reduce()
137138
}
138139

139140
pub fn len(&self) -> usize {
@@ -142,7 +143,7 @@ impl Stack {
142143
}
143144

144145
/// Create a padding `PieceInfo` of size `size`.
145-
fn zero_padding(size: UnpaddedBytesAmount) -> PieceInfo {
146+
fn zero_padding(size: UnpaddedBytesAmount) -> Result<PieceInfo> {
146147
let padded_size: PaddedBytesAmount = size.into();
147148
let mut commitment = [0u8; 32];
148149

@@ -157,19 +158,27 @@ fn zero_padding(size: UnpaddedBytesAmount) -> PieceInfo {
157158
hashed_size *= 2;
158159
}
159160

160-
assert_eq!(hashed_size, u64::from(padded_size));
161+
ensure!(
162+
hashed_size == u64::from(padded_size),
163+
"Hashed size must equal padded size"
164+
);
161165

162-
PieceInfo { size, commitment }
166+
Ok(PieceInfo { size, commitment })
163167
}
164168

165169
/// Join two equally sized `PieceInfo`s together, by hashing them and adding their sizes.
166-
fn join_piece_infos(mut left: PieceInfo, right: PieceInfo) -> PieceInfo {
167-
assert_eq!(left.size, right.size);
170+
fn join_piece_infos(mut left: PieceInfo, right: PieceInfo) -> Result<PieceInfo> {
171+
ensure!(
172+
left.size == right.size,
173+
"Piece sizes must be equal (left: {:?}, right: {:?})",
174+
left.size,
175+
right.size
176+
);
168177
let h = piece_hash(&left.commitment, &right.commitment);
169178

170179
left.commitment.copy_from_slice(AsRef::<[u8]>::as_ref(&h));
171180
left.size = left.size + right.size;
172-
left
181+
Ok(left)
173182
}
174183

175184
fn piece_hash(a: &[u8], b: &[u8]) -> <DefaultPieceHasher as Hasher>::Domain {
@@ -436,7 +445,7 @@ mod tests {
436445
// ]
437446

438447
let sector_size = SectorSize(32 * 128);
439-
let pad = zero_padding(UnpaddedBytesAmount(127));
448+
let pad = zero_padding(UnpaddedBytesAmount(127)).unwrap();
440449

441450
let pieces = vec![
442451
PieceInfo {
@@ -637,7 +646,7 @@ mod tests {
637646
BASE_DEGREE,
638647
EXP_DEGREE,
639648
new_seed(),
640-
);
649+
)?;
641650

642651
let mut staged_sector = Vec::with_capacity(u64::from(sector_size) as usize);
643652
let mut staged_sector_io = std::io::Cursor::new(&mut staged_sector);

storage-proofs/benches/drgraph.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fn drgraph(c: &mut Criterion) {
1010
.iter()
1111
.map(|n| {
1212
(
13-
BucketGraph::<PedersenHasher>::new(*n, BASE_DEGREE, 0, new_seed()),
13+
BucketGraph::<PedersenHasher>::new(*n, BASE_DEGREE, 0, new_seed()).unwrap(),
1414
2,
1515
)
1616
})
@@ -22,7 +22,7 @@ fn drgraph(c: &mut Criterion) {
2222
|b, (graph, i)| {
2323
b.iter(|| {
2424
let mut parents = vec![0; 6];
25-
black_box(graph.parents(*i, &mut parents));
25+
black_box(graph.parents(*i, &mut parents).unwrap());
2626
})
2727
},
2828
params,

storage-proofs/benches/encode.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ fn pregenerate_data<H: Hasher>(degree: usize) -> Pregenerated<H> {
2929
let parents: Vec<u32> = (0..degree as u32).map(|pos| pos).collect();
3030
let replica_id: H::Domain = H::Domain::random(&mut rng);
3131

32-
let graph = StackedBucketGraph::<H>::new_stacked(degree + 1, degree, 0, new_seed());
32+
let graph = StackedBucketGraph::<H>::new_stacked(degree + 1, degree, 0, new_seed()).unwrap();
3333

3434
Pregenerated {
3535
data,

storage-proofs/benches/merkle.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ fn merkle_benchmark(c: &mut Criterion) {
2626
BASE_DEGREE,
2727
EXP_DEGREE,
2828
new_seed(),
29-
);
29+
)
30+
.unwrap();
3031

3132
b.iter(|| black_box(graph.merkle_tree(&data).unwrap()))
3233
},
@@ -40,7 +41,8 @@ fn merkle_benchmark(c: &mut Criterion) {
4041
BASE_DEGREE,
4142
EXP_DEGREE,
4243
new_seed(),
43-
);
44+
)
45+
.unwrap();
4446

4547
b.iter(|| black_box(graph.merkle_tree(&data).unwrap()))
4648
})

storage-proofs/benches/parents.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ fn stop_profile() {}
4141

4242
fn pregenerate_graph<H: Hasher>(size: usize) -> StackedBucketGraph<H> {
4343
let seed = [1u8; 28];
44-
StackedBucketGraph::<H>::new_stacked(size, BASE_DEGREE, EXP_DEGREE, seed)
44+
StackedBucketGraph::<H>::new_stacked(size, BASE_DEGREE, EXP_DEGREE, seed).unwrap()
4545
}
4646

4747
fn parents_loop<H: Hasher, G: Graph<H>>(graph: &G, parents: &mut [u32]) {
4848
(0..graph.size())
49-
.map(|node| graph.parents(node, parents))
49+
.map(|node| graph.parents(node, parents).unwrap())
5050
.collect()
5151
}
5252

0 commit comments

Comments
 (0)