pub trait Prove { type Proof; type Error; // Required method fn prove(self) -> Result<Self::Proof, Self::Error>; }