Golden Vote Case Study
For the technical challenge in the application for Blockchain @ Berkeley, UC-Berkeley's premier Blockchain consultancy club, I fleshed out a prototype for Golden Vote, an app that uses zero-knowledge proofs to make voting more secure for Cal students. Here is my case study for Golden Vote, in which I dive into my entire process of the app's creation, from the problem statement to the final mockups.
Every year, the ASUC holds a general election to select 5 Executive Officers and twenty-one members of the Senate for office. In addition, UC Berkeley hosts a diverse array of student-run clubs and organizations, totaling up to more than 1,200. Each manages its own leadership elections regularly.
However, the voting process faces many challenges, including low voter turnout (when elections are distrusted or seen as inconvenient), concerns about security vulnerabilities because of centralized voter verification, challenges with ensuring that there are no duplicate votes without compromising voter anonymity, and the struggle to balance privacy and audit ability. All these factors can compensate for the election’s fairness, privacy, and authenticity, and can overall undermine student representation and trust in elections.
Through my research about the challenges and vulnerabilities of elections at Berkeley, I made some key takeaways.
1. Firstly, current voting processes rely on centralized systems, such as ID authentication, which can introduce centralized points of failure, can risk manipulation of data, and can pose privacy risks. This is why decentralized systems are more optimal
2. Additionally, in elections, transparency, or accurate counting of votes, and privacy, or the protection of voter anonymity, have a disparity. They clash when in coexistence.
3. Lastly, students not only want to be able to access polls, but they want to be able to verify the integrity of the whole process. they also want to trust that the system is tamper-proof. So, we need a method to create a transparent yet secure voting system.
After identifying the problems attached with voting, I proceeded to draft out a map of possible solutions that can help streamline the election processes at Berkeley. There were still some limitations attached to these solutions. A majority still face issues with inconvenience and the reliance on a centralized system.
After much ideation and elimination, my ideas converged into a final solution: Creating a mobile ballot application that streamlines the voting process at our school while guaranteeing privacy, transparency, and verifiability.
The main question is, how would we preserve those 3 factors? We would use Zero-Knowledge proofs as the application's underlying technology.
As the above diagram depicts, ZKPs are used by a prover to convince a verifier that a statement holds true without giving any knowledge of why or how.
These proofs must be
Complete (honest and entire proofs must be accepted)
Sound (Proofs can't be faked or deceived)
Have Zero-knowledge (no external information is leaked other than the statement itself)
For our app, using this technology is advantageous because it will
Allow a voter to prove they have a valid voting credential without exposing their identity or credential details
Confirm that the ballot is correctly formed (e.g., valid candidate selection) without revealing the actual vote
Incorporate mechanisms to ensure that a voter’s credential is used only once, thus preventing double voting
Enable public verification of vote validity while keeping individual choices confidential
Below is a detailed overview of my design process for the app.
I began by creating a user flow map to visualize both the authentication and voting processes. This map highlights how students would interact with both features of the app. Mapping out these flows helped me identify potential pain points and ensure a seamless user experience.
For the low-fidelity wireframes, I created basic sketches of the screens using minimal detail and structure. These wireframes serve as an initial blueprint, focusing specifically on layout and functionality rather than the actual design.
For the aesthetics of my app, I drew inspiration from the UC Berkeley brand website to ensure the app feels like an authentic extension of the university’s identity. By aligning the app’s design with UC Berkeley’s official branding guidelines, it becomes easier to integrate into existing university platforms and help create a familiar and trustworthy experience for students.
For the style, I borrowed Berkeley's brand fonts and color palette. Using its signature colors and official typefaces not only makes the app visually cohesive but enables students to immediately recognize it as an official, credible tool associated with UC Berkeley.
Here is my moodboard, which congregates all the stylistic choices I chose to add to my app. The left illustrates some of the icons I incorporated and inspiration from already-existing apps. The right depicts the overall visual elements in my app. As seen, I translated the colors and fonts from the website onto here. Lastly, I chose to design the graphics in a sticker style to create a more 3D, visually immersive experience that feels engaging and approachable for users.
Introducing GoldenVote. The high-fidelity wireframes, or basically the final screens, culminate all of my research and design work into a polished, user-friendly experience.
Here is the authentication flow.
As you can see, you first access the welcome slash splash screen, then proceed to identity verification, in which you input your school affiliation and any other information that's required to filter elections accordingly. This proceeds to open a model that shows the identity verification in progress.
After confirmation that your identity has been approved, you can then tokenize a private key to your digital wallet. This id will be attached to your vote, after which a confirmation is shown and you can proceed to view the detailed list of elections.
Here is the voting flow.
In this sample ASUC president election, the list of candidates is shown, along with their short bio. The radio buttons at the right of each box help you pick your vote. After confirming your selection, your vote is encrypted by the system, and then you can proceed to verify it. As you can see, I tried experimenting with a slide up menu instead of a modal, which may exude a more modern feel that's both functional and easier on the eyes.
During the vote verification, you can see the progress that tracks ongoing internal processes. After all processes are finished, you can officially add your vote on the ballot, then see the confirmation on this last screen here.
Here's the prototype for the first flow, which depicts the user onboarding in real-time.
Here's the prototype for the second flow, which mimics the user casting their vote and receiving a confirmation after it has been logged onto the ledger.
The last question is, how have ZK proofs been applied to the app?
As said before, Zero-knowledge proofs are very relevant in the voting realm because of their ability to let individuals cast ballots without compromising their identities and vote preferences. I have demonstrated this through the use of verification, tokenization, and encryption in my designs.
Identity Verification
Although this seems counterintuitive, the university provides you with a unique digital "badge" or credential to confirm you are a student and are eligible to vote. However, that badge doesn’t include your name or any other personal details, so it doesn't reveal your identity as a student. The badge is effectively just a cryptographic token that says “Valid Student,” so the system has no way to link the proof back to your details.
Wallet Tokenization
As soon as the user's identity has been verified, they vote with a private key or unique voter ID, which will be tokenized in their digital wallet. The system will then be able to remember the token, and the vote is logged onto the public ledger. The key or ID can't be used again.
Vote Encryption
The application encrypts the selected vote using a public encryption key so that the vote’s content remains confidential
ZKP Generation
The voter’s device (or a trusted client application) generates a zero-knowledge proof that:
Confirms Voter Eligibility: Proves that the voter possesses a valid credential
Verifies Ballot Integrity: Proves that the vote is well-formed (e.g., the selection corresponds to a valid candidate and adheres to the voting rules)
Ensures Single Vote Casting: Optionally includes a mechanism ensuring that the same credential is not used to cast multiple votes