lib.rs 539 B

12345678910111213141516171819
  1. pub mod circuit;
  2. use halo2::{
  3. arithmetic::{CurveExt, FieldExt},
  4. pasta::{Ep, Fq},
  5. };
  6. use orchard::constants::fixed_bases::{
  7. VALUE_COMMITMENT_PERSONALIZATION, VALUE_COMMITMENT_R_BYTES, VALUE_COMMITMENT_V_BYTES,
  8. };
  9. #[allow(non_snake_case)]
  10. pub fn pedersen_commitment(value: u64, blind: Fq) -> Ep {
  11. let hasher = Ep::hash_to_curve(VALUE_COMMITMENT_PERSONALIZATION);
  12. let V = hasher(&VALUE_COMMITMENT_V_BYTES);
  13. let R = hasher(&VALUE_COMMITMENT_R_BYTES);
  14. let value = Fq::from_u64(value);
  15. V * value + R * blind
  16. }