Aragon ZK Research and Aztec have collaborated to conduct research on private voting for Nouns DAO over the past few months. They have recently completed their research, which includes a proof-of-concept and comprehensive reports. Additionally, they have developed two time-locked cryptography protocols to support their work. The funding for the Nouns DAO Private Voting Research Sprint was provided by Nouns DAO, a social and cultural decentralized autonomous organization (DAO) known for pushing the boundaries of governance experimentation. The research aimed to explore solutions for private voting within their organization. Three teams were funded for this project, with Aragon ZK Research and Aztec forming one of the teams. They were given a three-month timeframe to complete their research and deliver their findings.
The primary question they sought to answer in their research sprint was: to what extent is it possible to build a user-friendly, trustless, fair, weighted, and ballot-secret voting system in Ethereum? The answer they arrived at is that with the significant progress made in both research and development during the sprint, it is indeed possible. They have even developed a demonstration to validate their findings. The only parameter that was not addressed in their research was weighted voting. In their proof of concept, one vote is allowed per NFT (non-fungible token). Therefore, if an individual owns multiple NFTs, they need to cast a ballot separately for each one.
Private voting on the blockchain is crucial as it allows for decisions to remain confidential, which is desirable in certain situations. Public voting can create discomfort in cases where votes involve friends or colleagues, or in elections, where both voters and candidates may prefer their choices to be private. Additionally, public votes can be influenced through blackmail or bribes, whereas fully encrypted private voting ensures the voter’s choice remains undisclosed. Offering the option for private voting is essential, and doing it on the blockchain removes the need for intermediaries, making it even more secure.
The proof of concept developed by the teams adheres to the parameters set by Nouns DAO. However, it is important to note that it is not a final product; it is not market-ready and has not undergone an audit. Interaction with the proof of concept is done through the command-line interface (CLI) using code instead of a graphical interface. The proof of concept demonstrates the feasibility of trustless private voting on Ethereum and holds promise for the entire industry.
To test the proof of concept, users need to follow these steps:
1. Register your wallet: Each wallet must register its public key before participating in the voting process. This only needs to be done once per address. Users should connect their wallet to the zkRegistry app, register the public key, and copy the private key, which is required for voting.
2. Create the voting process: Any user can create a voting process through the CLI using the `create-process` subcommand. Binding the process to specific information can be done by providing an IPFS ID. Additional logic, such as limiting voting to wallets with owned or delegated NFTs, can be easily implemented at the smart contract level.
3. Cast your vote: Registered wallets that meet the eligibility requirements, such as holding NFTs, can generate a ballot and corresponding proofs. Through the CLI using the `vote` subcommand, the vote can be submitted to the Nouns voting smart contract (VSC) during the voting period. One vote is allowed per NFT, and users with multiple NFTs need to generate a new ballot for each one.
4. Tally the votes: After the voting period ends, and the decryption key is released, anyone can verify the outcome of the voting process by tallying the results. This can be done by using the CLI with the `tally` subcommand. The final results of the vote are shared without revealing the wallet addresses of the voters.
The development team will work on researching a solution for multisig support and developing a solution for vote aggregation before delivering the final product to Nouns DAO. Multisig support would enable multisigs to cast votes instead of just individual wallets, which is currently supported in the proof of concept. These tasks align with the roadmaps of Aragon ZK Research and Aztec Labs.
Aragon ZK Research plans to apply the knowledge gained from this project to DAOs built on Aragon OSx. They will continue developing key components by creating an Aragon OSx plugin, allowing DAOs on this platform to conduct entirely private votes. The project will likely be named zk-POPVOTE (zk Proof-based On-chain Private Voting), as described in their technical report.
Aztec Labs will contribute to Noir’s development to enhance the experience of trustless private voting, focusing on aspects like Recursive Aggregation in web browsers and in-browser proving optimizations. They will also research and develop the next version of their proving backend. These efforts are aimed at enabling ZK DAO Governance with these technologies.
For a deeper understanding of their research, interested readers can explore the provided documentation and repositories.