RFI ZCG Coin-weighted Voting Proposal

Starting with the belief that ZEC holders have a vested interest in the success of Zcash, we deserve a feedback system that is transparently verifiable, yet leverages the privacy-preserving benefits of Zcash. With the recent community discussions around licensing of NU5-related software, it is more important than ever to give ZEC holders a voice.

ZIP-1014 has a Non-requirement section that states: “General on-chain governance is outside the scope of this proposal. Rigorous voting mechanisms (whether coin-weighted, holding-time-weighted or one-person-one-vote) are outside the scope of this proposal, though there is prescribed room for integrating them once available.”

Zcash will not be the first project to undertake such a coin-weighted voting mechanism. Many other coins have made it functional and have made the community happy by making their voice heard, even at times when large holders with skin in the game vote against the choice of minority coin holders. Additional consideration needs to be given to what questions are allowed to be voted on. There have been a lot of discussions around coin holder-weighted voting and we think we can create a design that is easy for ZEC holders to use that addresses questions raised by community members. I personally would not want supply cap or consensus changes brought up to vote with coin voting. This is similar to how other cryptocurrency projects have leveraged coin voting - by limiting the vote to decide on community initiatives or awarding grants.

An ideal coin voting mechanism would consist of a set of constraints, rules, rewards, and an accessible, privacy-preserving, web-based system to achieve a non-binding coin-weighted voting system. Over time, Zcash wallets & exchanges may include a dedicated voting portal to make it easy for every holder to take part. Coin Voting will enable all ZEC holders to participate in the decision-making process to contribute to the growth and usability of Zcash. The coin-weighted voting mechanism for the Zcash community is designed for simplicity and maximum participation:

Here is a list of ideas to shape the rules:

  • Incentivize users to migrate to Shielded ZEC for participating in the voting round.
  • It does not require coins to be moved to a transparent address.
  • Give every ZEC holder an easy way to take part in coin-weighted voting.
  • Reward users that take part in the voting rounds.
  • Add the requirement of holding Shielded ZEC through the quarterly voting round to count the votes.
  • Questions for voting can be discussed on the forums prior to the start of the voting round.
  • Aim to have quarterly voting rounds.
  • Prevent users from gaming the vote by acquiring easy influence via short-term loans.
  • Have a minimum threshold of ~2 ZEC allocation requirements to take part in voting to reduce spam.
  • The ZEC allocation by users is free to be spent if needed, and not locked.
  • Build an easy-to-use web portal with a list of items up for a vote, that generates a scannable Payment URI with a memo formatted for the voting.
  • Use Viewing Keys to keep the tally of votes and voting results in a decentralized and publicly verifiable manner.
  • Allow change of vote till the end of the voting round by adopting the ZIP-304 signature model, or limiting it to a one-time vote at the onset of the 3 months voting round.
  • Avoid linkability of voting history across different voting rounds by requiring the creation of new Shielded address for each voting round.
  • Conduct a trial round of voting and publish the learnings and research.

Voting Schedule, Commitments, and Rewards:

  • Four quarterly voting rounds per calendar year.
  • Each holder must commit to keeping a certain ZEC balance for each quarterly period.
  • There will be at least one voting session in each voting round.
  • Zcash holders must vote in each voting session but can choose to “vote with the ZCG recommendation”.
  • Every measure to be voted on will have links to discussions on the Zcash forum.
  • Holders who maintain their coin allocation and successfully cast their vote are eligible to claim rewards for taking part in voting.
  • Rewards are proportional to the ZEC commitment by each holder.
  • Specific Rewards pool for each period, decided by Voting Rounds/ZCG vote.

Step-by-step mechanism for a privacy-preserving, decentralized, publicly verifiable voting rounds:

  • This requires the building of an easy-to-use web portal with a list of items up for a vote, that generates a scannable Payment URI for the user to generate a transaction to their own newly created shielded address to take part in voting.
  1. Zcash holders decide how much ZEC they want to allocate for the predefined 3-month voting round.
  2. The user creates a fresh Shielded Address and sends ZEC equal to or more than the allocation amount.
  3. The user shares the viewing key of the address to a web portal.
  4. The portal checks for existing entry and possibly even the structure of the memo and that a fresh address is used(no other history of memos) before adding the VK to the voting round.
  5. A snapshot of VK balances submitted is taken at the beginning of the 3 month period.
  6. The user can update the votes by sending a new signed shielded memo to their UA. (this amount of ZEC will not be counted towards the total voting power as the snapshot date has passed)
  7. The portal keeps track of all VKs and balances on a regular basis throughout the voting round.
  8. The user votes on proposals(added by ZCG on the web portal by the input from the forum) by sending a shielded memo with Q/A choice during the voting round (e.g. first 4 weeks of the quarter). This process can be made easier by using a web form with questions & a Payment Request to the user’s voting UA address.
  9. At the end of the voting round, the web portal verifies that each VK balance did not dip below the initial allocated balance, and votes were submitted in the form of shielded memos and confirmed & verified that each VK completed voting on all the questions.
  10. Following the verification by ZCG, the votes for the user are counted towards the questions, and the results are shared with the community.
  11. A predefined amount of ZEC is allocated to all the voters’ addresses depending on the % of their share in the total voting coins.
  12. ZEC allocation for the next round of voting begins 2 weeks before the end of the quarter.

Next steps:

  1. Discuss and review the feasibility of the proposed coin voting mechanism.
  2. Gather the list of questions to be put up for a vote, including the question about how many rewards in ZEC to allocate for the next 4 voting rounds in 2023.
  3. Plan for the first voting round starting this October 1st to December 31st.
  4. Build out the simplified portal with a CRON job to monitor the balances and vote by reading the last shielded memo.
  5. Source rewards for the voting round from the ZCG discretionary budget and poll ZCAP + coin voting for a separate budget set aside for coin voting rewards in 2023.
  6. Plan a web/mobile app for easy access and memo generation.
  7. Work with wallet developers & exchanges to provision a dedicated voting address for every user to hold balances for the duration of the voting round.

Items to finalize:

  1. ZCG site to host the coin-weighted voting interface.
  2. Allocate 100 ZEC from the discretionary budget for the trial run vote for Oct 1 - Dec 31, 2022.
  3. Write a script and audit it to disburse rewards to the successful participants.

Acknowledgment:

​​I’d like to thank Michael Harms @BrunchTime for brainstorming several voting mechanisms employed in the cryptocurrency space, Brian @wobbzz, Jason McGee @aquietinvestor, and Hudson Jameson @Souptacular for review & feedback on drafts of this proposal. And thanks to @pacu for helping review the idea to leverage ZIP-304 signature scheme.

Thanks to Balsamiq for providing me a license key completely free of charge for contributing to the open-source projects in Zcash.

22 Likes

Woohoo! Yes!

I would prefer the reward pool to be open for donation. Maybe not the trial run, but for future uses. Also, an entity should be able to “sponsor” a vote for topics they feel the community should weigh in.

The sponsor idea here is great - it also helps bring to light the inherit bias or quasi-shadow support that might actually be behind a proposal by just saying so from the beginning. This is viable on eth chain a bit easier obviously but saw this recently and seems like a great way to help the community decide on what should be voted on in the first place: https://twitter.com/flynnjamm/status/1541424444220080129?s=21&t=qvYnJrdEBAfm35sBC0TYlQ.

Is this the intended workflow?

  1. I create a new UA and put X ZEC in it.
  2. I submit my viewing key for this UA to voting site.
  3. I send my votes from this UA to the voting address, z2z.
  4. If the balance of the UA is greater than X at the closing of the voting period, my votes are counted.
  5. I get a reward in the UA for voting.

I’m trying to understand steps 3 and 4 here, if I’m voting out of this address, the balance will dip below X from all the votes I send, so I’d need to refill the UA before the closing, or initially fund it with X + fees. Is that correct?

2 Likes

The sending of ZEC with memo would need to happen in 1 step if the voting round does not have the Memo Signature requirement(which will require a larger effort to implement). One-shot voting also restricts the ability to change the vote over the 3 month voting period.

The balance must never dip below the initial allocation, if the ZEC was moved, the voting address is marked “NOT ELIGIBLE” for rewards.

2 Likes

So the flow would be:

  1. Create new UA
  2. Submit viewing key for this UA to voting site
  3. Send X ZEC to UA with your votes in the memo, with X > voting threshold
  4. Get rewards in UA at the end of the voting period
6 Likes

Good proposal

Excellent, probably I am not grasping all the aspects correctly but the start is really promising.

Does the vote count, though?

No, once a VK is marked as “NOT ELIGIBLE” their vote is not included in the tally, nor do they receive rewards. Or anyone would take short-term loans to move the vote in their favor.

3 Likes

What are the downsides of letting voters decide not only how much but also how long to vote with their ZEC?

If a whale wants their fin to influence the project for whichever reason, they “lockbox” their ZEC for 10 years, which should yield them more weight in the vote.

Thoughts?