Skip to content

This is an open source implementation of quadratic funding, a design for philanthropic and publicly-funded seeding, which allows for optimal provisioning of funds to an ecosystem of public goods.



Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Note: This repo is out of date. To checkout Gitcoin's QF Protocol go to

Gitcoin Grants Quadratic Funding Implementation

Quadratic Funding

This is an open source implementation of quadratic funding or liberal radicalism, a design for philanthropic and publicly-funded seeding which allows for optimal provisioning of funds to an ecosystem of public goods.

This concept was adapted from a paper written by Vitalik Buterin, Zoë Hitzig and Glen Weyl of liberal radicalism fame.

How Does It Work?

The idea of a quadratic voting system was the starting point for Gitcoin's funding open source experiment.

The math behind liberal radicalism (LR) can be quite complex, but essentially, individuals make public goods contributions to projects of value to them. The amount received by the project is the amount donated, and an additional amount proportional to the square of the sum of the square roots of contributions received, minus the actual contributions themselves (the sum of the contributions itself, by project.

So basically, you can think of donating to a Gitcoin Grant as two steps:

  1. Individuals crowdfund donations towards public goods (for example: commonly used repositories in open source software).

  2. These individual contributions are "matched" by funds from a government, grants program, or private philanthropist.

How the match is calculated is essentially liberal radicalism (LR), which can be summarized as "crowdfunding, with a matching function." Gitcoin's first round was a capital constrained version of LR, since the match amount is limited by the pot of funds that we get from philantropists. Capital constrained liberal radicalism is what we call "CLR", which you'll find conveniently used throughout our site.

Why this, and not just 1:1 matching?

Using LR/CLR in open source ideally helps to prevent the "tragedy of the commons." In open souce, every individual that has an incentive to consume an OSS resource at the expense of every other individual has no way to exclude anyone else from consuming it, resulting in overconsumption, under investment, and ultimately, depletion of the resource.

LR puts an emphasis on the number of donations, rather than the size of the donation itself. This is the intended feature of the LR mechanism. Projects that can get more people to donate to them represent public goods that serve a larger public, so the tragedy of the commons problem is more severe, and hence, contributions to them should be multiplied more to compensate.

Problems Observed in Gitcoin Grants Rounds 1 & 2

Sybil resistance: We know that grants which receive many small contributions result in a larger "top-off" value from the benefactor, incentivizing an attack vector to create multiple dummy accounts to try to confuse the system.

Collusion: An attacker of the system could split up $100 into 10 people's hands, and thus achieve a much higher CLR match than deserved.

Reliance on philanthropists: In practice, CLR still suffers from reliance on a benefactor or government, a part of the problem which it purports to solve. CLR still requires generous funding, either from corporate backing, direct government support, or private benefactors.

Prior knowledge: One of the drawbacks of the CLR experiment is the fact that once the mechanism is known, people will know how to game it.

Implementation Upgrade: The Pairwise Mechanism

Vitalik writes of the pairwise mechanism that would help alleviate some of the collusion issues that we noticed with non-pairwise CLR matching.

With pairwise matching, the same rules for CLR still apply. The number of contributions, not the contribution amount matters more in terms of obtaining a higher match. But now, we make the assumption that the amount of funds a specific pair puts toward the same grant is evidence of how coordinated they are, and so the more grants both of them donate to, the more constricted the CLR match for that pair, under that grant.

From Vitalik's blog, we can compare the effect of the pairwise mechanism with varying thresholds against our original QF mechanism. This graph shows us that regardless of mechanisms, the number of contributions matters more than the contribution amount, and dictates that it generally penalizes projects that dominated by large contribution amounts:

While collusion can still happen, it is much easier to find. Matching pairs gives us a signal to find colluders, which can subsequently be confirmed through timestamps, frequency of donations, geographical location, and github account age.

Gitcoin Grant Round Summaries by Vitalik Buterin

  • Gitcoin Grants Round 3
  • Gitcoin Grants Round 4
  • Gitcoin Grants Round 5
  • Gitcoin Grants Round 6
  • Gitcoin Grants Round 7

Additional Reading


Standard Bounties Contract


Gitcoin Grants

Research Papers:

Liberalism Radicalism: A Flexible Design For Philanthropic Matching Funds

Pairwise Coordination - A New Quadratic Funding Design

Minimal Anti-Collusion Infrastructure

Blog Posts:

Gitcoin Grants: Q1 Match + 2020 Roadmap

Gitcoin Grants

Experiments with Liberal Radicalism Gitcoin Grants: CLR Matching

Radical Results: Gitcoin's $25K Match

Gitcoin Grants: $50K Open Source Fund

Gitcoin’s Q3 Match: $100K+ to OSS projects

Gitcoin's Q3 Match The Radical Results

Gitcoin Grants Round 4 Results Gitcoin Grants Round 5: Funding Our Future

Gitcoin Grants Round 6

Vitalik's Blog - Review of Gitcoin Quadratic Funding Round 3

Vitalik's Blog - Review of Gitcoin Quadratic Funding Round 4

Vitalik's Blog - Gitcoin Grants Round 5 Retrospective

Vitalik's Blog - Gitcoin Grants Round 6 Retrospective

Vitalik's Blog - Gitcoin Grants Round 7 Retrospective


This is an open source implementation of quadratic funding, a design for philanthropic and publicly-funded seeding, which allows for optimal provisioning of funds to an ecosystem of public goods.







No releases published


No packages published