Zero-knowledge approval voting module


We are MixBytes team. We have an idea for the Aragon ecosystem to share and would really appreciate the feedback.

For now, there are no working smart contract-based anonymous voting systems. The existing prototypes face the problem of user identification and accounting. The existing Aragon user identification and authorization modules allow to partially solve the issue.

We think it could be useful to create a zero-knowledge voting module allowing Aragon users to vote for one of the given options, and the choice of a particular person will be unknown. We consider 2 options for implementation: zkSNARKS (with a trusted setup as a minus) or ring signatures (less convenient because of redundancy). The most effective one (in terms of security/gas/usability) can be chosen later.

This module could serve as the basis for other voting modules (decision-making in the DAO, arbitration of transactions, etc). Plus, the approval module integration will lead to a simpler and more secure system enabling Aragon users to vote straight from the browser without disclosing their choice.


I would love to see anonymous voting within Aragon.

There is a Nest RFP similar to this, and I don’t think the team that previously got approved for the grant ever delivered. For reference:

Do you think a mixer may be another possible solution to explore?

I’m definitely interested in learning more about how it would work as a module on top of existing apps, and whether there would have to be aragonOS level changes to support this (going the module route).


I don’t know why guys didn’t finish their voting as AragonApp - their protocol has some problems, like complexity of O(n) of casting a vote and ability of last voter to act before results will be published, but when using not for president election, but for actual DAO purposes - this voting should work well. Maybe there were business or positioning problems.
I think, that nobody delivered a working anonymous voting in Ethereum mostly because there is not enough computation power in smart-contracts for universal voting solution, suitable for large amount of voters and types of voting. We are waiting for new pre-compiled instructions for new curves, pairings, etc, allowing more effective proofs and verfiers.

We plan to explore two approaches:

  1. use last improvements in zkSNARKs + Ethereum, like and make zkSNARKs-based votings for many different types of voting. This can become the most effective and universal solution, but requires trusted setup ceremony.

  2. implement ring-signatures approach, allowing to make “plausible deniability” of votes, where voter can deny his voting even if he gave all his private keys to investigator. This is very secure and anonymous way for voting, but is more redundant and requires more computations on-chain.

In a few words - we plan to test zCash or Monero approaches to implement module, suitable for anonymous voting of fixed amount of Aragon users in any Aragon app. Sorry for non-clear answers, this area changes every month very fast, there are always “better solutions” on horizon :slight_smile:


This is very very cool, I can’t wait to see something like this in Aragon. Anonymous voting in unstoppable organizations :exploding_head::exploding_head::exploding_head:


Hi there. We have also worked on anonymous voting. Inspired by Vitalik talk at ETHNewYork

We have presented the idea .

Nowadays, the voting process became like a show.

Show of those who have more money, of those who have more power and advertisement, show people’s manipulation with total lack of truth and trust. People already forgot that it is not a show - it is a decision for future life. Our project offers finally honest voting process in any area of your life from business to government issues. We have developed the instrument that easy to use but with strong technical inside based on zkSNARKs implementation. We have made market research and found 10+ ways where this idea might be implemented. Thus, the idea is really in high demand:

Already two grant awards have been made by Aragon for the similar topic (anonymous voting on snarks or ring signatures)

And we have already groundwork and prototype.

I know @boogerwooge for a long time. We just met again on meetup, and I would like to say that** will be glad to cooperate and work further together in this direction.


I think, the task for MixBytes in this grant is to understand why other teams stopped (we have some suggestions, but need to research) and why there’s no anonymous voting as ready to use AragonApp, using all Araaagon features. Each voting solution has its advantges and disadvantages - and we need to gather and target the most important problems and deliver working solution, even it has some restrictions (amount of voters, complicated tallying of votes, etc). For now I see several approaches, and, maybe, voting app will include not only one solution, but the combination of them. Anyway - effective anonimous voting on blockchain still a research task, there’s no “best practices” and reference implementations of these protocols.

Yes, I know @skywinder and his team for a long time, their code is really good, and it’s highly possible we use one of their prototypes or ask for consulting about more effectife usage of SNARK-s - they’re definitely one of best Russian crypto teams working on succinct and zero-knowledge proofs.


Hi guys :eagle::wave:
Following your support, we have published a Nest proposal. :tada:
We would be grateful for any feedback, questions and suggestions.


Hi :wave: feel free to split this post off into its own topic of I’ve misunderstood, but is this topic essentially about enabling the concept of Approval Voting?

I’ve been searching for that and this topic was the most promising so far.

Unfortunately, fully decentralized voting (even the “approval” option) requires a lot of research. There are certain solutions (e.g. zkSNARKS, ring signatures, threshold signatures), but in practice they have unresolved issues like trusted setup or heavy computations. Our proposal to Aragon also includes research, mainly internal, and an Aragon module using the already designed protocol as a result.