diff --git a/src/fri/recursive_verifier.rs b/src/fri/recursive_verifier.rs index fc320f31..31ab0a25 100644 --- a/src/fri/recursive_verifier.rs +++ b/src/fri/recursive_verifier.rs @@ -183,7 +183,7 @@ impl, const D: usize> CircuitBuilder { // Polynomials opened at `x` and `g x`, i.e., the Zs polynomials. let zs_evals = proof - .unsalted_evals(PlonkPolynomials::ZS) + .unsalted_evals(PlonkPolynomials::ZS_PARTIAL_PRODUCTS) .iter() .map(|&e| self.convert_to_ext(e)) .collect::>(); diff --git a/src/fri/verifier.rs b/src/fri/verifier.rs index 3db4f6f5..62bfbbd4 100644 --- a/src/fri/verifier.rs +++ b/src/fri/verifier.rs @@ -185,7 +185,7 @@ fn fri_combine_initial, const D: usize>( // Polynomials opened at `x` and `g x`, i.e., the Zs polynomials. let zs_evals = proof - .unsalted_evals(PlonkPolynomials::ZS) + .unsalted_evals(PlonkPolynomials::ZS_PARTIAL_PRODUCTS) .iter() .map(|&e| F::Extension::from_basefield(e)); let zs_composition_eval = alpha.clone().reduce(zs_evals); diff --git a/src/plonk_challenger.rs b/src/plonk_challenger.rs index 9af5e590..287eaa07 100644 --- a/src/plonk_challenger.rs +++ b/src/plonk_challenger.rs @@ -72,6 +72,7 @@ impl Challenger { wires, plonk_zs, plonk_zs_right, + partial_products, quotient_polys, } = os; for v in &[ @@ -80,6 +81,7 @@ impl Challenger { wires, plonk_zs, plonk_zs_right, + partial_products, quotient_polys, ] { self.observe_extension_elements(v); diff --git a/src/plonk_common.rs b/src/plonk_common.rs index 4b593b75..b10b1ee6 100644 --- a/src/plonk_common.rs +++ b/src/plonk_common.rs @@ -38,7 +38,7 @@ impl PlonkPolynomials { index: 1, blinding: true, }; - pub const ZS: PolynomialsIndexBlinding = PolynomialsIndexBlinding { + pub const ZS_PARTIAL_PRODUCTS: PolynomialsIndexBlinding = PolynomialsIndexBlinding { index: 2, blinding: true, }; @@ -51,7 +51,7 @@ impl PlonkPolynomials { match i { 0 => Self::CONSTANTS_SIGMAS, 1 => Self::WIRES, - 2 => Self::ZS, + 2 => Self::ZS_PARTIAL_PRODUCTS, 3 => Self::QUOTIENT, _ => panic!("There are only 4 sets of polynomials in Plonk."), } diff --git a/src/polynomial/commitment.rs b/src/polynomial/commitment.rs index 0b9de2a5..b88d9a65 100644 --- a/src/polynomial/commitment.rs +++ b/src/polynomial/commitment.rs @@ -162,7 +162,7 @@ impl ListPolynomialCommitment { alpha.reset(); // Zs polynomials are opened at `zeta` and `g*zeta`. - let zs_polys = commitments[PlonkPolynomials::ZS.index] + let zs_polys = commitments[PlonkPolynomials::ZS_PARTIAL_PRODUCTS.index] .polynomials .iter() .map(|p| p.to_extension()); diff --git a/src/proof.rs b/src/proof.rs index 47b67c9c..f712da40 100644 --- a/src/proof.rs +++ b/src/proof.rs @@ -154,6 +154,7 @@ pub struct OpeningSet, const D: usize> { pub wires: Vec, pub plonk_zs: Vec, pub plonk_zs_right: Vec, + pub partial_products: Vec, pub quotient_polys: Vec, } @@ -163,7 +164,7 @@ impl, const D: usize> OpeningSet { g: F::Extension, constants_sigmas_commitment: &ListPolynomialCommitment, wires_commitment: &ListPolynomialCommitment, - plonk_zs_commitment: &ListPolynomialCommitment, + zs_partial_products_commitment: &ListPolynomialCommitment, quotient_polys_commitment: &ListPolynomialCommitment, common_data: &CommonCircuitData, ) -> Self { @@ -174,12 +175,17 @@ impl, const D: usize> OpeningSet { .collect::>() }; let constants_sigmas_eval = eval_commitment(z, constants_sigmas_commitment); + let zs_partial_products_eval = eval_commitment(z, zs_partial_products_commitment); Self { constants: constants_sigmas_eval[common_data.constants_range()].to_vec(), plonk_s_sigmas: constants_sigmas_eval[common_data.sigmas_range()].to_vec(), wires: eval_commitment(z, wires_commitment), - plonk_zs: eval_commitment(z, plonk_zs_commitment), - plonk_zs_right: eval_commitment(g * z, plonk_zs_commitment), + plonk_zs: zs_partial_products_eval[common_data.zs_range()].to_vec(), + plonk_zs_right: eval_commitment(g * z, zs_partial_products_commitment) + [common_data.zs_range()] + .to_vec(), + partial_products: zs_partial_products_eval[common_data.partial_products_range()] + .to_vec(), quotient_polys: eval_commitment(z, quotient_polys_commitment), } } diff --git a/src/prover.rs b/src/prover.rs index 0a1c7886..6246ad54 100644 --- a/src/prover.rs +++ b/src/prover.rs @@ -98,7 +98,7 @@ pub(crate) fn prove, const D: usize>( ListPolynomialCommitment::new( zs_partial_products, fri_config.rate_bits, - PlonkPolynomials::ZS.blinding + PlonkPolynomials::ZS_PARTIAL_PRODUCTS.blinding ), "to commit to Z's" );