From 73dde0b70de53e9e4f53f7d38535e23c0daa823a Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Thu, 3 Feb 2022 16:21:34 +0100 Subject: [PATCH] Replace `observe_opening_set` by `observe_openings` taking a `FriOpenings` argument. --- plonky2/src/fri/recursive_verifier.rs | 2 +- plonky2/src/iop/challenger.rs | 48 ++++----------------------- plonky2/src/plonk/get_challenges.rs | 2 +- plonky2/src/plonk/prover.rs | 2 +- starky/src/get_challenges.rs | 2 +- starky/src/proof.rs | 24 +------------- starky/src/prover.rs | 2 +- 7 files changed, 13 insertions(+), 69 deletions(-) diff --git a/plonky2/src/fri/recursive_verifier.rs b/plonky2/src/fri/recursive_verifier.rs index a9a224d1..8dbb2038 100644 --- a/plonky2/src/fri/recursive_verifier.rs +++ b/plonky2/src/fri/recursive_verifier.rs @@ -146,7 +146,7 @@ impl, const D: usize> CircuitBuilder { // Size of the LDE domain. let n = params.lde_size(); - challenger.observe_opening_set(os); + challenger.observe_openings(&os.to_fri_openings()); // Scaling factor to combine polynomials. let alpha = challenger.get_extension_challenge(self); diff --git a/plonky2/src/iop/challenger.rs b/plonky2/src/iop/challenger.rs index d7583646..b1a4c12b 100644 --- a/plonky2/src/iop/challenger.rs +++ b/plonky2/src/iop/challenger.rs @@ -5,6 +5,7 @@ use plonky2_field::extension_field::{Extendable, FieldExtension}; use plonky2_field::polynomial::PolynomialCoeffs; use crate::fri::proof::FriChallenges; +use crate::fri::structure::{FriOpenings, FriOpeningsTarget}; use crate::fri::FriConfig; use crate::hash::hash_types::RichField; use crate::hash::hash_types::{HashOut, HashOutTarget, MerkleCapTarget}; @@ -14,7 +15,6 @@ use crate::iop::ext_target::ExtensionTarget; use crate::iop::target::Target; use crate::plonk::circuit_builder::CircuitBuilder; use crate::plonk::config::{AlgebraicHasher, GenericConfig, GenericHashOut, Hasher}; -use crate::plonk::proof::{OpeningSet, OpeningSetTarget}; /// Observes prover messages, and generates challenges by hashing the transcript, a la Fiat-Shamir. #[derive(Clone)] @@ -72,29 +72,12 @@ impl> Challenger { } } - pub fn observe_opening_set(&mut self, os: &OpeningSet) + pub fn observe_openings(&mut self, openings: &FriOpenings) where F: RichField + Extendable, { - let OpeningSet { - constants, - plonk_sigmas, - wires, - plonk_zs, - plonk_zs_right, - partial_products, - quotient_polys, - } = os; - for v in &[ - constants, - plonk_sigmas, - wires, - plonk_zs, - plonk_zs_right, - partial_products, - quotient_polys, - ] { - self.observe_extension_elements(v); + for v in &openings.batches { + self.observe_extension_elements(&v.values); } } @@ -269,26 +252,9 @@ impl, H: AlgebraicHasher, const D: usize> } } - pub fn observe_opening_set(&mut self, os: &OpeningSetTarget) { - let OpeningSetTarget { - constants, - plonk_sigmas, - wires, - plonk_zs, - plonk_zs_right, - partial_products, - quotient_polys, - } = os; - for v in &[ - constants, - plonk_sigmas, - wires, - plonk_zs, - plonk_zs_right, - partial_products, - quotient_polys, - ] { - self.observe_extension_elements(v); + pub fn observe_openings(&mut self, openings: &FriOpeningsTarget) { + for v in &openings.batches { + self.observe_extension_elements(&v.values); } } diff --git a/plonky2/src/plonk/get_challenges.rs b/plonky2/src/plonk/get_challenges.rs index 3167fef7..fb1517e4 100644 --- a/plonky2/src/plonk/get_challenges.rs +++ b/plonky2/src/plonk/get_challenges.rs @@ -46,7 +46,7 @@ fn get_challenges, C: GenericConfig, cons challenger.observe_cap(quotient_polys_cap); let plonk_zeta = challenger.get_extension_challenge::(); - challenger.observe_opening_set(openings); + challenger.observe_openings(&openings.to_fri_openings()); Ok(ProofChallenges { plonk_betas, diff --git a/plonky2/src/plonk/prover.rs b/plonky2/src/plonk/prover.rs index 09caf81e..6178bba1 100644 --- a/plonky2/src/plonk/prover.rs +++ b/plonky2/src/plonk/prover.rs @@ -196,7 +196,7 @@ pub(crate) fn prove, C: GenericConfig, co common_data, ) ); - challenger.observe_opening_set(&openings); + challenger.observe_openings(&openings.to_fri_openings()); let opening_proof = timed!( timing, diff --git a/starky/src/get_challenges.rs b/starky/src/get_challenges.rs index 79e1c032..7e89ca3e 100644 --- a/starky/src/get_challenges.rs +++ b/starky/src/get_challenges.rs @@ -33,7 +33,7 @@ fn get_challenges, C: GenericConfig, cons challenger.observe_cap(quotient_polys_cap); let stark_zeta = challenger.get_extension_challenge::(); - openings.observe(&mut challenger); + challenger.observe_openings(&openings.to_fri_openings()); Ok(StarkProofChallenges { stark_alphas, diff --git a/starky/src/proof.rs b/starky/src/proof.rs index 5f96f1f4..b7ecd912 100644 --- a/starky/src/proof.rs +++ b/starky/src/proof.rs @@ -4,8 +4,7 @@ use plonky2::fri::proof::{CompressedFriProof, FriChallenges, FriProof}; use plonky2::fri::structure::{FriOpeningBatch, FriOpenings}; use plonky2::hash::hash_types::RichField; use plonky2::hash::merkle_tree::MerkleCap; -use plonky2::iop::challenger::Challenger; -use plonky2::plonk::config::{GenericConfig, Hasher}; +use plonky2::plonk::config::GenericConfig; use rayon::prelude::*; pub struct StarkProof, C: GenericConfig, const D: usize> { @@ -92,27 +91,6 @@ impl, const D: usize> StarkOpeningSet { } } - // TODO: Replace with a `observe_fri_openings` function. - // Note: Can't implement this directly on `Challenger` as it's in a different crate. - pub fn observe>(&self, challenger: &mut Challenger) { - let StarkOpeningSet { - local_values, - next_values, - permutation_zs, - permutation_zs_right, - quotient_polys, - } = self; - for v in &[ - local_values, - next_values, - permutation_zs, - permutation_zs_right, - quotient_polys, - ] { - challenger.observe_extension_elements(v); - } - } - pub(crate) fn to_fri_openings(&self) -> FriOpenings { let zeta_batch = FriOpeningBatch { values: [ diff --git a/starky/src/prover.rs b/starky/src/prover.rs index d2c63e02..080ab317 100644 --- a/starky/src/prover.rs +++ b/starky/src/prover.rs @@ -113,7 +113,7 @@ where "Opening point is in the subgroup." ); let openings = StarkOpeningSet::new(zeta, g, &trace_commitment, "ient_commitment); - openings.observe(&mut challenger); + challenger.observe_openings(&openings.to_fri_openings()); // TODO: Add permuation checks let initial_merkle_trees = &[&trace_commitment, "ient_commitment];