project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5

Vlock

Imagine being able to create votes and cast ballots entirely anonymously; to reward voters, count them down, and do so without ever needing to know their IDs. That's what VLOCK does! On-chain, thanks to our ZKP technology linked to SISMO and EAS.

Vlock

Created At

ETHGlobal Paris

Project Description

Our project, Vlock, enables on-chain voting in several stages: the company, association or other entity contacts us to cast a vote of its choice, and provides us with the eligibility criteria (e.g. age, address, company where the person works, etc.) for the vote.

After that, eligible voters will be able to cast 100% anonymous onchain votes. To do this, we start by using Sismo technology. We then use an initial off-chain verification in the back end to check that the user is eligible, so as to avoid paying transaction fees for someone who isn't eligible. After this initial verification, there's an on-chain verification via our smart-contract. Once the vault ID, the proof and the vote have been verified and recorded, an attestation is produced containing the SISMO vault ID and the propostal ID, all on EAS, enabling a vote to be obtained entirely anonymously.

How it's Made

First of all, in our project to achieve total anonymity within the framework (our case but it can also be applied to almost anything that concerns proof of identity characteristics), we turned to the use of the Sismo tool and EAS (Ethereum Attestation Service). We created our own WebApp using the Next.js framework, then the design and other aspects were added and we ended up using the app provided when we created it with Sismo (create sismo-connect-app). For our use case, we wanted to create a group via Sismo where we get proof that an individual is part of this group so that they can vote and then get a certificate via EAS to prove that they voted. So, from start to finish, it's not possible to determine who voted what or to find any particular person (the principle of anonymity). We've also created a number of different smart contracts, such as a voting contract, a whitelist contract (which allows you to add a sismoid linked to a voter, allowing it to vote but also preventing it from being re-voted), and a verify contract (which uses the SismoConnect library to validate responses and emit an event indicating whether the response has been successfully verified). We also wanted to create our own smart-contract to generate attestations via the libraries made available by EAS, but we had to change our minds because of user errors (after discussing with EAS, we sent our code to understand why it wasn't working, at the request of one of the mentors who asked us to share the code), so we decided to use the SDK.

background image mobile

Join the mailing list

Get the latest news and updates