From b4d6f4bdca465962fad69b02acd5750a63cfb947 Mon Sep 17 00:00:00 2001 From: David Nevado Date: Tue, 23 Apr 2024 11:28:30 +0200 Subject: [PATCH] refactor: rm params from IPA Verifier --- halo2_backend/src/plonk/verifier/batch.rs | 3 +-- halo2_backend/src/poly/ipa/commitment.rs | 2 +- .../src/poly/ipa/commitment/verifier.rs | 4 +--- .../src/poly/ipa/multiopen/verifier.rs | 21 ++++++++++--------- halo2_backend/src/poly/ipa/strategy.rs | 6 ++---- 5 files changed, 16 insertions(+), 20 deletions(-) diff --git a/halo2_backend/src/plonk/verifier/batch.rs b/halo2_backend/src/plonk/verifier/batch.rs index 350ccc16..93954a37 100644 --- a/halo2_backend/src/plonk/verifier/batch.rs +++ b/halo2_backend/src/plonk/verifier/batch.rs @@ -31,8 +31,7 @@ struct BatchStrategy<'params, C: CurveAffine> { msm: MSMIPA<'params, C>, } -impl<'params, C: CurveAffine> - VerificationStrategy<'params, IPACommitmentScheme, VerifierIPA<'params, C>> +impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme, VerifierIPA> for BatchStrategy<'params, C> { type Output = MSMIPA<'params, C>; diff --git a/halo2_backend/src/poly/ipa/commitment.rs b/halo2_backend/src/poly/ipa/commitment.rs index a25e6626..a6314f2b 100644 --- a/halo2_backend/src/poly/ipa/commitment.rs +++ b/halo2_backend/src/poly/ipa/commitment.rs @@ -370,7 +370,7 @@ mod test { let mut commitment_msm = MSMIPA::new(¶ms); commitment_msm.append_term(Fq::one(), p.into()); - let guard = verify_proof(¶ms, commitment_msm, &mut transcript, *x, v).unwrap(); + let guard = verify_proof(commitment_msm, &mut transcript, *x, v).unwrap(); let ch_verifier = transcript.squeeze_challenge(); assert_eq!(*ch_prover, *ch_verifier); diff --git a/halo2_backend/src/poly/ipa/commitment/verifier.rs b/halo2_backend/src/poly/ipa/commitment/verifier.rs index 5117df25..2e6723c5 100644 --- a/halo2_backend/src/poly/ipa/commitment/verifier.rs +++ b/halo2_backend/src/poly/ipa/commitment/verifier.rs @@ -1,6 +1,5 @@ use group::ff::{BatchInvert, Field}; -use super::ParamsIPA; use crate::{arithmetic::CurveAffine, poly::ipa::strategy::GuardIPA}; use crate::{ poly::{commitment::MSM, ipa::msm::MSMIPA, Error}, @@ -11,13 +10,12 @@ use crate::{ /// point `x` that the polynomial commitment `P` opens purportedly to the value /// `v`. The provided `msm` should evaluate to the commitment `P` being opened. pub fn verify_proof<'params, C: CurveAffine, E: EncodedChallenge, T: TranscriptRead>( - params: &'params ParamsIPA, mut msm: MSMIPA<'params, C>, transcript: &mut T, x: C::Scalar, v: C::Scalar, ) -> Result, Error> { - let k = params.k as usize; + let k = msm.params.k as usize; // P' = P - [v] G_0 + [ΞΎ] S msm.add_constant_term(-v); // add [-v] G_0 diff --git a/halo2_backend/src/poly/ipa/multiopen/verifier.rs b/halo2_backend/src/poly/ipa/multiopen/verifier.rs index 62e764d8..d5a23788 100644 --- a/halo2_backend/src/poly/ipa/multiopen/verifier.rs +++ b/halo2_backend/src/poly/ipa/multiopen/verifier.rs @@ -1,11 +1,12 @@ use std::fmt::Debug; +use std::marker::PhantomData; use halo2_middleware::ff::Field; use super::{construct_intermediate_sets, ChallengeX1, ChallengeX2, ChallengeX3, ChallengeX4}; use crate::arithmetic::{eval_polynomial, lagrange_interpolate, CurveAffine}; use crate::poly::commitment::{Params, Verifier, MSM}; -use crate::poly::ipa::commitment::{IPACommitmentScheme, ParamsIPA, ParamsVerifierIPA}; +use crate::poly::ipa::commitment::{IPACommitmentScheme, ParamsVerifierIPA}; use crate::poly::ipa::msm::MSMIPA; use crate::poly::ipa::strategy::GuardIPA; use crate::poly::query::{CommitmentReference, VerifierQuery}; @@ -14,20 +15,20 @@ use crate::transcript::{EncodedChallenge, TranscriptRead}; /// IPA multi-open verifier #[derive(Debug)] -pub struct VerifierIPA<'params, C: CurveAffine> { - params: &'params ParamsIPA, +pub struct VerifierIPA { + _marker: PhantomData, } -impl<'params, C: CurveAffine> Verifier<'params, IPACommitmentScheme> - for VerifierIPA<'params, C> -{ +impl<'params, C: CurveAffine> Verifier<'params, IPACommitmentScheme> for VerifierIPA { type Guard = GuardIPA<'params, C>; type MSMAccumulator = MSMIPA<'params, C>; const QUERY_INSTANCE: bool = true; - fn new(params: &'params ParamsVerifierIPA) -> Self { - Self { params } + fn new(_params: &'params ParamsVerifierIPA) -> Self { + Self { + _marker: PhantomData, + } } fn verify_proof<'com, E: EncodedChallenge, T: TranscriptRead, I>( @@ -52,7 +53,7 @@ impl<'params, C: CurveAffine> Verifier<'params, IPACommitmentScheme> // Compress the commitments and expected evaluations at x together. // using the challenge x_1 let mut q_commitments: Vec<_> = vec![ - (self.params.empty_msm(), C::Scalar::ONE); // (accumulator, next x_1 power). + (msm.params.empty_msm(), C::Scalar::ONE); // (accumulator, next x_1 power). point_sets.len()]; // A vec of vecs of evals. The outer vec corresponds to the point set, @@ -143,6 +144,6 @@ impl<'params, C: CurveAffine> Verifier<'params, IPACommitmentScheme> ); // Verify the opening proof - super::commitment::verify_proof(self.params, msm, transcript, *x_3, v) + super::commitment::verify_proof(msm, transcript, *x_3, v) } } diff --git a/halo2_backend/src/poly/ipa/strategy.rs b/halo2_backend/src/poly/ipa/strategy.rs index c7408637..4fdc4752 100644 --- a/halo2_backend/src/poly/ipa/strategy.rs +++ b/halo2_backend/src/poly/ipa/strategy.rs @@ -76,8 +76,7 @@ pub struct AccumulatorStrategy<'params, C: CurveAffine> { msm: MSMIPA<'params, C>, } -impl<'params, C: CurveAffine> - VerificationStrategy<'params, IPACommitmentScheme, VerifierIPA<'params, C>> +impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme, VerifierIPA> for AccumulatorStrategy<'params, C> { type Output = Self; @@ -117,8 +116,7 @@ pub struct SingleStrategy<'params, C: CurveAffine> { msm: MSMIPA<'params, C>, } -impl<'params, C: CurveAffine> - VerificationStrategy<'params, IPACommitmentScheme, VerifierIPA<'params, C>> +impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme, VerifierIPA> for SingleStrategy<'params, C> { type Output = ();