crypto.rs 564 B

123456789101112131415161718
  1. use pasta_curves::{
  2. arithmetic::{CurveExt, FieldExt},
  3. pallas,
  4. };
  5. use crate::constants::fixed_bases::{
  6. VALUE_COMMITMENT_PERSONALIZATION, VALUE_COMMITMENT_R_BYTES, VALUE_COMMITMENT_V_BYTES,
  7. };
  8. #[allow(non_snake_case)]
  9. pub fn pedersen_commitment(value: u64, blind: pallas::Scalar) -> pallas::Point {
  10. let hasher = pallas::Point::hash_to_curve(VALUE_COMMITMENT_PERSONALIZATION);
  11. let V = hasher(&VALUE_COMMITMENT_V_BYTES);
  12. let R = hasher(&VALUE_COMMITMENT_R_BYTES);
  13. let value = pallas::Scalar::from_u64(value);
  14. V * value + R * blind
  15. }