pub trait SNARKVerifierGadget<N, F> where
N: SNARK,
F: Field, {
type VerificationKeyGadget: AllocGadget<<N as SNARK>::VerifyingKey, F> + AllocBytesGadget<Vec<u8, Global>, F> + ToBytesGadget<F>;
type ProofGadget: AllocGadget<<N as SNARK>::Proof, F> + AllocBytesGadget<Vec<u8, Global>, F>;
type Input: ToBitsBEGadget<F> + Clone + ?Sized;
fn check_verify<CS, I>(
cs: CS,
verification_key: &Self::VerificationKeyGadget,
input: I,
proof: &Self::ProofGadget
) -> Result<(), SynthesisError>
where
CS: ConstraintSystem<F>,
I: Iterator<Item = Self::Input>;
}
impl<Pairing, F, P, C, V> SNARKVerifierGadget<GM17<Pairing, C, V>, F> for GM17VerifierGadget<Pairing, F, P> where
C: ConstraintSynthesizer<<Pairing as PairingEngine>::Fr>,
P: PairingGadget<Pairing, F>,
F: Field,
V: ToConstraintField<<Pairing as PairingEngine>::Fr>,
Pairing: PairingEngine, impl<PairingE, ConstraintF, P, C, V> SNARKVerifierGadget<Groth16<PairingE, C, V>, ConstraintF> for Groth16VerifierGadget<PairingE, ConstraintF, P> where
C: ConstraintSynthesizer<<PairingE as PairingEngine>::Fr>,
P: PairingGadget<PairingE, ConstraintF>,
V: ToConstraintField<<PairingE as PairingEngine>::Fr>,
PairingE: PairingEngine,
ConstraintF: Field,