Traditional electoral systems exhibit critical vulnerabilities including vote manipulation, centralized points of failure, and compromised transparency that undermine democratic integrity. This research presents a decentralised blockchain-based secure voting system designed to address these challenges. The system employs Ethereum smart contracts written in Solidity to enforce immutable voting rules, Web3.js for blockchain integration, and MetaMask wallet authentication for secure voter verification. The architecture implements dual interfaces for voters and electoral commissions, with distributed consensus mechanisms ensuring real-time transaction validation. Smart contracts automatically enforce electoral rules while maintaining cryptographic immutability of voting transactions. The decentralised design eliminates single points of failure by distributing vote storage and validation across multiple nodes. System validation included unit, integration, system, and security testing. Results show prevention of vote tampering, elimination of double voting, and transparent, auditable election results. Implementation used Truffle framework, Ganache blockchain simulation, and Node.js back-end services following an Agile Prototype-based Iterative Development methodology. This work demonstrates blockchainβs feasibility in creating trustworthy electoral systems, offering a viable solution to electoral fraud and public confidence issues.
This software was developed as part of a final year project work at the Department of Computer Science, Plateau State University, Bokkos, titled βDesign and Implementation of a Blockchain-Based Secure Voting Systemβ by Ughili Samuel Adiwu. The paper would be available here after it has been defended.
- Uses Web3 wallet authentication for secure, decentralised user address verification.
- Employs Ethereum smart contracts to immutably record and secure votes on-chain.
- Removes centralised databases by using blockchainβs tamper-proof distributed ledger.
- Offers a permissioned commission dashboard with role-based management controls and real-time election monitoring.
- Provides a clean UI for seamless voting, transparent candidate information, and live blockchain feedback.
The following software versions are recommended for deploying this application (other versions might work).
- Node.js
v22.14.0
- Web3.js
v1.10.0
- Express.js
v4.17.14
- Solidity
v0.8.19
(solc-js) - Truffle
v5.11.5
(core: 5.11.5) - Ganache GUI
v2.7.1
(or Ganache CLIv7.9.1
) - MetaMask
v13.1.0
- ESBuild
v0.25.9
(or Browserify + Babelify or any ES6 bundler)
No Wallet (Voting Page) Sign In (Voting Page) Voter Detected (Electoral Commission Dashboard) Voting Page Official Detected (Voting Page) Electoral Commission Dashboard
The project directory is organised as follows:
BLOCKELECT (Prototype) # Project root directory
|
βββ build/ # Contract build artifacts
β βββ contracts/
β βββ VotingSys.json
βββ contracts/ # Solidity smart contracts
β βββ VotingSys.sol
βββ dist/ # Bundled/compiled frontend files for deployment
β βββ app.bundle.js
βββ migrations/ # Truffle migration scripts
β βββ 1_deploy_contracts.js
βββ node_modules/ # NPM dependencies
βββ src/ # Application source files
β βββ assets/ # Media assets
β β βββ blockchain.mp4
β β βββ favicon.svg
β β βββ logo.svg
β βββ css/ # UI stylesheets
β β βββ alert.css
β β βββ index.css
β β βββ official.css
β βββ icons/ # Bootstrap icon set
β β βββ fonts/
β β βββ bootstrap-icons.css
β βββ js/ # JavaScript logic files
β β βββ alert.js
β β βββ app.js
β βββ sounds/ # Sound effects
β β βββ error.wav
β β βββ info.wav
β β βββ success.wav
β β βββ warning.wav
β βββ index.html # Voter-facing interface
β βββ official.html # Official (admin) interface
βββ views/ # UI screenshots for documentation
β βββ commission_dashboard.png
β βββ official_detected.png
β βββ sign_in.png
β βββ voter_detected.png
β βββ voting.png
β βββ wallet_required.png
βββ LICENSE # Project license file
βββ package-lock.json # Locked versions of Node.js dependencies
βββ package.json # Project metadata & Node.js package configuration
βββ README.md # Project documentation
βββ server.js # Backend server (Node.js application entry-point)
βββ truffle-config.js # Truffle configuration file
This project is licensed under the MIT Licenseβyou are free to use, modify, and distribute of it, with attribution, but without warranty. To see a full breakdown of this license, click here.
Attribution
All the sound effects included in this project are from Microsoft Windows, which are the property of Microsoft Corporation. These sounds are used for demonstration purposes only and remain subject to Microsoftβs copyright and licensing terms.
Give this repository a β if you like it.