B

BlockVote

Decentralize the voting, make your vote count, reinforce the democracy

The problem BlockVote solves

Fair elections are key to any democracy. But one thing we often hear about is the low voter turnout and how that is detrimental to the well-being of the country’s democracy. This issue stems from several reasons- lack of education, resources to travel, safety of voters and general lack of motivation to vote.

We are focusing here on the fact that many people in our country move to larger cities/or go abroad for education or in the search of employment. But they are registered as voters of a different constituency as opposed to the one they are currently residing in. There is no such mechanism in place to enable remote voting. Also if certain voters aren’t in a position to get out of their houses due to old age or health reasons, some comfortable means of voting must be provided to them.

For these above stated problems, we have developed Blockvote- a blockchain enabled web application for online voting. It automates and decentralizes the voting system. The main purpose of BlockVote is to make the voting experience, a more secure, easy and hassle-free endeavour. Voting, be it using the ballot system or the EVM(electronic voting machine currently used in Indian elections), consumes a lot of government resources and citizens need to wait in long lines for a painfully long procedure. Using the innate features of Blockchain, we are making a voting solution that ensures voter validation, voter identity non-disclosure, immutable voting records, real-time counting and true transparency in the voting process.

BlockVote will attempt to replace remote voting and the traditional e-voting systems and any other obsolete voting practises. The dapp will allow voting from the comfort of the voter’s home. It will also make voting a possibility for voters who are not in the country or in the geographical region at large to also participate in the elections. Finally, it enables transparency and allows the voter to track the progress of his/her vote.

Challenges we ran into

Creating constituencies & displaying the candidates to the voter accordingly:
Our dapp is designed keeping the actual Indian elections in mind where voters belong to their respective constituencies and each constituency will have its own ballot and its own candidates standing in the elections. Traditionally, a single smart contract will account for a single ballot, forcing us to make and deploy several smart contracts, each belonging to a different constituency. In order to avoid that and make the the process/code more maintainable, we tried to make a single smart contract that can take care of several constituencies and handle all the votes casted by the voters in that constituency to the candidates electing from that constituency. And thus, finally, we developed the logic to display candidates to the voters according to their constituencies to ensure error-free voting.

Automation of giving right to vote to voters and publishing the candidate list:
Also to make the code as reusable as possible we revised the hardcoded voters and candidates lists in the smart contracts and provided the option to add the candidate list and give the right to vote to all the eligible voters to the admin. To further make the admin’s job easier, we created an automation to give the right to vote and publish the candidate lists using csv files instead of manually entering each entry.

Making the dapp user-friendly:
Decentralized applications fall under a completely new paradigm, making them user friendly is difficult. And as an online voting application, we need to bear in mind that people from all walks of life could use this service and their understanding of dapps, cryptocurrencies or what is the purpose of a blockchain wallet might be limited or non-existent.Therefore transaction details and confirmation messages displayed may not be understandable to the user, upon which the voter may not confirm his/ her transaction for casting their vote and that is not desirable.

Discussion