pub trait PRF {
type Input: Default;
type Output: ToBytes + Eq + Clone + Default + Debug + Hash;
type Seed: FromBytes + ToBytes + PartialEq + Eq + Clone + Default + Debug;
fn evaluate(
seed: &Self::Seed,
input: &Self::Input
) -> Result<Self::Output, PRFError>;
}