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.
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
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 |
- 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.)
- Clone desired repos, e.g.
chainelect-zkp
,chainelect-backend
, andchainelect-frontend
. - Follow each repo’s README for installation and configuration.
- Run the backend and frontend concurrently to start a full local environment.
- Deploy verifier contracts on your chosen testnet/mainnet.
- Voter Registration: Backend builds a Merkle tree of eligible voters.
- Proof Generation: Voter uses frontend & backend tools to generate a zero-knowledge proof of vote validity without revealing the vote.
- On-chain Verification: Solidity verifier contract checks the proof and records the vote.
- Vote Privacy: Zero knowledge keeps voter identity and choice confidential while ensuring integrity.
ChainElect is open source under the MIT License.
We welcome contributions from researchers, developers, and enthusiasts interested in advancing privacy-preserving voting.
Please see CONTRIBUTING.md for guidelines.
For questions or collaboration inquiries, reach out at [contact@chainelect.org] or open issues here on GitHub.
- Circom and SnarkJS communities
- Ethereum Foundation
- Privacy and cryptography researchers
Thank you for supporting transparent, secure, and private voting with ChainElect!