A challenge organized by OpenMined Community.
The project is being developed as part of the #30DaysOfFLCode challenge. Each checkpoint represents a milestone, with the first goal being to complete at least Checkpoint 1 during the challenge.
Inspired by
Ionesio's tutorial, the initial coding task was to create a
repository for the voting API for SyftBox. In its first version, the API simply sums the values stored in
public/value.txt
across all Datasites.
apis
folder in SyftBox.
public/value.txt
file with a number inside it.
I enhanced the aggregation logic to specifically address the binary voting requirements of Checkpoint 1. Here’s what’s new:
Validated Votes:
Ensured that only binary
votes (0 for No and 1 for Yes) are
counted. Any invalid or missing votes are now tracked separately to
maintain data integrity.
Mean Calculation:
Instead of simply summing
the votes, the system now calculates the mean of
all valid votes. This mean value helps determine whether the
election result leans closer to 0 (No) or
1 (Yes), providing a clearer understanding of the
overall outcome.
Outcome:
These enhancements improve the accuracy of
vote aggregation and ensure that only valid votes contribute to the election
result. Participants with invalid or missing votes are now clearly
identified, enhancing transparency and reliability.
To enhance privacy in our voting system, I’ve delved into (MPC). Here’s a simple analogy to illustrate its concept:
Imagine a group of employees wants to calculate the average salary without disclosing individual salaries. Each employee generates random numbers that sum to their salary and shares one number with each colleague. By summing the received numbers, each person gets a partial total. Summing all partial totals gives the overall sum, which, when divided by the number of employees, reveals the average salary—achieved without exposing individual salaries.
I focused on designing the flow of information to ensure privacy during the vote. While the implementation is still a work in progress, I’m getting closer to a robust privacy-preserving mechanism.
The repository’s README now includes instructions on:
Today, I want to take a moment to express my gratitude for the amazing OpenMined community, specially:
🚀 Day 6 of #30DaysOfFLCode!
Back-end is live! 🛠️ 🔒 Powered by Paillier encryption for vote privacy. 🔄 Supports creating elections, submitting votes, & secure aggregation.
🔗 Check now: https://lucaslopes.me/voting
🎉 Day 7 of #30DaysOfFLCode! 🎉
Today's update is a major milestone because the e-voting web app is live! 🌐
💡 Create polls, cast encrypted votes, & view results
🔗 Try now: https://lucaslopes.me/voting.
🔒 Day 8 of #30DaysOfFLCode! 🔒
SyftBox ensures privacy with _.syftperm—a configurable file managing read/write permissions for directories. APIs like my #eVoting API use this to secure data flows automatically.
Privacy made easy! 💪
🔗 Try the web app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Day 9 of #30DaysOfFLCode!
💡 SyftBox isn’t just privacy-preserving cloud storage—it runs computations! 🖥️ ⚡ APIs auto-update with a simple git pull, making deployments seamless.
Cloud computing reimagined. 🌐
🔗 Try the web app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Day 10 of #30DaysOfFLCode!
🚀 Updated the #VotingAPI README with its synchronous model:
No central servers, full privacy!
🔗 github.com/lucaslopes/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Built a Participatory Budgeting Web App:
🔗 Try the app: https://syftbox.openmined.org/datasites/lucaslopesf2@gmail.com/budgeting.html
Next? Integrating with Voting API on SyftBox for participatory decision-making! 🗳️
Social Media Posts: LinkedIn | Twitter/X | BlueSky
💡 Participatory budgeting transforms resource allocation into a collective process. With #SyftBox’s privacy-preserving, decentralized platform, it’s the perfect tool for empowering communities to align priorities. Tech for a fairer society. 🌍
🔗 Try the app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Unified Rated E-Voting & Participatory Budgeting into a Vue.js SPA!
🔧 Fixed:
🔗 Try the app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Built a multi-app SPA for preference aggregation using Vue.js!
Key features:
🔗 Try the app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Enhanced UI/UX + ready-to-use subapps!
🔗 Try the app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
I presented my Voting App at the first OpenMined Show & Tell session!
Grateful to the OpenMined team and community for this opportunity. 🙌
🌟 Highlights:
🔗 Try the app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Solved a tricky Vue.js reactivity issue to show live election & vote counts in the app! 💡 Results So Far:
Grateful to the OpenMined Show & Tell for the traction! This is just the start—more votes, more improvements ahead. 🗳️
🔗 Try the app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Deleting an election in the Voting App is now easier than ever!
✨ How? Just delete the election’s JSON file from the elections folder, and the app automatically removes it from everywhere.
Simple, intuitive, and privacy-focused. Let’s keep building! 🚀
🔗 Try the app: https://lucaslopes.me/voting
Social Media Posts: LinkedIn | Twitter/X | BlueSky
Join me in exploring the intersection of Federated Learning, privacy-preserving computation, and decentralized decision-making. Follow my progress using the #30DaysOfFLCode hashtag. Your thoughts and contributions are welcome!