Project Report.pdf
Project Report.pdf
By :
- Azer Raissi
3 IOTSE
Discipline : Blokchain
Decentralized voting using Ethereum blockchain is a secure, transparent and tamper-proof way of
conducting online voting. It is a decentralized application built on the Ethereum blockchain network,
which allows participants to cast their votes and view the voting results without the need for
intermediaries. In this system, votes are recorded on the blockchain, making it impossible for anyone
to manipulate or alter the results. The use of smart contracts ensures that the voting process is
automated, transparent, and secure. The use of the blockchain technology and the implementation of a
decentralized system provide a reliable and cost-effective solution for conducting trustworthy and fair
elections.
CONTENTS
1 Introduction 1
2 Literature survey 3
3 Existing System 6
4 Proposed System 7
5 Modules 10
6 System Design 11
7 Coding 15
8 Testing 25
Screenshots 30
List of Figures
Diagram 14
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 1
INTRODUCTION
The blockchain technology gained popularity with the emergence of Bitcoin, which was the
first decentralized cryptocurrency. However, the technology has since been applied to
various industries, including finance, supply chain management, healthcare, and voting,
among others.
Blockchain works by creating blocks of data that are linked together in a chain, hence the
name blockchain. Each block contains a unique code, known as a hash, that is generated
based on the contents of the block. This hash is then used to link the block to the previous
one, forming a chain of blocks.
Once a block is added to the blockchain, it cannot be altered or deleted without the
consensus of the network participants. This makes the technology immutable, ensuring that
the data stored on the blockchain is tamper-proof and transparent.
Overall, blockchain technology has the potential to revolutionize the way we store and share
data, making it more secure, transparent, and accessible.
1
Decentralized Voting System Using Ethereum Blockchain
A decentralized voting system built on the Ethereum blockchain has the potential to
revolutionize the way we conduct elections. By leveraging the security, transparency,
and immutability of blockchain technology, decentralized voting systems can eliminate
many of the challenges and risks associated with traditional voting systems.
In a decentralized voting system, each voter has a unique digital identity, and their vote is
recorded on the blockchain, ensuring that the vote is tamper-proof and cannot be altered.
Decentralized voting systems also eliminate the need for intermediaries, such as government
agencies, to oversee the election process, making it more efficient and less susceptible to
corruption or manipulation.
2
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 2
LITERATURE SURVEY
Highly advanced security methods are necessary to introduce effective online voting system
in the whole world. The aspect of security and transparency is a threat from global election
with the conventional system. General elections still use a centralized system where one
organization that manages it. Some of the problems that can occur in traditional electoral
systems are with an organization that has full control over the database and system, it is
possible to manipulate with the database. This paper presents a survey on some previous
voting system that is used by different countries and organizations.
Electronic voting systems must find solutions to various issues with authentication, data
privacy and integrity, transparency, and verifiability. On the other hand, Blockchain
technology offers an innovative solution to many of these problems. The scalability of
Blockchain has arisen as a fundamental barrier to realizing the promise of this technology,
especially in electronic voting. This study seeks to highlight the solutions regarding scalable
Blockchain-based electronic voting systems and the issues linked with them while also
attempting to foresee future developments. A systematic literature review (SLR) was used to
complete the task, leading to the selection of 76 articles in the English language from 1
January 2017 to 31 March 2022 from the famous databases. This SLR was conducted to
3
Decentralized Voting System Using Ethereum Blockchain
Blockchain technology as a decentralized and distributed public ledger in a P2P network has
recently gained much attention. In this technology, a linked block structure is applied, and a
trusted consensus mechanism is established to synchronize data modifications, making it
possible to develop a tamper-proof digital platform for data storage and sharing. We think
that blockchain could be used in various interactive online systems, such as the Internet of
Things, supply chain systems, voting systems, etc. The scope of this survey is to shed light
on some recent contributions of the security and privacy issues associated with e-voting
based on blockchain. At the end of this paper, we provided a comparison for the security and
privacy requirements of the existing e-voting systems based on blockchain.
The use of information technology has in some ways revolutionized in many sectors. E-
voting is said to be a symbol of modern democracy. While research on the topic is still
emerging, it has mostly focused on the technical and legal issues instead of taking advantage
of this technology and implementing it for good cause. Usefulness of e-voting will perform
best when compared with the existing framework. The word Vote means to choose a
candidate from a given list of candidates who will lead the organization or the group .The
main goal of voting is to practice voting in such a way that every person votes to elect their
4
Decentralized Voting System Using Ethereum Blockchain
leader. Most countries in the world, India is no exception, had trouble voting. Voting is
still carried out in countries in physical mode. This physical mode process is not safe
as it can be manipulated by members of voting commitment. There are many issues
such as voting stations being too far and improper voting tools. The proposed flagship
internet-based online voting system supported by blockchain technology solves this
very problem. Blockchain technology uses encryption and hashing techniques with
which it makes voting secure. In this case, each vote is considered as a unique
transaction. A private blockchain is created using a peer to peer network where we
store voting transactions. This application is programmed in such a way so that the
details of voting are abstract from the user. Users will be given enough time for voting
with the system running. The main purpose of this paper is to come up with a new
unique solution, which does not require any technical skills. Since
voting is in online mode, increased voter turnout is likely. In this project, the concept of
developing an electronic voting system using blockchain technology is implemented.
India is the world’s largest democracy with a population of more than 1 billion; India has an
electorate of more than 668 million and covers 543 parliamentary constituencies. Voting is
the bridge between the governed and government. The last few years have brought a
renewed focus on to the technology used in the voting process. The current voting system
has many security holes, and it is difficult to prove even simple security properties about
them. A voting system that can be proven correct has many concerns. There are some
reasons for a government to use electronic systems are to increase elections activities and to
reduce the elections expenses. Still there is some scope of work in electronic voting system
because there is no way of identification by the electronic voting system whether the user is
authentic or not and securing electronic voting machine from miscreants. The proposed
system is to develop a compatible voting machine with high security by using Block-chain
technology in order to increase security and transparency between the users.
5
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 3
EXISTING SYSTEM
The existing voting system typically involves voters physically visiting a designated
polling place to cast their vote on paper ballots. These ballots are then manually
counted and recorded. Some countries also have electronic voting systems in place,
which allow voters to cast their votes electronically through machines or the internet.
However, electronic voting systems have faced criticism due to security concerns and
potential vulnerabilities.
2. Vulnerability to fraud: Both paper ballots and electronic voting machines can
be vulnerable to tampering, hacking and other types of fraud. This can be
especially problematic when there is no paper trail or other way to audit the
results.
3. Slow results: Counting paper ballots can be a time-consuming and labor-intensive
process, which can delay the announcement of election results.
4. Cost: Running a traditional voting system can be expensive, requiring the hiring of
poll workers, the purchase of voting machines or paper ballots, and the rental of
polling places.
6
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 4
PROPOSED SYSTEM
The proposed decentralized voting system using Ethereum blockchain aims to provide
a transparent and tamper-proof solution for conducting elections. By leveraging smart
contracts on the Ethereum network, the system enables secure and anonymous voting,
while ensuring the integrity and immutability of the voting data. This would increase
voter trust in the election process and reduce the risk of fraud or manipulation.
It is tamper proof.
7
Decentralized Voting System Using Ethereum Blockchain
3. Accessibility: The proposed system aims to make the voting process more
accessible to all eligible voters by eliminating the need for physical presence at a
polling station, thus increasing voter turnout.
4. Efficiency: The system aims to increase the efficiency of the voting process by
reducing the time and resources required to conduct elections. Since the system is
automated and eliminates the need for intermediaries, it can significantly reduce the
cost and time associated with traditional voting methods.
5. Trust: The proposed system aims to increase trust in the voting process by providing
a transparent and tamper-proof mechanism for recording and tallying votes.
8
Decentralized Voting System Using Ethereum Blockchain
User enters the credentials (voter id & password) and they are matched with the
database. If the match is found user is either redirected to admin page or voter page
as per their role corresponding to the credentials in the database. Once the admin is
logged in he/she can start the voting process by adding candidates and defining dates.
Voter can vote once the voting process has been started. Once the voter has voted the
transaction is recorded to the blockchain and the voting page is updated with real-
time votes.
9
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 5
MODULES
5.1 Modules
1. Voter - The voter module is designed for individuals who are eligible to participate in
the voting process. It provides functionalities related to the voting experience and
ensures the integrity and security of the votes. The main features of the voter module
include:
a. Voters can securely authenticate themselves to access the voting system using
their unique credentials.
b. Voters can access information about the candidates running for various
positions, such as their names, parties, and other relevant details.
c. Voters can verify the status of their votes and ensure that their choices are
accurately recorded in the blockchain.
a. Admins can set up the system parameters, such as defining the start and end
dates of the voting period, candidate registration, and other administrative
settings.
b. Admin can manually verify the candidate and can start the voting process.
10
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 6
SYSTEM DESIGN
Hardware Requirements
o Processor – 2 GHz or more
o RAM – 4 GB or more
o Disk Space – 100 GB or more
Software Requirements
o Node.js (version – 18.14.0)
o Web3.js (version – 1.8.2)
o Truffle (version – 5.7.6)
o Solidity (version – 0.5.16)
o Ganache (version – 7.7.3)
o Metamask
o Python (version – 3.9)
o FastAPI
o MySQL Database (port – 3306)
11
Decentralized Voting System Using Ethereum Blockchain
12
Decentralized Voting System Using Ethereum Blockchain
6.3 ER Diagram
Figure 5 ER Diagram
13
Decentralized Voting System Using Ethereum Blockchain
14
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 7
CODING
1. Migrations.sol
pragma solidity ^0.5.15;
contract Migrations {
address public owner;
uint public last_completed_migration;
modifier restricted() {
require(msg.sender == owner, "Access restricted to owner");
_;
}
constructor() public {
owner = msg.sender;
}
15
Decentralized Voting System Using Ethereum Blockchain
2. Voting.sol
pragma solidity ^0.5.15;
contract Voting {
struct Candidate {
uint id;
string name;
string party;
uint voteCount;
}
candidates[candidateID].voteCount ++;
}
function checkVote() public view returns(bool){
return voters[msg.sender];
}
16
Decentralized Voting System Using Ethereum Blockchain
return (votingStart,votingEnd);
}
}
17
Decentralized Voting System Using Ethereum Blockchain
3. App.js
const Web3 = require('web3');
const contract = require('@truffle/contract');
const votingArtifacts = require('../../build/contracts/Voting.json');
var VotingContract = contract(votingArtifacts)
window.App = {
eventStart: function() {
window.ethereum.request({ method: 'eth_requestAccounts' });
VotingContract.setProvider(window.ethereum)
VotingContract.defaults({from:
window.ethereum.selectedAddress,gas:6654755})
$(document).ready(function(){
$('#addCandidate').click(function() {
var nameCandidate = $('#name').val();
var partyCandidate = $('#party').val();
instance.addCandidate(nameCandidate,partyCandidate).the
n(function(result){ })
});
$('#addDate').click(function(){
var startDate =
Date.parse(document.getElementById("startDate").value)/1000;
var endDate
= Date.parse(document.getElementById("endDate").value)/1000;
instance.setDates(startDate,endDate).then(function(rsl
t){
console.log("tarihler verildi");
});
});
instance.getDates().then(function(result){
18
Decentralized Voting System Using Ethereum Blockchain
});
instance.checkVote().then(function (voted) {
console.log(voted);
if(!voted) {
$("#voteButton").attr("disabled", false);
}
});
}).catch(function(err){
console.error("ERROR! " + err.message)
})
},
vote: function() {
19
Decentralized Voting System Using Ethereum Blockchain
instance.vote(parseInt(candidateID)).then(function(result){
$("#voteButton").attr("disabled", true);
$("#msg").html("<p>Voted</p>");
window.location.reload(1);
})
}).catch(function(err){
console.error("ERROR! " + err.message)
})
}
}
window.addEventListener("load", function() {
if (typeof web3 !== "undefined") {
console.warn("Using web3 detected from external source like
Metamask")
window.eth = new Web3(window.ethereum)
} else {
console.warn("No web3 detected. Falling back to
http://localhost:9545. You should remove this fallback when you deploy
live, as it's inherently insecure. Consider switching to Metamask for
deployment. More info here:
http://truffleframework.com/tutorials/truffle-and-metamask")
window.eth = new Web3(new
Web3.providers.HttpProvider("http://127.0.0.1:9545"))
}
window.App.eventStart()
})
20
Decentralized Voting System Using Ethereum Blockchain
4. Login.js
const loginForm = document.getElementById('loginForm');
const headers = {
'method': "GET",
'Authorization': `Bearer ${token}`,
};
f et ch (` ht tp :/ /1 27 .0 .0 .1 :8 00 0/ lo gin ? vot er _i d= ${ vo te r_ id
sword}`, { headers })
.then(response => {
if (response.ok) {
return response.json();
} else {
throw new Error('Login failed');
}
})
.then(data => {
if (data.role === 'admin') {
console.log(data.role)
localStorage.setItem('jwtTokenAdmin', data.token);
window.location.replace(`http://127.0.0.1:8080/admin.html?Authoriz
ation=Bearer ${localStorage.getItem('jwtTokenAdmin')}`);
} else if (data.role === 'user'){
localStorage.setItem('jwtTokenVoter', data.token);
window.location.replace(`http://127.0.0.1:8080/index.html?Authoriz
ation=Bearer ${localStorage.getItem('jwtTokenVoter')}`);
}
})
.catch(error => {
console.error('Login failed:', error.message);
});
});
21
Decentralized Voting System Using Ethereum Blockchain
5. Main.py
# Import required modules
import dotenv
import os
import mysql.connector
from fastapi import FastAPI, HTTPException, status, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.encoders import jsonable_encoder
from mysql.connector import errorcode
import jwt
# Loading the environment variables
dotenv.load_dotenv()
# Initialize the todoapi app
app = FastAPI()
# Define the allowed origins for CORS
origins = [
"http://localhost:8080",
"http://127.0.0.1:8080",
]
22
Decentralized Voting System Using Ethereum Blockchain
(api_key,))
if api_key not in [row[0] for row in cursor.fetchall()]:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Forbidden"
)
except:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Forbidden"
)
23
Decentralized Voting System Using Ethereum Blockchain
)
except mysql.connector.Error as err:
print(err)
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail="Database error"
)
6. Package.json
{
"name": "decentralized-voting",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
}, "author": "",
"license": "ISC",
"dependencies": {
"jsonwebtoken": "^9.0.0",
"@truffle/contract": "^4.6.18",
"browserify": "^17.0.0",
"dotenv": "^16.0.3",
"express": "^4.18.2",
"web3": "^1.9.0"
}
}
24
Decentralized Voting System Using Ethereum Blockchain
CHAPTER 8
TESTING
Testing is the process of evaluating a system or its component(s) with the intent to find whether
it satisfies the specified requirements or not. It includes a set of techniques and methods to
identify defects, bugs, performance issues and providing a reliable and quality product. The goal
is to identify issues as early as possible and improve the overall quality of the system.
Integration testing is a type of testing that is used to evaluate how well the
different units or components of a software system work together. This type of
testing helps to identify and resolve issues related to compatibility, performance,
and data flow between the different units or components.
Functional testing is a type of testing that is used to evaluate how well a system or
software performs the specific functions or tasks that it is designed to perform. It is
done by testing the system or software with various inputs and verifying that the
outputs are correct. This type of testing ensures that the system or software is
working as intended and is able to perform the functions it was designed to
perform.
25
Decentralized Voting System Using Ethereum Blockchain
White box testing, also known as structural testing or glass-box testing, is a type of
testing that examines the internal structure and implementation of a software
system. It involves testing the code itself and checking that it is functioning
correctly and adhering to coding standards. This type of testing helps to identify
and resolve issues related to logic, control flow, and data structures within the
system.
Black box testing, also known as functional testing, is a type of testing that
examines the external behavior and interfaces of a software system. It involves
testing the system from the user's perspective, without looking at the internal
structure or implementation, and checking that it is functioning correctly and
meeting the requirements. This type of testing helps to identify and resolve issues
related to usability, compatibility, and performance.
26
Decentralized Voting System Using Ethereum Blockchain
27
Decentralized Voting System Using Ethereum Blockchain
28
Decentralized Voting System Using Ethereum Blockchain
Conclusion:
Future Enhancement:
29
Decentralized Voting System Using Ethereum Blockchain
SCREENSHOTS
30
Decentralized Voting System Using Ethereum Blockchain
31