diff --git a/plonky2/src/iop/witness.rs b/plonky2/src/iop/witness.rs index 651e1707..8220e85b 100644 --- a/plonky2/src/iop/witness.rs +++ b/plonky2/src/iop/witness.rs @@ -5,6 +5,7 @@ use num::{BigUint, FromPrimitive, Zero}; use plonky2_field::extension_field::{Extendable, FieldExtension}; use plonky2_field::field_types::Field; +use crate::fri::structure::{FriOpenings, FriOpeningsTarget}; use crate::fri::witness_util::set_fri_proof_target; use crate::gadgets::arithmetic_u32::U32Target; use crate::gadgets::biguint::BigUintTarget; @@ -201,15 +202,30 @@ pub trait Witness { ); self.set_cap_target(&proof_target.quotient_polys_cap, &proof.quotient_polys_cap); - let openings = proof.openings.to_fri_openings(); - let openings_target = proof_target.openings.to_fri_openings(); - for (batch, batch_target) in openings.batches.iter().zip_eq(&openings_target.batches) { - self.set_extension_targets(&batch_target.values, &batch.values); - } + self.set_fri_openings( + &proof_target.openings.to_fri_openings(), + &proof.openings.to_fri_openings(), + ); set_fri_proof_target(self, &proof_target.opening_proof, &proof.opening_proof); } + fn set_fri_openings( + &mut self, + fri_openings_target: &FriOpeningsTarget, + fri_openings: &FriOpenings, + ) where + F: RichField + Extendable, + { + for (batch_target, batch) in fri_openings_target + .batches + .iter() + .zip_eq(&fri_openings.batches) + { + self.set_extension_targets(&batch_target.values, &batch.values); + } + } + fn set_wire(&mut self, wire: Wire, value: F) { self.set_target(Target::Wire(wire), value) } diff --git a/starky/src/recursive_verifier.rs b/starky/src/recursive_verifier.rs index 7c6e7636..16ac07b5 100644 --- a/starky/src/recursive_verifier.rs +++ b/starky/src/recursive_verifier.rs @@ -252,11 +252,10 @@ pub fn set_stark_proof_target, W, const D: usize>( witness.set_cap_target(&proof_target.trace_cap, &proof.trace_cap); witness.set_cap_target(&proof_target.quotient_polys_cap, &proof.quotient_polys_cap); - let openings = proof.openings.to_fri_openings(); - let openings_target = proof_target.openings.to_fri_openings(); - for (batch, batch_target) in openings.batches.iter().zip_eq(&openings_target.batches) { - witness.set_extension_targets(&batch_target.values, &batch.values); - } + witness.set_fri_openings( + &proof_target.openings.to_fri_openings(), + &proof.openings.to_fri_openings(), + ); set_fri_proof_target(witness, &proof_target.opening_proof, &proof.opening_proof); }