Devfolio's Quadratic Voting
Quadratic Voting (QV) is a collective decision-making process that allows participants to express not just their preferences, but also the intensity of those preferences. Instead of simply voting “yes” or “no,” each person is given a set number of votes they can distribute among different options or projects.
Quadratic voting has been used across multiple hackathons like ETHforAll, ETHIndia, ETHDenver, ETHSF, Base: Onchain Summer, Base Batches, Base Around the World and many more. And has distributed about $150K in crypto among 1000+ projects.
Why on Devfolio? Hackathon judges can have some bias, some may lack expertise in certain niche. QV lets participants, organizers, and partners fairly judge projects, ensuring that the most broadly and passionately supported projects rise to the top.
Systems explored:
One person one vote only considers the direction of one’s preference and not how strongly one feel about it.
One person, multiple votes? these systems suffer from a fundamental flaw, their linear nature. people can dump all their votes into a single choice rather than expressing their true preferences across multiple options. That’s what QV changes, it enables people to express how strongly they feel about a particular option.
The key feature of QV is that the cost of casting multiple votes for the same option increases quadratically. For example, if casting one vote costs 1 point, casting two votes for the same option costs 4 points, three votes cost 9 points, and so on. This system makes it expensive to concentrate all your votes on a single option, encouraging a more balanced and fair distribution of voting power.
Here’s the math behind QV and how it works on Devfolio.
Quadratic Voting is designed to:
- Prevent a small group from dominating the outcome.
- Empower the broader community to participate in decision-making.
- Reflect both the number of people who support an option and how strongly they support it.
Each user has 100 votes to spend on the projects they like the most. There is search and filters for users to look for projects and a shuffle button to refresh the list of projects they are seeing currently.
To decide what project to vote for, a user can click on ‘Quick view’ which shows Devfolio Project Submission or check the GitHub out directly and make their decision.
To vote for a project, user clicks on the ‘Vote’ CTA which changes to a stepper. Here is how the stepper interaction is designed. This was prototyped using Claude.
The sidebar acts as a voting cart for the projects the user has voted for. It also shows the number of votes a user has, and has distributed. In cases, a user has spent more than a 100 votes, error states are also managed by the sidebar.
When a user has spent 100 votes, the submit button gets active and by clicking on it, user gets one last chance to review all the votes.
When a user has spent 100 votes, the submit button gets active and by clicking on it, user gets one last chance to review all the votes.
Upon clicking submit, an attestation is generated for the votes against the user’s wallet using Ethereum Attestation Service.
Users also get an option to spread the word over the internet about the projects they are supporting.
A user can always return to the same page to check the projects they voted for and also view the results when it becomes available.
- Clicking on view results would scroll the page and show the user the results.
- Clicking on any project here would show the quadratic math and the attestations gotten by the project.
Here’s how an attestation looks like
Read more about Quadratic Voting