Inspiration

The internet has been around for 40 years now (in some capacity). Elections need to be accessible to everyone, and the bar to vote needs to be minimal. As elections move digital, we want to ensure that the public can truly verify the legitimacy of our democracy, and ensure that the votes aren't locked behind some government server.

What it does

Our project allows you to vote online in a transparent manner, and without risk of having your personal information or voting information available to others.

How we built it

We implemented Zero Knowledge proofs using Circuits & Snark.js, generating a ticket signature for valid voters. We then stored that signature which is not identifying, and the vote associated with that ticket onto the blockchain, and use a microservice so our front end can easily communicate with the verification system.

Challenges we ran into

ZK proofs are conceptually difficult to understand, and even harder to implement. It was very difficult for us to write code on the blockchain, and use servers to access that information. To solve our problems, we ended up creating a microservice that we could call using a REST API, which simplified our workflow in code significantly.

Accomplishments that we're proud of

We are most proud of implementing ZK proofs because of their complexity. We are super excited that it is now possible to host governmental elections online.

We all had fun adding simple animations to help polish our front end.

What we learned

We all developed our skills in frontend development, blockchain development, and zero knowledge proof understanding.

What's next for ZKElection

Implementing ZKElection in the real world is no longer an issue of technology! However, we are not an the positions of power to modify elections. Taking ZKElection public and proving its efficacy are necessary steps to help evolve our election system.

Built With

Share this project:

Updates