Trait halo2_backend::poly::commitment::Verifier

source ·
pub trait Verifier<'params, Scheme: CommitmentScheme> {
    type Guard: Guard<Scheme, MSMAccumulator = Self::MSMAccumulator>;
    type MSMAccumulator;

    // Required methods
    fn new() -> Self;
    fn verify_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptRead<Scheme::Curve, E>, I>(
        &self,
        transcript: &mut T,
        queries: I,
        msm: Self::MSMAccumulator
    ) -> Result<Self::Guard, Error>
       where I: IntoIterator<Item = VerifierQuery<'com, Scheme::Curve, <Scheme::ParamsVerifier as ParamsVerifier<'params, Scheme::Curve>>::MSM>> + Clone,
             'params: 'com;
}
Expand description

Common multi-open verifier interface for various commitment schemes

Required Associated Types§

source

type Guard: Guard<Scheme, MSMAccumulator = Self::MSMAccumulator>

Unfinalized verification result. This is returned in verification to allow developer to compress or combine verification results

source

type MSMAccumulator

Accumulator for compressed verification

Required Methods§

source

fn new() -> Self

Creates new verifier instance

source

fn verify_proof<'com, E: EncodedChallenge<Scheme::Curve>, T: TranscriptRead<Scheme::Curve, E>, I>( &self, transcript: &mut T, queries: I, msm: Self::MSMAccumulator ) -> Result<Self::Guard, Error>
where I: IntoIterator<Item = VerifierQuery<'com, Scheme::Curve, <Scheme::ParamsVerifier as ParamsVerifier<'params, Scheme::Curve>>::MSM>> + Clone, 'params: 'com,

Process the proof and return unfinished result named Guard

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'params, E> Verifier<'params, KZGCommitmentScheme<E>> for VerifierGWC<E>
where E: MultiMillerLoop + Debug, E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, E::G2Affine: SerdeCurveAffine,

source§

impl<'params, E> Verifier<'params, KZGCommitmentScheme<E>> for VerifierSHPLONK<E>
where E: MultiMillerLoop + Debug, E::Fr: Ord, E::G1Affine: SerdeCurveAffine<ScalarExt = <E as Engine>::Fr, CurveExt = <E as Engine>::G1>, E::G1: CurveExt<AffineExt = E::G1Affine>, E::G2Affine: SerdeCurveAffine,