dao-exec.zk 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. constant "DaoExec" {
  2. EcFixedPointShort VALUE_COMMIT_VALUE,
  3. EcFixedPoint VALUE_COMMIT_RANDOM,
  4. }
  5. contract "DaoExec" {
  6. # proposal params
  7. Base proposal_dest_x,
  8. Base proposal_dest_y,
  9. Base proposal_amount,
  10. Base proposal_serial,
  11. Base proposal_token_id,
  12. Base proposal_blind,
  13. # DAO params
  14. Base dao_proposer_limit,
  15. Base dao_quorum,
  16. Base dao_approval_ratio,
  17. Base gov_token_id,
  18. Base dao_public_x,
  19. Base dao_public_y,
  20. Base dao_bulla_blind,
  21. }
  22. circuit "DaoExec" {
  23. dao_bulla = poseidon_hash(
  24. dao_proposer_limit,
  25. dao_quorum,
  26. dao_approval_ratio,
  27. gov_token_id,
  28. dao_public_x,
  29. dao_public_y,
  30. dao_bulla_blind,
  31. # @tmp-workaround
  32. dao_bulla_blind,
  33. );
  34. # Proposal bulla is valid means DAO bulla is also valid
  35. # because of dao-propose-main.zk, already checks that when
  36. # we first create the proposal. So it is redundant here.
  37. proposal_bulla = poseidon_hash(
  38. proposal_dest_x,
  39. proposal_dest_y,
  40. proposal_amount,
  41. proposal_serial,
  42. proposal_token_id,
  43. dao_bulla,
  44. proposal_blind,
  45. # @tmp-workaround
  46. proposal_blind,
  47. );
  48. constrain_instance(proposal_bulla);
  49. }