From 81038e0fcbad4b125a14d7be1bf2d783dace84c5 Mon Sep 17 00:00:00 2001 From: Deirdre Connolly Date: Sun, 4 Apr 2021 20:59:46 -0400 Subject: [PATCH] orchard: ValueCommit ops implementation tests --- zebra-chain/src/orchard/commitment.rs | 185 +++++++++----------------- 1 file changed, 60 insertions(+), 125 deletions(-) diff --git a/zebra-chain/src/orchard/commitment.rs b/zebra-chain/src/orchard/commitment.rs index 83dd8fb7e..3adf0c313 100644 --- a/zebra-chain/src/orchard/commitment.rs +++ b/zebra-chain/src/orchard/commitment.rs @@ -332,161 +332,96 @@ impl ValueCommitment { } } -// #[cfg(test)] -// mod tests { +#[cfg(test)] +mod tests { -// use std::ops::Neg; + use std::ops::Neg; -// use super::*; + use group::Group; -// #[test] -// fn sinsemilla_hash_to_point_test_vectors() { -// zebra_test::init(); + use super::*; -// const D: [u8; 8] = *b"Zcash_PH"; + // #[test] + // fn sinsemilla_hash_to_point_test_vectors() { + // zebra_test::init(); -// for test_vector in test_vectors::TEST_VECTORS.iter() { -// let result = -// pallas::Affine::from(sinsemilla_hash_to_point(D, &test_vector.input_bits.clone())); + // const D: [u8; 8] = *b"Zcash_PH"; -// assert_eq!(result, test_vector.output_point); -// } -// } + // for test_vector in test_vectors::TEST_VECTORS.iter() { + // let result = + // pallas::Affine::from(sinsemilla_hash_to_point(D, &test_vector.input_bits.clone())); -// TODO: these test vectors for ops are from Jubjub, replace with Pallas ones + // assert_eq!(result, test_vector.output_point); + // } + // } -// #[test] -// fn add() { -// zebra_test::init(); + #[test] + fn add() { + zebra_test::init(); -// let identity = ValueCommitment(pallas::Affine::identity()); + let identity = ValueCommitment(pallas::Affine::identity()); -// let g = ValueCommitment(pallas::Affine::from_raw_unchecked( -// pallas::Base::from_raw([ -// 0xe4b3_d35d_f1a7_adfe, -// 0xcaf5_5d1b_29bf_81af, -// 0x8b0f_03dd_d60a_8187, -// 0x62ed_cbb8_bf37_87c8, -// ]), -// pallas::Base::from_raw([ -// 0x0000_0000_0000_000b, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// ]), -// )); + let g = ValueCommitment(pallas::Affine::generator()); -// assert_eq!(identity + g, g); -// } + assert_eq!(identity + g, g); + } -// #[test] -// fn add_assign() { -// zebra_test::init(); + #[test] + fn add_assign() { + zebra_test::init(); -// let mut identity = ValueCommitment(pallas::Affine::identity()); + let mut identity = ValueCommitment(pallas::Affine::identity()); -// let g = ValueCommitment(pallas::Affine::from_raw_unchecked( -// pallas::Base::from_raw([ -// 0xe4b3_d35d_f1a7_adfe, -// 0xcaf5_5d1b_29bf_81af, -// 0x8b0f_03dd_d60a_8187, -// 0x62ed_cbb8_bf37_87c8, -// ]), -// pallas::Base::from_raw([ -// 0x0000_0000_0000_000b, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// ]), -// )); + let g = ValueCommitment(pallas::Affine::generator()); -// identity += g; -// let new_g = identity; + identity += g; + let new_g = identity; -// assert_eq!(new_g, g); -// } + assert_eq!(new_g, g); + } -// #[test] -// fn sub() { -// zebra_test::init(); + #[test] + fn sub() { + zebra_test::init(); -// let g_point = pallas::Affine::from_raw_unchecked( -// pallas::Base::from_raw([ -// 0xe4b3_d35d_f1a7_adfe, -// 0xcaf5_5d1b_29bf_81af, -// 0x8b0f_03dd_d60a_8187, -// 0x62ed_cbb8_bf37_87c8, -// ]), -// pallas::Base::from_raw([ -// 0x0000_0000_0000_000b, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// ]), -// ); + let g_point = pallas::Affine::generator(); -// let identity = ValueCommitment(pallas::Affine::identity()); + let identity = ValueCommitment(pallas::Affine::identity()); -// let g = ValueCommitment(g_point); + let g = ValueCommitment(g_point); -// assert_eq!(identity - g, ValueCommitment(g_point.neg())); -// } + assert_eq!(identity - g, ValueCommitment(g_point.neg())); + } -// #[test] -// fn sub_assign() { -// zebra_test::init(); + #[test] + fn sub_assign() { + zebra_test::init(); -// let g_point = pallas::Affine::from_raw_unchecked( -// pallas::Base::from_raw([ -// 0xe4b3_d35d_f1a7_adfe, -// 0xcaf5_5d1b_29bf_81af, -// 0x8b0f_03dd_d60a_8187, -// 0x62ed_cbb8_bf37_87c8, -// ]), -// pallas::Base::from_raw([ -// 0x0000_0000_0000_000b, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// ]), -// ); + let g_point = pallas::Affine::generator(); -// let mut identity = ValueCommitment(pallas::Affine::identity()); + let mut identity = ValueCommitment(pallas::Affine::identity()); -// let g = ValueCommitment(g_point); + let g = ValueCommitment(g_point); -// identity -= g; -// let new_g = identity; + identity -= g; + let new_g = identity; -// assert_eq!(new_g, ValueCommitment(g_point.neg())); -// } + assert_eq!(new_g, ValueCommitment(g_point.neg())); + } -// #[test] -// fn sum() { -// zebra_test::init(); + #[test] + fn sum() { + zebra_test::init(); -// let g_point = pallas::Affine::from_raw_unchecked( -// pallas::Base::from_raw([ -// 0xe4b3_d35d_f1a7_adfe, -// 0xcaf5_5d1b_29bf_81af, -// 0x8b0f_03dd_d60a_8187, -// 0x62ed_cbb8_bf37_87c8, -// ]), -// pallas::Base::from_raw([ -// 0x0000_0000_0000_000b, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// 0x0000_0000_0000_0000, -// ]), -// ); + let g_point = pallas::Affine::generator(); -// let g = ValueCommitment(g_point); -// let other_g = ValueCommitment(g_point); + let g = ValueCommitment(g_point); + let other_g = ValueCommitment(g_point); -// let sum: ValueCommitment = vec![g, other_g].into_iter().sum(); + let sum: ValueCommitment = vec![g, other_g].into_iter().sum(); -// let doubled_g = ValueCommitment(g_point.into().double().into()); + let doubled_g = ValueCommitment(g_point.to_curve().double().into()); -// assert_eq!(sum, doubled_g); -// } -// } + assert_eq!(sum, doubled_g); + } +}