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

VoteGuard

VoteGuard lets you prove your vote is valid without revealing who you are or what you chose.

VoteGuard

Created At

ETHGlobal Taipei

Winner of

Celo

Celo - Celo L2 Pool Prize

Prize Pool

Project Description

We integrate with Self Protocol to enable on-chain identity verification while preserving user privacy. Voters begin the process by scanning their passport information, which is processed inside a Trusted Execution Environment (TEE). This secure enclave generates a cryptographic proof of eligibility—for example, proving citizenship or age—without exposing the actual document data.

This proof is then bound to the voter’s wallet and can be verified by a smart contract during the voting process. Our voting contract is deployed on the Celo blockchain, a mobile-friendly, low-cost, and sustainable Layer 2 chain. By performing on-chain verification, we ensure that only eligible individuals can cast votes, effectively preventing Sybil attacks and other forms of identity fraud.

When it’s time to vote, the system leverages zero-knowledge proofs (zkPs) to confirm that the user meets the criteria (e.g., nationality, age, uniqueness) without revealing any sensitive personal information. This means that voters stay anonymous, but their eligibility is still cryptographically verified.

This design guarantees a balance between privacy and integrity: voters retain control of their identity and data, yet the system remains resistant to manipulation. All the heavy lifting—identity attestation, eligibility filtering, and vote validation—is done on-chain, making the process transparent and trustless.

With zk voting and Self Protocol integration, we offer a secure, scalable, and privacy-preserving voting solution, built entirely on blockchain.

How it's Made

Our frontend is built with Next.js, providing a responsive and modern user interface for seamless interaction. On the backend, our smart contracts are written in Solidity and deployed on the Celo mainnet, leveraging its mobile-friendly, fast, and cost-efficient infrastructure.

The system offers two core functionalities: creating a vote and casting a vote with verification. When a vote is created, the initiator obtains a proof of identity by scanning their passport. This sensitive data is processed securely inside a Trusted Execution Environment (TEE), which generates a cryptographic attestation of the required attributes—such as nationality, age, or uniqueness.

This proof is then associated with the voting criteria defined during the vote creation. When a user wants to cast a vote, they must submit both their voting choice and the identity proof to the smart contract. The contract verifies whether the submitted identity proof satisfies the criteria set during vote creation (e.g., only citizens of a specific country, or only one vote per person).

If the identity is valid and the voter has not voted before, the smart contract accepts the vote and securely records it on-chain. This ensures that only eligible voters can participate, and no one can vote multiple times—effectively mitigating Sybil attacks and preserving the integrity of the voting process.

By combining TEE-based identity attestation, on-chain verification, and a user-friendly frontend, we deliver a fully decentralized and privacy-preserving voting platform that ensures both security and usability.

background image mobile

Join the mailing list

Get the latest news and updates