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
Python most simple|stupid programming language (MSPL)

Most Simple|Stupid Programming language. (MSPL) Stack - Based programming language "written in Python" Features: Interpretate code (Run). Generate gra

Kirill Zhosul 14 Nov 03, 2022
Singularity Containers on Apple M1 (ARM64)

Singularity Containers on Apple M1 (ARM64) This is a repository containing a ready-to-use environment for singularity in arm64 (M1). It has been prepa

Manuel Parra 4 Nov 14, 2022
serological measurements from multiplexed ELISA assays

pysero pysero enables serological measurements with multiplexed and standard ELISA assays. The project automates estimation of antibody titers from da

Chan Zuckerberg Biohub 5 Aug 06, 2022
Provide Prometheus url_sd compatible API Endpoint with data from Netbox

netbox-plugin-prometheus-sd Provide Prometheus http_sd compatible API Endpoint with data from Netbox. HTTP SD is a new feature in Prometheus and not a

Felix Peters 66 Dec 19, 2022
SciPy library main repository

SciPy SciPy (pronounced "Sigh Pie") is an open-source software for mathematics, science, and engineering. It includes modules for statistics, optimiza

SciPy 10.7k Jan 09, 2023
Cairo-math-64x61 - Fixed point 64.61 math library for Cairo / Starknet

Cairo Math 64x61 A fixed point 64.61 math library for Cairo & Starknet Signed 64

Influence 63 Dec 05, 2022
Create VSCode Extensions with python

About Create vscode extensions with python. Installation Stable version: pip install vscode-ext Why use this? Why should you use this for building VSc

Swas.py 134 Jan 07, 2023
A project to find out all the words in a crossword.

A project to find out all the words in a crossword.

Kalpesh Dhoundiyal 1 Feb 06, 2022
The earliest beta version of pytgcalls on Linux x86_64 and ARM64! Use in production at your own risk!

Public beta test. Use in production at your own risk! tgcalls - a python binding for tgcalls (c++ lib by Telegram); pytgcalls - library connecting pyt

Il'ya 21 Jan 13, 2022
Interfaces between napari and pymeshlab library to allow import, export and construction of surfaces.

napari-pymeshlab Interfaces between napari and the pymeshlab library to allow import, export and construction of surfaces. This is a WIP and feature r

Zach Marin 4 Oct 12, 2022
Woltcheck - Python script to check if a wolt restaurant is ready to deliver to your location

woltcheck Python script to check if a wolt restaurant is ready to deliver to you

30 Sep 13, 2022
Python library for the analysis of dynamic measurements

Python library for the analysis of dynamic measurements The goal of this library is to provide a starting point for users in metrology and related are

Physikalisch-Technische Bundesanstalt - Department 9.4 'Metrology for the digital Transformation' 18 Dec 21, 2022
Python template for Advent of Code event

Advent of Code Python Starter A tamplate for Advent of Code write in Python. Usage The project use poetry for project manager. Clone this repository a

Leonardo Gago 6 Dec 31, 2022
Eatlocal - This package helps users solve PyBites code challenges on their local machine

eatlocal This package helps the user solve Pybites code challenges locally. Inst

Russell 0 Jul 25, 2022
GCP Scripts and API Client Toolss

GCP Scripts and API Client Toolss Script Authentication The scripts and CLI assume GCP Application Default Credentials are set. Credentials can be set

3 Feb 21, 2022
Encode stuff with ducks!

Duckify Encoder Usage Download main.py and run it. main.py has an encoded version in encoded_main.py.txt. As A Module Download the duckify folder (or

Jeremiah 2 Nov 15, 2021
Adam with minor modifications which give significant improvement

BAdam Modification of Adam [1] optimizer with increased stability and better performance. Tricks used: Decoupled weight decay as in AdamW [2]. Such de

19 May 11, 2022
A cheat sheet for streamlit

Streamlit Cheat Sheet App to summarise streamlit docs v1.0.0 There is also an accompanying png and pdf version https://github.com/daniellewisDL/stream

Daniel Lewis 221 Jan 04, 2023
The Doodle Master seeks to turn your UI mockups into real code.

Doodle Master The Doodle Master seeks to turn your UI mockups into real code. Currently this repository just serves to demonstrate a Proof Of Concept

Karanbir Chahal 2.4k Dec 09, 2022