Inspiration

With the upcoming Presidential Election, as well as the allegations and arrest of Donald Trump, we were reminded of the inaccessibility, fragility and mounting skepticism towards traditional voting systems.

What it does

EZ-vote is a website that allows users to either create a poll, or vote on a poll. After voting, you also have the option of downloading the blockchain to verify the security of the poll results.

How we built it

We built front-end with Next.js, blockchain with Flask, and encrypted with the partial homomorphic encryption via the Paillier cryptosystem.

Challenges we ran into

The concept of a blockchain was not very familiar to most of us, with our knowledge mostly ending at some degree of cryptography. To achieve this project, we had to do extensive research into this area and figure out a way to have the system be both anonymous and still have a degree of user authentication to prevent abuse. This is traditionally maintained by having a trusted party to maintain this, but our zero-trust online system was more challenging to achieve this in.

Accomplishments that we're proud of

We're proud that we have a working and integrated system where all of our goals for this system are achieved and clearly demonstrated.

What we learned

We learned a great deal about many areas of technology including cryptography, and we learned about overcoming CORS limitations. We also were able to learn the implementation of Next 13, a newer version with lesser support.

What's next for EZ-Vote

EZ_Vote or any similar systems have significant potential to be used in settings where such a system is especially important, such as anonymous organizations or real elections. For our project, we would expand our authentication to support ID-based authentication such as SingPass for such uses apart from just using IP addresses.

Built With

Share this project:

Updates