Add set_fri_openings

This commit is contained in:
wborgeaud 2022-02-14 10:09:08 +01:00
parent 80e3c928bb
commit 3db9c775b4
2 changed files with 25 additions and 10 deletions

View File

@ -5,6 +5,7 @@ use num::{BigUint, FromPrimitive, Zero};
use plonky2_field::extension_field::{Extendable, FieldExtension}; use plonky2_field::extension_field::{Extendable, FieldExtension};
use plonky2_field::field_types::Field; use plonky2_field::field_types::Field;
use crate::fri::structure::{FriOpenings, FriOpeningsTarget};
use crate::fri::witness_util::set_fri_proof_target; use crate::fri::witness_util::set_fri_proof_target;
use crate::gadgets::arithmetic_u32::U32Target; use crate::gadgets::arithmetic_u32::U32Target;
use crate::gadgets::biguint::BigUintTarget; use crate::gadgets::biguint::BigUintTarget;
@ -201,15 +202,30 @@ pub trait Witness<F: Field> {
); );
self.set_cap_target(&proof_target.quotient_polys_cap, &proof.quotient_polys_cap); self.set_cap_target(&proof_target.quotient_polys_cap, &proof.quotient_polys_cap);
let openings = proof.openings.to_fri_openings(); self.set_fri_openings(
let openings_target = proof_target.openings.to_fri_openings(); &proof_target.openings.to_fri_openings(),
for (batch, batch_target) in openings.batches.iter().zip_eq(&openings_target.batches) { &proof.openings.to_fri_openings(),
self.set_extension_targets(&batch_target.values, &batch.values); );
}
set_fri_proof_target(self, &proof_target.opening_proof, &proof.opening_proof); set_fri_proof_target(self, &proof_target.opening_proof, &proof.opening_proof);
} }
fn set_fri_openings<const D: usize>(
&mut self,
fri_openings_target: &FriOpeningsTarget<D>,
fri_openings: &FriOpenings<F, D>,
) where
F: RichField + Extendable<D>,
{
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) { fn set_wire(&mut self, wire: Wire, value: F) {
self.set_target(Target::Wire(wire), value) self.set_target(Target::Wire(wire), value)
} }

View File

@ -252,11 +252,10 @@ pub fn set_stark_proof_target<F, C: GenericConfig<D, F = F>, W, const D: usize>(
witness.set_cap_target(&proof_target.trace_cap, &proof.trace_cap); witness.set_cap_target(&proof_target.trace_cap, &proof.trace_cap);
witness.set_cap_target(&proof_target.quotient_polys_cap, &proof.quotient_polys_cap); witness.set_cap_target(&proof_target.quotient_polys_cap, &proof.quotient_polys_cap);
let openings = proof.openings.to_fri_openings(); witness.set_fri_openings(
let openings_target = proof_target.openings.to_fri_openings(); &proof_target.openings.to_fri_openings(),
for (batch, batch_target) in openings.batches.iter().zip_eq(&openings_target.batches) { &proof.openings.to_fri_openings(),
witness.set_extension_targets(&batch_target.values, &batch.values); );
}
set_fri_proof_target(witness, &proof_target.opening_proof, &proof.opening_proof); set_fri_proof_target(witness, &proof_target.opening_proof, &proof.opening_proof);
} }