bits.psm 584 B

123456789101112131415161718192021222324252627
  1. constant a 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000000
  2. constant d 0x2a9318e74bfa2b48f5fd9207e6bd7fd4292d7f6d37579d2601065fd6d6343eb1
  3. constant one 0x0000000000000000000000000000000000000000000000000000000000000001
  4. contract input_spend
  5. param x
  6. {% for n in range(255) %}
  7. private b_{{n}}
  8. {% endfor %}
  9. unpack_bits x b_0 b_254
  10. {% for n in range(255) %}
  11. # (1 - b) * b == 0
  12. lc0_add_one
  13. lc0_sub b_{{n}}
  14. lc1_add b_{{n}}
  15. enforce
  16. {% endfor %}
  17. lc0_add_bits b_0
  18. lc0_sub x
  19. enforce
  20. end