Andreessen Horowitz Venture Fund, also known as A16z, has released a Solidity library that can be used for anonymous voting on Ethereum. Called “Cicada,” the library prevents each voter’s choice from being revealed before the polling ends. When combined with zero-knowledge group membership systems like Semaphore, it can also make voters’ identities permanently unknowable, according to a May 24 blog post from engineer Michael Zhu of A16z.
Cicada relies on time-lock puzzles, a type of cryptography that allows users to encrypt secret values that can only be decrypted after a specific amount of time has passed, Zhu said.
These puzzles have been around since 1996. But before 2019, they will ask the user to reveal their secret values after a period of time has passed. In voting systems, this can cause problems when users submit their votes and then go offline, rendering all votes uncountable.
In 2019, the concept of a “homomorphic encryption” time-lock puzzle was proposed by cryptographers Giulio Malavolta and Aravind Thyagarajan. This allows puzzles to be added together to create a final puzzle that is much easier to solve than the sum of the individual puzzles. The solution to the final puzzle reveals only the sum of the individual values, not the individual values that make up this sum.