zebra_chain/primitives/
proofs.rs
1use std::fmt::Debug;
4
5use serde::{de::DeserializeOwned, Serialize};
6
7use crate::serialization::{ZcashDeserialize, ZcashSerialize};
8
9mod bctv14;
10mod groth16;
11mod halo2;
12
13pub use self::bctv14::Bctv14Proof;
14pub use self::groth16::Groth16Proof;
15pub use self::halo2::Halo2Proof;
16
17pub trait ZkSnarkProof:
19 Clone
20 + Debug
21 + PartialEq
22 + Eq
23 + Serialize
24 + DeserializeOwned
25 + ZcashSerialize
26 + ZcashDeserialize
27 + private::Sealed
28{
29}
30
31impl ZkSnarkProof for Bctv14Proof {}
32impl ZkSnarkProof for Groth16Proof {}
33
34mod private {
35 use super::*;
36
37 pub trait Sealed {}
38 impl Sealed for Bctv14Proof {}
39 impl Sealed for Groth16Proof {}
40}