reafactor: move vp, pp as types of params

Remove params use from `verify_proof`.
It only uses the generator of G1, and this is fixed in the curve.
This commit is contained in:
David Nevado 2024-04-23 08:35:48 +02:00
parent bd385c3625
commit 2f032a6910
No known key found for this signature in database
GPG Key ID: 30807CB0B8A17E6C
7 changed files with 33 additions and 22 deletions

View File

@ -45,6 +45,12 @@ pub trait Params<'params, C: CurveAffine>: Sized + Clone + Debug {
/// Multiscalar multiplication engine
type MSM: MSM<C> + 'params;
/// Verifier parameters.
type ParamsVerifier: ParamsVerifier<'params, C>;
/// Prover parameters.
type ParamsProver: ParamsProver<'params, C>;
/// Logarithmic size of the circuit
fn k(&self) -> u32;
@ -58,6 +64,9 @@ pub trait Params<'params, C: CurveAffine>: Sized + Clone + Debug {
/// appropriate params.
fn empty_msm(&'params self) -> Self::MSM;
/// Returns verification parameters.
fn verifier_params(&'params self) -> &'params Self::ParamsVerifier;
/// This commits to a polynomial using its evaluations over the $2^k$ size
/// evaluation domain. The commitment will be blinded by the blinding factor
/// `r`.
@ -77,9 +86,6 @@ pub trait Params<'params, C: CurveAffine>: Sized + Clone + Debug {
/// Parameters for circuit synthesis and prover parameters.
pub trait ParamsProver<'params, C: CurveAffine>: Params<'params, C> {
/// Constant verifier parameters.
type ParamsVerifier: ParamsVerifier<'params, C>;
/// Returns new instance of parameters
fn new(k: u32) -> Self;
@ -95,9 +101,6 @@ pub trait ParamsProver<'params, C: CurveAffine>: Params<'params, C> {
/// Getter for g generators
fn get_g(&self) -> &[C];
/// Returns verification parameters.
fn verifier_params(&'params self) -> &'params Self::ParamsVerifier;
}
/// Verifier specific functionality with circuit constraints

View File

@ -62,6 +62,9 @@ impl<'params, C: CurveAffine> ParamsVerifier<'params, C> for ParamsIPA<C> {}
impl<'params, C: CurveAffine> Params<'params, C> for ParamsIPA<C> {
type MSM = MSMIPA<'params, C>;
type ParamsVerifier = Self;
type ParamsProver = Self;
fn k(&self) -> u32 {
self.k
}
@ -83,6 +86,10 @@ impl<'params, C: CurveAffine> Params<'params, C> for ParamsIPA<C> {
MSMIPA::new(self)
}
fn verifier_params(&'params self) -> &'params Self::ParamsVerifier {
self
}
/// This commits to a polynomial using its evaluations over the $2^k$ size
/// evaluation domain. The commitment will be blinded by the blinding factor
/// `r`.
@ -145,12 +152,6 @@ impl<'params, C: CurveAffine> Params<'params, C> for ParamsIPA<C> {
}
impl<'params, C: CurveAffine> ParamsProver<'params, C> for ParamsIPA<C> {
type ParamsVerifier = ParamsVerifierIPA<C>;
fn verifier_params(&'params self) -> &'params Self::ParamsVerifier {
self
}
/// Initializes parameters for the curve, given a random oracle to draw
/// points from.
fn new(k: u32) -> Self {

View File

@ -280,6 +280,12 @@ where
{
type MSM = MSMKZG<E>;
/// Verifier parameters.
type ParamsVerifier = ParamsVerifierKZG<E>;
/// Prover parameters.
type ParamsProver = Self;
fn k(&self) -> u32 {
self.k
}
@ -302,6 +308,10 @@ where
MSMKZG::new()
}
fn verifier_params(&'params self) -> &'params Self::ParamsVerifier {
self
}
fn commit_lagrange(
&self,
engine: &impl MsmAccel<E::G1Affine>,
@ -341,12 +351,6 @@ where
E::G1: CurveExt<AffineExt = E::G1Affine>,
E::G2Affine: SerdeCurveAffine,
{
type ParamsVerifier = ParamsVerifierKZG<E>;
fn verifier_params(&'params self) -> &'params Self::ParamsVerifier {
self
}
fn new(k: u32) -> Self {
Self::setup(k, OsRng)
}

View File

@ -13,6 +13,8 @@ use crate::poly::query::{CommitmentReference, VerifierQuery};
use crate::poly::Error;
use crate::transcript::{EncodedChallenge, TranscriptRead};
use group::prime::PrimeCurve;
use group::prime::PrimeCurveAffine;
use halo2_middleware::ff::Field;
use halo2curves::pairing::{Engine, MultiMillerLoop};
use halo2curves::CurveExt;
@ -116,7 +118,7 @@ where
msm_accumulator.right.add_msm(&witness_with_aux);
msm_accumulator.right.add_msm(&commitment_multi);
let g0: E::G1 = self.params.g[0].into();
let g0: E::G1 = <E::G1Affine as PrimeCurveAffine>::generator().into();
msm_accumulator.right.append_term(eval_multi, -g0);
Ok(Self::Guard::new(msm_accumulator))

View File

@ -15,6 +15,7 @@ use crate::poly::kzg::strategy::GuardKZG;
use crate::poly::query::{CommitmentReference, VerifierQuery};
use crate::poly::Error;
use crate::transcript::{EncodedChallenge, TranscriptRead};
use group::prime::PrimeCurveAffine;
use halo2_middleware::ff::Field;
use halo2curves::pairing::{Engine, MultiMillerLoop};
use halo2curves::CurveExt;
@ -126,7 +127,7 @@ where
r_outer_acc += power_of_v * r_inner_acc * z_diff_i;
}
let mut outer_msm = outer_msm.normalize();
let g1: E::G1 = self.params.g[0].into();
let g1: E::G1 = <E::G1Affine as PrimeCurveAffine>::generator().into();
outer_msm.append_term(-r_outer_acc, g1);
outer_msm.append_term(-z_0, h1.into());
outer_msm.append_term(*u, h2.into());

View File

@ -28,7 +28,7 @@ use halo2_frontend::{
},
};
use halo2_middleware::{ff::Field, poly::Rotation};
use halo2_proofs::poly::commitment::ParamsProver;
use halo2_proofs::poly::commitment::Params;
use std::collections::HashMap;
#[derive(Clone)]

View File

@ -7,7 +7,6 @@ use halo2_middleware::zal::{
impls::{PlonkEngine, PlonkEngineConfig},
traits::MsmAccel,
};
use halo2_proofs::arithmetic::Field;
use halo2_proofs::circuit::{Cell, Layouter, SimpleFloorPlanner, Value};
use halo2_proofs::dev::MockProver;
use halo2_proofs::plonk::{
@ -22,6 +21,7 @@ use halo2_proofs::transcript::{
Blake2bRead, Blake2bWrite, Challenge255, EncodedChallenge, TranscriptReadBuffer,
TranscriptWriterBuffer,
};
use halo2_proofs::{arithmetic::Field, poly::commitment::Params};
use rand_core::{OsRng, RngCore};
use std::marker::PhantomData;