use super::*;
impl<A: Aleo, Private: Visibility<A>> Record<A, Private> {
pub fn serial_number(private_key: PrivateKey<A>, commitment: Field<A>) -> Field<A> {
let h = A::hash_to_group_psd2(&[A::serial_number_domain(), commitment.clone()]);
let gamma = h * private_key.sk_sig();
Self::serial_number_from_gamma(&gamma, commitment)
}
pub fn serial_number_from_gamma(gamma: &Group<A>, commitment: Field<A>) -> Field<A> {
let sn_nonce = A::hash_to_scalar_psd2(&[A::serial_number_domain(), gamma.mul_by_cofactor().to_x_coordinate()]);
A::commit_bhp512(&(A::serial_number_domain(), commitment).to_bits_le(), &sn_nonce)
}
}