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