From 73f9a0be6b1babe08a6ea04014e6f9f33faea49e Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Mon, 4 Oct 2021 14:11:53 -0700 Subject: [PATCH] Allow zero FRI reductions (#283) In this case we're basically sending the witness. As @wborgeaud mentioned it might make sense for small circuits. --- src/fri/recursive_verifier.rs | 4 ---- src/fri/reduction_strategies.rs | 2 +- src/fri/verifier.rs | 4 ---- 3 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/fri/recursive_verifier.rs b/src/fri/recursive_verifier.rs index 51135351..a077f5ca 100644 --- a/src/fri/recursive_verifier.rs +++ b/src/fri/recursive_verifier.rs @@ -121,10 +121,6 @@ impl, const D: usize> CircuitBuilder { proof.query_round_proofs.len(), "Number of query rounds does not match config." ); - debug_assert!( - !common_data.fri_params.reduction_arity_bits.is_empty(), - "Number of reductions should be non-zero." - ); let precomputed_reduced_evals = with_context!( self, diff --git a/src/fri/reduction_strategies.rs b/src/fri/reduction_strategies.rs index 8bc708c6..4ca50661 100644 --- a/src/fri/reduction_strategies.rs +++ b/src/fri/reduction_strategies.rs @@ -26,7 +26,7 @@ impl FriReductionStrategy { match self { &FriReductionStrategy::ConstantArityBits(arity_bits, final_poly_bits) => { let mut result = Vec::new(); - while result.is_empty() || degree_bits > final_poly_bits { + while degree_bits > final_poly_bits { result.push(arity_bits); assert!(degree_bits >= arity_bits); degree_bits -= arity_bits; diff --git a/src/fri/verifier.rs b/src/fri/verifier.rs index 93d10723..0aae124d 100644 --- a/src/fri/verifier.rs +++ b/src/fri/verifier.rs @@ -80,10 +80,6 @@ pub(crate) fn verify_fri_proof, const D: usize>( config.fri_config.num_query_rounds == proof.query_round_proofs.len(), "Number of query rounds does not match config." ); - ensure!( - !common_data.fri_params.reduction_arity_bits.is_empty(), - "Number of reductions should be non-zero." - ); let precomputed_reduced_evals = PrecomputedReducedEvals::from_os_and_alpha(os, challenges.fri_alpha);