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::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<F: Field> {
);
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<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) {
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.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);
}