Coder Social home page Coder Social logo

broncovotes's Introduction

BroncoVotes: Secure Voting System using Ethereum's Blockchain

Description:

Voting is a fundamental part of democratic systems; it gives individuals in a community the faculty to voice their opinion. In recent years, voter turnout has diminished while concerns regarding integrity, security, and accessibility of current voting systems have escalated. E-voting was introduced to address those concerns; however, it is not cost-effective and still requires full supervision by a central authority. The blockchain is an emerging, decentralized, and distributed technology that promises to enhance different aspects of many industries. Expanding e-voting into blockchain technology could be the solution to alleviate the present concerns in e-voting. In this paper, we propose a blockchain-based voting system, named BroncoVote, that preserves voter privacy and increases accessibility, while keeping the voting system transparent, secure, and cost-effective. BroncoVote implements a university-scaled voting framework that utilizes Ethereum’s blockchain and smart contracts to achieve voter administration and auditable voting records. In addition, BroncoVote utilizes a few cryptographic techniques, including homomorphic encryption, to promote voter privacy. Our implementation was deployed on Ethereum’s Testnet to demonstrate usability, scalability, and efficiency.

Requirements for compiling and interacting with the Voting DApp:

Operating System:

Ubuntu 16.xx or higher (make sure to update your OS)

Packages:

  1. Open a terminal (make sure you have permissions to download and install packages)
  2. Run these commands to install git, nodejs, npm, and truffle framework
sudo apt-get install git
sudo apt install nodejs
sudo apt-get install npm
sudo apt-get install build-essential
sudo npm install -g truffle

The voting DApp itself:

Go to the directory you want to download the app into:

git clone https://github.com/pmarella2/BroncoVotes.git BroncoVotes

Alternatively you can click here

Steps to compile and host the voting DApp:

  1. Change into BroncoVotes directory
cd BroncoVotes
  1. Open two new terminals in the project directory (so you should have three different terminals in the BroncoVotes directory)
  2. In terminal 3, run the nodejs component of BroncoVotes
cd app/javascripts
node node.js
  1. In terminal 2, run the virtual memory blockchain (testrpc/ganache-cli)
./node_modules/.bin/ganache-cli
  1. In terminal 1, we will compile the voting smart contracts and deploy them onto the virtual memory blockchain
truffle migrate
  1. In terminal 1 again, we will host the voting DApp
npm run dev

Interacting with the voting DApp:

  1. You can now interact with the DApp by navigating to localhost:8080 in your browser of choice

Troubleshooting:

Open an issue if there are any problems with compiling and running the DApp

Acknowledgements:

I want to thank NSF and the ISPM research lab for providing the grant and resources to conduct this research project. I would also like to extend my thanks to Mahesh Murthy and Truffle team for providing the structure/tools for smart contract and web DApp development.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.