simple.pism 863 B

1234567891011121314151617181920212223242526272829303132333435
  1. # :set syntax=pism
  2. # :source ../scripts/pism.vim
  3. constant G_SPEND FixedGenerator
  4. constant CRH_IVK BlakePersonalization
  5. constant JUBJUB_FR_CAPACITY BinarySize
  6. constant NOTE_COMMIT PedersenPersonalization
  7. contract input_spend
  8. param secret Fr
  9. param ak Point
  10. param value U64
  11. start
  12. witness ak param:ak
  13. assert_not_small_order ak
  14. fr_as_binary_le secret param:secret
  15. ec_mul_const public secret G_SPEND
  16. ec_add public public ak
  17. emit_ec public
  18. alloc_binary preimage
  19. ec_repr repr_ak ak
  20. binary_extend preimage repr_ak
  21. static_assert_binary_size preimage 256
  22. blake2s ivk preimage CRH_IVK
  23. binary_clone ivk2 ivk
  24. emit_binary ivk
  25. binary_truncate ivk2 JUBJUB_FR_CAPACITY
  26. u64_as_binary_le value_bits param:value
  27. ec_mul pk_d value_bits public
  28. pedersen_hash cm ivk NOTE_COMMIT
  29. ec_get_u cur cm
  30. end