ZKVote: The Invisible Ballot That Could Unite the World.


Midnight Network Challenge: Protect That Data

This is a submission for the Midnight Network “Privacy First” Challenge – Protect That Data prompt



What I Built

ZKVote is a decentralized voting DApp that empowers global citizens to anonymously vote on humanity’s next big innovation priority — from climate tech to ethical AI. Built on the Midnight Network, it uses zero-knowledge proofs to verify voter eligibility without revealing identity, ensuring privacy and trust in every vote.

The app solves a critical problem: how can we enable global participation in decision-making without compromising personal data or exposing individuals to surveillance, bias, or retaliation?



Demo

ZKVote Repo 👉

  • Voting dashboard with animated innovation cards
  • ZK proof submission interface
  • Real-time global results heatmap
    “Your vote has been encrypted” confirmation modal



How I Used Midnight’s Technology

ZKVote is built using:

  • MidnightJS for smart contract logic and blockchain interactions
  • Compact language to define zero-knowledge circuits for voter eligibility
  • Mocked tokens to simulate unique voter credentials
  • Privacy-preserving smart contracts that store encrypted votes and prevent double voting using nullifiers



Data Protection as a Core Feature

Privacy isn’t a layer — it’s the foundation. ZKVote ensures:

  • No personal data is ever stored or exposed
  • Voter identity is never linked to vote content
  • One vote per user is enforced using ZK nullifiers
  • All votes are encrypted and stored on-chain in a format that’s publicly auditable but completely anonymous
    This design allows people to vote freely, especially on sensitive global topics, without fear of surveillance or profiling.



Set Up Instructions / Tutorial

🧪 Prerequisites
Node.js v18+

MidnightJS SDK installed

Compact compiler configured
⚙️ Installation
git clone https://github.com/Revis047/ZKVOTE
cd ZKVOTE
npm install
npm run dev

Quick tutorial:

Click “Generate ZK Credential” → button switches to “Credential Ready”.
Tap a card to cast your encrypted vote → success dialog → “View Live Results”.
If you try again, you’ll see “Already voted”; use Results for tallies and regional breakdown.

Solo submission by @revis047.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *