simple.pism 942 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. # Below lines are random garbage
  19. # Uncomment them to test
  20. #alloc_binary preimage
  21. #ec_repr repr_ak ak
  22. #binary_extend preimage repr_ak
  23. #static_assert_binary_size preimage 256
  24. #blake2s ivk preimage CRH_IVK
  25. #binary_clone ivk2 ivk
  26. #emit_binary ivk
  27. #binary_truncate ivk2 JUBJUB_FR_CAPACITY
  28. #u64_as_binary_le value_bits param:value
  29. #ec_mul pk_d value_bits public
  30. #pedersen_hash cm ivk NOTE_COMMIT
  31. #ec_get_u cur cm
  32. end