use crate::CommitmentScheme; use algebra::Field; use r1cs_core::{ConstraintSystem, SynthesisError}; use r1cs_std::prelude::*; use std::fmt::Debug; pub trait CommitmentGadget { type OutputGadget: EqGadget + ToBytesGadget + AllocGadget + Clone + Sized + Debug; type ParametersGadget: AllocGadget + Clone; type RandomnessGadget: AllocGadget + Clone; fn check_commitment_gadget>( cs: CS, parameters: &Self::ParametersGadget, input: &[UInt8], r: &Self::RandomnessGadget, ) -> Result; }