test.pism 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. param is_cool Bool
  12. param path Scalar
  13. {% for n in range(10) %}
  14. param path_{{ n }} Scalar
  15. param is_right_{{ n }} Bool
  16. {% endfor %}
  17. start
  18. # Compute P = xG + A
  19. witness ak param:ak
  20. assert_not_small_order ak
  21. fr_as_binary_le secret param:secret
  22. ec_mul_const public secret G_SPEND
  23. ec_add public public ak
  24. emit_ec public
  25. # Make some a blake2s hash
  26. alloc_binary preimage
  27. ec_repr repr_ak ak
  28. binary_extend preimage repr_ak
  29. static_assert_binary_size preimage 256
  30. blake2s ivk preimage CRH_IVK
  31. emit_binary ivk
  32. ############
  33. # For loop 10 times
  34. {% for n in range(10) %}
  35. alloc_bit is_right param:is_right_{{ n }}
  36. alloc_scalar path param:path_{{ n }}
  37. {% endfor %}
  38. ############
  39. # Below lines are random garbage
  40. # Uncomment them to test
  41. #binary_clone ivk2 ivk
  42. #binary_truncate ivk2 JUBJUB_FR_CAPACITY
  43. #u64_as_binary_le value_bits param:value
  44. #ec_mul pk_d value_bits public
  45. #pedersen_hash cm ivk NOTE_COMMIT
  46. #ec_get_u cur cm
  47. #
  48. #alloc_bit is_cool param:is_cool
  49. #clone_bit is_cool2 is_cool
  50. #binary_push ivk is_cool2
  51. #alloc_scalar path param:path
  52. #conditionally_reverse ul ur cur path is_cool
  53. #scalar_as_binary ul_bin ul
  54. #binary_extend preimage ul_bin
  55. #scalar_enforce_equal ur ul
  56. #emit_scalar ur
  57. end