use super::*;
impl<N: Network> ComputeKey<N> {
pub fn to_address(&self) -> Address<N> {
let pk_prf = N::g_scalar_multiply(&self.sk_prf);
Address::new(self.pk_sig + self.pr_sig + pk_prf)
}
}
#[cfg(test)]
mod tests {
use super::*;
use snarkvm_console_network::MainnetV0;
type CurrentNetwork = MainnetV0;
const ITERATIONS: u64 = 1000;
#[test]
fn test_try_from() -> Result<()> {
let mut rng = TestRng::default();
for _ in 0..ITERATIONS {
let private_key = PrivateKey::<CurrentNetwork>::new(&mut rng)?;
let compute_key = ComputeKey::try_from(private_key)?;
let address = Address::try_from(private_key)?;
assert_eq!(address, compute_key.to_address());
}
Ok(())
}
}