Team Name
The ChainVoters
Timeline
Summer 2022 – Fall 2022
Students
- Abdulla Sakallah
- Ahmed Harun
- Seth Rodgers
- Kelechi Egbuta
Abstract
The application will contain many features that are intended to make the voting process as easy and robust as possible. One of the most important features of the application is the authentication feature. For an application that contains important information about the user opinions and views on sensitive topics, it is clear that it should verify the user’s identity. These authentication pages will consist of registration pages where the application will set up the user account based on the provided information and the login page which is how the user gains access to their account. In addition, the application will provide poll administrators with certain privileges such as seeing the number of voters that have already voted, setting constraints on the availability of the poll, and also the ability to edit and even terminate the poll. Another important feature is the ability to join polls, for now, the poll administrator will be given the option of distributing a link to the poll however they wish or they can upload a CSV/Excel file that contains information on the voters and the application will automatically send those voters a link. Accuracy is an important component of this application, our application ensures that each person is only given access to polls to which they are registered and limits their number of votes to just one per poll in order to maintain the integrity of the poll results. There are many other features that will be included in the application however the ones mentioned above are the most critical ones for the functionality of the application.
Background
Currently, the voting system in place requires all citizens to register before actually voting. When it is time to vote, they either have to physically go to a voting location or through absentee voting. The current system does not always make it easy for racial minorities and disabled individuals to vote, in fact it requires significantly more effort for them to vote. People who fit in the abovementioned categories often don’t get the opportunity to vote and as a result, their voices are rarely heard.
Project Requirements
- Registration: Creation of a brand-new account for the newly registered user.
- Login: Opens up the user’s account and presents them with the home screen.
- Account Recovery: The user will be sent an email that will include a link that allows them to reset their password.
- Poll Creation: A brand new poll will be created and it will become active at the designated start date and close on the end date. The poll creator will also be given a link to the poll which will allow him to distribute the poll to the intended participants.
- Poll Voting: After the users submit their responses to the users they will immediately be given a badge to validate their vote. Later when the poll closes they will be able to see the results and a breakdown of the poll response.
- Poll Results: If the user clicks on a poll whose results are in, they will see the result in another screen. In the result screen, the user will see a graph in the middle of the page to showcase how the votes were distributed, and also a list of the top three choices will be placed directly below chart along with their vote count.
- Smart Contracts: This functionality will generate a layer of abstraction to encrypt the votes and prevent them from getting accessed by unauthorized third parties to prevent fraud. These contracts will be coded in solidity to be stored on the Blockchain database for the safety of the users.
- Blockchain Management: Depending on what Blockchain platform we decide to build our voting platform on, the platform specifications could always change down the road. If for some reason our smart contract code is no longer compatible with the Blockchain, we need to update it.
System Overview
The voting application consists of eight main layers that communicate across the application to provide the key requirements that a user can perform. The front-end layer which can also be known as the user layer is responsible for routing the expected front-end functionalities from other layers of the applications to the user. The user should be able to register and sign in to the application from the onboarding layer which provides that functionality. It is then directed to the user’s choice of option to either create or join a poll which is controlled by the poll manager layer. Then, if the user places or participates in any vote or polls their information will be verified by accessing the voting layer and then getting redirected to the blockchain for validation. After that, these polls or votes will be stored in the application database layer for future use in another layer, for instance, the poll results layer. The application offers an interactive way for users to interact with developers and their votes by providing an FAQ and a notification system, and the user will be able to exit the application with all of their data stored securely
Demo
Results
We were able to create a web application using react that functions on multiple browsers to interface with the voters. Also, we succeeded in creating a poll interface and a voting interface to interact with the user to create and place their votes. In addition, upon poll creation and vote placement, their choices are deployed to the blockchain. Lastly, we were able to fetch the poll information along with the votes and display a visual representation of the poll, with the ability to extract the data in a .csv format.
Future Work
We will make our own cryptocurrency using the Ethereum blockchain to make the users recognized by their wallets/public keys to generate an additional way to authenticate a voter. This will provide more transparency in which the votes will be traceable to the voter’s public key while ensuring the privacy of the voter.