halo2_axiom::poly

Trait VerificationStrategy

Source
pub trait VerificationStrategy<'params, Scheme: CommitmentScheme, V: Verifier<'params, Scheme>> {
    type Output;

    // Required methods
    fn new(params: &'params Scheme::ParamsVerifier) -> Self;
    fn process(
        self,
        f: impl FnOnce(V::MSMAccumulator) -> Result<V::Guard, Error>,
    ) -> Result<Self::Output, Error>;
    fn finalize(self) -> bool;
}
Expand description

Trait representing a strategy for verifying Halo 2 proofs.

Required Associated Types§

Source

type Output

The output type of this verification strategy after processing a proof.

Required Methods§

Source

fn new(params: &'params Scheme::ParamsVerifier) -> Self

Creates new verification strategy instance

Source

fn process( self, f: impl FnOnce(V::MSMAccumulator) -> Result<V::Guard, Error>, ) -> Result<Self::Output, Error>

Obtains an MSM from the verifier strategy and yields back the strategy’s output.

Source

fn finalize(self) -> bool

Finalizes the batch and checks its validity.

Returns false if some proof was invalid. If the caller needs to identify specific failing proofs, it must re-process the proofs separately.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, C>> for halo2_axiom::poly::ipa::strategy::AccumulatorStrategy<'params, C>

Source§

impl<'params, C: CurveAffine> VerificationStrategy<'params, IPACommitmentScheme<C>, VerifierIPA<'params, C>> for halo2_axiom::poly::ipa::strategy::SingleStrategy<'params, C>

Source§

impl<'params, E: MultiMillerLoop + Debug, V: Verifier<'params, KZGCommitmentScheme<E>, MSMAccumulator = DualMSM<'params, E>, Guard = GuardKZG<'params, E>>> VerificationStrategy<'params, KZGCommitmentScheme<E>, V> for halo2_axiom::poly::kzg::strategy::AccumulatorStrategy<'params, E>
where E::G1Affine: SerdeCurveAffine<ScalarExt = E::Fr, CurveExt = E::G1>, E::G2Affine: SerdeCurveAffine,

Source§

impl<'params, E: MultiMillerLoop + Debug, V: Verifier<'params, KZGCommitmentScheme<E>, MSMAccumulator = DualMSM<'params, E>, Guard = GuardKZG<'params, E>>> VerificationStrategy<'params, KZGCommitmentScheme<E>, V> for halo2_axiom::poly::kzg::strategy::SingleStrategy<'params, E>
where E::G1Affine: SerdeCurveAffine<ScalarExt = E::Fr, CurveExt = E::G1>, E::G2Affine: SerdeCurveAffine,