CloudVote Web3 Voting System

Secure and transparent decentralized voting application on the Ethereum blockchain.

SolidityHardhatEthers.jsJavascriptWeb3

Share this project:

Project Overview

๐Ÿ—ณ๏ธ CloudVote - Web3 Voting System

CloudVote is a decentralized voting application built on the Ethereum blockchain (Sepolia Testnet). This project ensures a secure, transparent, and immutable voting process, perfect for community decisions or small-scale elections.

It implements Privacy-Preserving Registration where voter names are hashed before being stored on-chain, ensuring that identities are protected while maintaining the integrity of the vote.


โœจ Key Features

  • Decentralized Infrastructure: No central authority can manipulate the results.
  • Privacy-Preserving: Voter names are hashed (Keccak-256) before being stored on-chain.
  • Sybil Resistance: Only registered hashes can cast a vote, and each hash can only vote once.
  • Real-time Blockchain Updates: Results are fetched directly from the smart contract.
  • Modern UI: Clean and intuitive interface for seamless voting.

๐Ÿ“ธ Preview

image

๐Ÿš€ Installation & Setup

  1. Clone the repository
git clone <repository-url>
cd web3-voting
  1. Install Dependencies
npm install
  1. Configure Environment Update hardhat.config.js with your Sepolia provider URL and Private Key.

  2. Generate Voter Hashes Add names to voters.csv, then run:

npm run hash
  1. Deploy the Smart Contract
npm run deploy
  1. Connect Frontend Copy the deployed contract address into frontend/index.html.

๐Ÿ“ Project Structure

web3-voting/
โ”œโ”€โ”€ contracts/          # Solidity smart contracts
โ”œโ”€โ”€ frontend/           # Web interface (HTML/JS/CSS)
โ”œโ”€โ”€ scripts/            # Deployment and helper scripts
โ”œโ”€โ”€ voters.csv          # List of registered voter names
โ”œโ”€โ”€ voterHashes.json    # Generated hashes for the blockchain
โ””โ”€โ”€ ...config files

๐Ÿงช Testing

Open the application in a Web3-compatible browser (like MetaMask) or use the developer tools to simulate different environments. Ensure you are connected to the correct network where the contract is deployed.