Decentralized intelligent voting application.

Related tags

MiscellaneousDiVA
Overview

DiVA

Decentralized intelligent voting application. Hack the North 2021. Logo

Inspiration

Following the previous US election, many voters were fearful that their ballots had been miscounted in favour of one particular party. Following this scepticism, the world saw disturbing riots taking place at the nations capital. With countries around the world becoming more divided, we ultimately trust one another less and less—especially when coming to counting ballots. Furthermore, due to the COVID-19 pandemic, people are more fearful of leaving their homes. With the upcoming Canadian election, many Canadians are forced to risk their health and safety just to exercise their basic voting rights. This why we created DiVA (Decentralized intelligence voting automation), a decentralized voting system which uses blockchain technology to store ballots, while allowing users to cast their ballot using SMS messaging.

What it does

DiVA is a decentralized voting system which uses blockchain technology to store ballots, while allowing users to cast their ballot using SMS messaging. Everything starts with a message to DiVA's central phone number. DiVA then sends the user a link to authenticate them selves. Authentication starts by validating the user is a real person using facial recognition technology for anti-spoofing detection. Then, they undergo an identity validation system powered by Azure Cognitive solutions, by taking a photo of themselves as well as of their Government issued photo ID. If verified, they then get another SMS message with a list of potential candidates to choose from. Final step is to send their choice back to the block chain along with their phone number. This information then gets added as one block on the block chain.

How we built it

We build the blockchain using Solidity's smart contracts where each election is a new smart contract on the blockchain and each vote updates the contracts state on the blockchain. To test the blockchain we used Ganache and Truffle which emulates the Ethereum network locally.

The user verification is done by leveraging Mediapipe solutions for liveliness verification of eye blinking as well as using Azure's face verification API for face matching for identification and validation.

The web-application is made using a Flask/Python backend which connects to the blockchain using Web3.py and can create new elections, add candidates, cast votes for verified voters, show results and show all ballots casted with hashed userIDs for privacy so each ballot is anonymous but anyone can recount the ballots themselves.

Challenges we ran into

One of our most difficult challenges was coming up with a secure verification system that integrated with Twilio's API. Our team was able to create a fully functional algorithm which verifies a person using facial recognition software, however, we were unable to develop a system which connected the person with their phone number. Moving forward, we hope to spend more time working with the Twilio API to be able to match a person with their phone number to increase the systems security measures.

Accomplishments that we're proud of

Prior to starting this project our team had no experience with developing a blockchain network. However, fuelled by a passion to learn about this new technology, our team was able to leverage prior technical experiences to create a fully functional blockchain system. This process of learning a new technology required extensive time and effort. Our ability to learn all this information in such a short period of time was extremely difficult, however, through persistence and perseverance we were able to successfully complete our initial goal.

What we learned

The process of coming up with the idea to developing the entire infrastructure and final product has allowed us to discover the potential of decentralized system on improving many aspects of our daily life especially when combined by Artificial Intelligence Solutions. We learned that one can leverage the blockchain to create a system which is free of any external party intervention while maintain a sophisticated and seamless process for the end user. This idea has inspired us to think about other potential applications of a decentralized systems, and more specifically a blockchain structure.

What's next for DiVA

DiVA's blockchain system currently has the ability to scale to an extremely large scale. However, for DiVA to be used on a mass scale, it must be further optimized from a verification perspective. Through further development on improving the integration between the SMS messaging and the verification system, we can make DiVA a more seamless system. DiVA's main purpose was to be used in an election system. However, DiVA has the potential to be used in many different areas. In recent years we have seen more attention towards ensuring everyones voice is heard and that we engage in processes which promote equality. With DiVA, we are able to offer a platform for groups people to share their thoughts and ideas in an impactful way, while ensuring their voice is heard. A prominent application of DiVA could be in within companies to gain valuable insights from their employees in a seamless manner.

Owner
Ali Shariatmadari
@UWaterloo Software Engineering, Fashion Design, Cinematography
Ali Shariatmadari
Web App for University Project

University Project About I made this web app to finish a project assigned by my teacher. It is written entirely in Python, thanks to streamlit to make

15 Nov 27, 2022
A submodule of rmcrkd/ODE-Uniqueness

Heston-ODE This repo contains the Heston-related code that accompanies the article One-sided maximal uniqueness for a class of spatially irregular ord

0 Jan 05, 2022
Update your Nintendo Switch cheats with one click, or a bit more~

Interactive-ASM-Cheats-Updater This updater unlocks your ability of updating most of the ASM cheats for Nintendo Switch. Table of Contents Functions Q

zzpong 63 Dec 27, 2022
A collection of examples of using cocotb for functional verification of VHDL designs with GHDL.

At the moment, this repo is in an early state and serves as a learning tool for me. So it contains a a lot of quirks and code which can be done much better by cocotb-professionals.

T. Meissner 7 Mar 10, 2022
Gaia: a chrome extension that curates environmental news of a company

Gaia - Gaia: Your Environment News Curator Call for Code 2021 Gaia: a chrome extension that curates environmental news of a company Explore the docs »

4 Mar 19, 2022
Project Guide for ASAM OpenX standards

ASAM Project Guide Important This guide is a work in progress and subject to change! Hosted version available at: ASAM Project Guide (Link) Includes:

ASAM e.V. 2 Mar 17, 2022
Traits for Python3

Do you like Python, but think that multiple inheritance is a bit too flexible? Are you looking for a more constrained way to define interfaces and re-use code?

121 Nov 15, 2022
This is a Saleae Logic custom high level analyzer that allows you to search and mark specific packets.

SaleaePacketParser This is a Saleae Logic custom high level analyzer that allows you to search and mark specific packets. Field "Search For" is used f

1 Dec 16, 2021
You will need to install a few python packages for this one.

Features Bait support Auto repair will repair every 10 catches Anti detection (still a work in progress) but using random times and click positions Pr

12 Sep 21, 2022
🐍 This snake helps you reconnect the Web, with RSS feeds!

This snake helps you reconnect the Web, with RSS feeds! RSSerpent is an open-source software that create RSS feeds for websites that do not provide an

211 Dec 08, 2022
Simple Python script I use to manage and build my Reflux themes.

Simple Python script I use to manage and build my Reflux themes. Built for personal use, but anyone can easily fork and tweak to suit thier needs.

Ire 3 Jan 25, 2022
It's a repo for Cramer's rule, which is some math crap or something idk

It's a repo for Cramer's rule, which is some math crap or something idk (just a joke, it's not crap; don't take that seriously, math teachers)

Module64 0 Aug 31, 2022
Passenger Car Unit (PCU) Calculator

This is a streamlit web application which can be used to calculate Passenger Car Unit (PCU) values for a selected road section.

Dineth Dhananjaya 1 Apr 26, 2022
Defichain maxi - Scripts to optimize performance on defichain rewards

defichain_maxi This script is made to optimize your defichain vault rewards by m

kuegi 75 Dec 31, 2022
A very small (15 lines of code) and beautiful fetch script (exclusively for Arch Linux).

minifetch A very small (15 lines of code) and beautiful fetch script (exclusively for Arch Linux). There are many fetch scripts out there but I wanted

16 Jul 11, 2022
Macros in Python: quasiquotes, case classes, LINQ and more!

MacroPy3 1.1.0b2 MacroPy is an implementation of Syntactic Macros in the Python Programming Language. MacroPy provides a mechanism for user-defined fu

Li Haoyi 3.2k Jan 06, 2023
A basic layout of atm working of my local database

Software for working Banking service 😄 This project was developed for Banking service. mysql server is required To have mysql server on your system u

satya 1 Oct 21, 2021
Python interface to ISLEX, an English IPA pronunciation dictionary with syllable and stress marking.

pysle Questions? Comments? Feedback? Pronounced like 'p' + 'isle'. An interface to a pronunciation dictionary with stress markings (ISLEX - the intern

Tim 38 Dec 14, 2022
This is some simple code to scrape vistbook's system to get an overview of the different cabins availability.

DNT_cabin_availability_system This is some simple code to scrape visbook's system to get an overview of the different cabins availability. The system

Andreas Lorentzen 1 Sep 25, 2022
Open Source Repository for CFD Solvers

Background and Validation This wiki is built in Notion. Here are all the tips you need to contribute. General Background Flow over a cylinder The proj

1 Dec 30, 2021