[][src]Trait snarkos_models::gadgets::curves::pairing::PairingGadget

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> + 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> { ... }
#[must_use] fn product_of_pairings<CS: ConstraintSystem<F>>(
        cs: CS,
        p: &[Self::G1PreparedGadget],
        q: &[Self::G2PreparedGadget]
    ) -> Result<Self::GTGadget, SynthesisError> { ... } }

Associated Types

Loading content...

Required methods

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>

Loading content...

Provided methods

fn pairing<CS: ConstraintSystem<F>>(
    cs: CS,
    p: Self::G1PreparedGadget,
    q: Self::G2PreparedGadget
) -> Result<Self::GTGadget, SynthesisError>

#[must_use]fn product_of_pairings<CS: ConstraintSystem<F>>(
    cs: CS,
    p: &[Self::G1PreparedGadget],
    q: &[Self::G2PreparedGadget]
) -> Result<Self::GTGadget, SynthesisError>

Computes a product of pairings.

Loading content...

Implementors

Loading content...