Trait snarkvm_gadgets::traits::curves::pairing::PairingGadget[][src]

pub trait PairingGadget<Pairing: PairingEngine, F: Field> {
    type G1Gadget: GroupGadget<Pairing::G1Projective, F>;
    type G2Gadget: GroupGadget<Pairing::G2Projective, F>;
    type G1PreparedGadget: ToBytesGadget<F> + Clone + Debug;
    type G2PreparedGadget: ToBytesGadget<F> + AllocGadget<<Pairing::G2Affine as PairingCurve>::Prepared, F> + Clone + Debug;
    type GTGadget: FieldGadget<Pairing::Fqk, F> + Clone;
    fn miller_loop<CS: ConstraintSystem<F>>(
        cs: CS,
        p: &[Self::G1PreparedGadget],
        q: &[Self::G2PreparedGadget]
    ) -> Result<Self::GTGadget, SynthesisError>;
fn final_exponentiation<CS: ConstraintSystem<F>>(
        cs: CS,
        p: &Self::GTGadget
    ) -> Result<Self::GTGadget, SynthesisError>;
fn prepare_g1<CS: ConstraintSystem<F>>(
        cs: CS,
        q: Self::G1Gadget
    ) -> Result<Self::G1PreparedGadget, SynthesisError>;
fn prepare_g2<CS: ConstraintSystem<F>>(
        cs: CS,
        q: Self::G2Gadget
    ) -> Result<Self::G2PreparedGadget, SynthesisError>; fn pairing<CS: ConstraintSystem<F>>(
        cs: CS,
        p: Self::G1PreparedGadget,
        q: Self::G2PreparedGadget
    ) -> Result<Self::GTGadget, SynthesisError> { ... }
fn product_of_pairings<CS: ConstraintSystem<F>>(
        cs: CS,
        p: &[Self::G1PreparedGadget],
        q: &[Self::G2PreparedGadget]
    ) -> Result<Self::GTGadget, SynthesisError> { ... } }

Associated Types

Required methods

Provided methods

Computes a product of pairings.

Implementors