Andreessen Horowitz, a prominent venture capital fund known as A16z, has unveiled "Cicada," a Solidity library designed to enable anonymous voting on the Ethereum blockchain. This innovative library ensures that the choices made by individual voters remain confidential until the conclusion of the polling period. In a blog post by A16z engineer Michael Zhu on May 24, it was revealed that when combined with zero-knowledge group membership systems like Semaphore, Cicada can also guarantee permanent anonymity of the voter's identity.
Cicada relies on time-lock puzzles, a cryptographic technique that allows users to encrypt secret values, which can only be deciphered after a specific time has elapsed, according to Zhu. While these puzzles have been in existence since 1996, previous implementations required users to disclose their secret values once the specified time period had passed. This created challenges in voting systems, particularly when users submitted their votes and subsequently went offline, rendering the votes uncountable.
In 2019, cryptographers Giulio Malavolta and Aravind Thyagarajan proposed the concept of "homomorphic" time-lock puzzles, which addressed the limitations of the previous approach. This advancement enabled the combination of puzzles, resulting in a final puzzle that was considerably easier to solve than the sum of its individual components. Importantly, the solution to the final puzzle only revealed the sum of the individual values without exposing the specific values themselves.
A16z's Cicada leverages these homomorphic puzzles to ensure that votes can be accurately counted, even if users go offline during the voting process.
During the implementation of Malavolta and Thyagarajan's system on the blockchain, A16z researchers encountered a crucial challenge in creating a fair voting system. Each choice had to be encoded as a boolean value of "1" or "0," leaving room for potential attacks aimed at manipulating voting power by incorrectly encoding votes. To address this vulnerability, Cicada requires voters to submit a zero-knowledge proof of ballot validity alongside their vote, ensuring the correct encoding without revealing the actual contents of the vote.
It is important to note that Cicada's confidentiality measures only apply throughout the active polling period. Once the poll has concluded or the time-lock period has elapsed, the contents of a vote can be determined by brute-forcing the puzzle. A16z suggests that the combination of Cicada with zero-knowledge group membership systems like Semaphore, Semacaulk, or zero-knowledge state proofs can effectively mitigate this concern. By doing so, brute-forcing the puzzle would only disclose that a vote was cast by an eligible voter, without divulging the specific credentials used to establish their eligibility.
As an illustration, Zhu provided a link to a sample contract created using Cicada, which also relies on Semaphore for verifying voter eligibility.
Voting systems have long been an integral part of decentralized autonomous organizations (DAOs), which frequently govern blockchain applications. However, many DAOs currently utilize tokens as a representation of votes, potentially leading to an imbalance of influence among users with a significant number of tokens. Recent incidents, including the governance attack on Tornado Cash, have underscored the necessity of transitioning towards more democratic voting systems within DAOs. In light of this, Sasha Ivanov, the founder of Waves, has advocated for the adoption of such systems to safeguard against future governance attacks.