simple.zk 623 B

1234567891011121314151617181920212223242526
  1. k = 13;
  2. field = "pallas";
  3. constant "Simple" {
  4. EcFixedPointShort VALUE_COMMIT_VALUE,
  5. EcFixedPoint VALUE_COMMIT_RANDOM,
  6. }
  7. witness "Simple" {
  8. Base value,
  9. Scalar value_blind,
  10. }
  11. circuit "Simple" {
  12. # Pedersen commitment for coin's value
  13. vcv = ec_mul_short(value, VALUE_COMMIT_VALUE);
  14. vcr = ec_mul(value_blind, VALUE_COMMIT_RANDOM);
  15. value_commit = ec_add(vcv, vcr);
  16. # Since the value commit is a curve point, we fetch its coordinates
  17. # and constrain them:
  18. value_commit_x = ec_get_x(value_commit);
  19. value_commit_y = ec_get_y(value_commit);
  20. constrain_instance(value_commit_x);
  21. constrain_instance(value_commit_y);
  22. }