pub trait MultiMillerLoop: Engine {
type G2Prepared: Clone + Send + Sync + From<Self::G2Affine>;
type Result: MillerLoopResult<Gt = Self::Gt>;
// Required method
fn multi_miller_loop(
terms: &[(&Self::G1Affine, &Self::G2Prepared)],
) -> Self::Result;
}
Expand description
An engine that can compute sums of pairings in an efficient way.
Required Associated Types§
Sourcetype G2Prepared: Clone + Send + Sync + From<Self::G2Affine>
type G2Prepared: Clone + Send + Sync + From<Self::G2Affine>
The prepared form of Self::G2Affine
.
Sourcetype Result: MillerLoopResult<Gt = Self::Gt>
type Result: MillerLoopResult<Gt = Self::Gt>
The type returned by Engine::miller_loop
.
Required Methods§
Sourcefn multi_miller_loop(
terms: &[(&Self::G1Affine, &Self::G2Prepared)],
) -> Self::Result
fn multi_miller_loop( terms: &[(&Self::G1Affine, &Self::G2Prepared)], ) -> Self::Result
Computes $$\sum_{i=1}^n \textbf{ML}(a_i, b_i)$$ given a series of terms $$(a_1, b_1), (a_2, b_2), …, (a_n, b_n).$$
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.