Skip to content
@ChainElect

ChainElect

Blockchain-based electronic voting system for secure and transparent elections.

🗳️ ChainElect — Decentralized Zero-Knowledge Voting System

ChainElect is an end-to-end open-source platform enabling secure, anonymous, and verifiable voting using zero-knowledge proofs (ZKPs), Merkle trees, and blockchain smart contracts.


🔍 Overview

Traditional voting systems often sacrifice privacy or trust. ChainElect solves this by combining:

  • Zero-Knowledge Proofs (zkSNARKs) to guarantee vote validity without revealing voter identity or vote content
  • Merkle Trees for efficient and privacy-preserving voter eligibility proofs
  • Ethereum Smart Contracts to verify proofs and record votes immutably on-chain
  • Web3 Frontend allowing users to securely connect wallets and cast votes with privacy guarantees
  • Backend Services to handle proof generation, Merkle tree management, and interactions with circuits

📁 Repository Structure

ChainElect is modularized into multiple repositories:

Repo Name Purpose Link
chainelect-zkp Circom circuits, proof generation, verifier contracts github.com/ChainElect/chainelect-zkp
chainelect-backend API server, Merkle tree generation, proof orchestration github.com/ChainElect/chainelect-backend
chainelect-frontend React-based Web3 dApp, wallet integration, user interface github.com/ChainElect/chainelect-frontend

⚙️ Getting Started

Prerequisites

  • Node.js v16+
  • npm/yarn
  • Circom and SnarkJS installed globally for ZKP repo
  • MetaMask or compatible Web3 wallet for frontend
  • Ethereum client or testnet access (Sepolia, Goerli, etc.)

Setup

  1. Clone desired repos, e.g. chainelect-zkp, chainelect-backend, and chainelect-frontend.
  2. Follow each repo’s README for installation and configuration.
  3. Run the backend and frontend concurrently to start a full local environment.
  4. Deploy verifier contracts on your chosen testnet/mainnet.

🔐 How It Works

  1. Voter Registration: Backend builds a Merkle tree of eligible voters.
  2. Proof Generation: Voter uses frontend & backend tools to generate a zero-knowledge proof of vote validity without revealing the vote.
  3. On-chain Verification: Solidity verifier contract checks the proof and records the vote.
  4. Vote Privacy: Zero knowledge keeps voter identity and choice confidential while ensuring integrity.

📜 License

ChainElect is open source under the MIT License.


🤝 Contributions

We welcome contributions from researchers, developers, and enthusiasts interested in advancing privacy-preserving voting.

Please see CONTRIBUTING.md for guidelines.


📞 Contact

For questions or collaboration inquiries, reach out at [contact@chainelect.org] or open issues here on GitHub.


🌟 Acknowledgments

  • Circom and SnarkJS communities
  • Ethereum Foundation
  • Privacy and cryptography researchers

Thank you for supporting transparent, secure, and private voting with ChainElect!

Pinned Loading

  1. back-end back-end Public

    Blockchain-based electronic voting system backend for secure and transparent elections.

    JavaScript

  2. ZKP ZKP Public

    Circom circuits, zkSNARK proof system, and Solidity verifiers for ChainElect’s zero-knowledge voting system.

    JavaScript

  3. front-end front-end Public

    Blockchain-based electronic voting system front-end for secure and transparent elections.

    TypeScript

  4. chain-elect-infra chain-elect-infra Public

    Infrastructure as Code (IaC) for ChainElect, managing cloud resources, deployments, api-gateway, and CI/CD automation with Terraform and Ansible.

    HCL

  5. smart-contract smart-contract Public

    Here you will find a smart contract, build in HardHat Project that has integrated scripts

    Solidity

Repositories

Showing 6 of 6 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…