Building the infrastructure for public goods funding

Building the infrastructure for public goods funding

Gitcoin’s new grants protocol is actively under development and, as of this writing, currently in an alpha testing phase. The details in this blog post reflect the latest information at the time of writing, and could change as the alpha test season progresses. You can keep track of the latest product updates by following @gitcoin on Twitter.

Gitcoin is in the process of making the infrastructure for public goods funding more accessible. To do this, we’re building our grants protocol–a tool for solving funding coordination problems– in public, with input from our community.

One of the biggest challenges facing blockchain ecosystems and communities is coming to an agreement on which problems builders should direct their efforts to solve. Thus far, decision-making on early-stage project funding has been gatekept by private investors and black box platforms. However, decision-making on which projects get the chance to succeed and which are excluded has long-term consequences on who is served by technology that is created.

That’s why we’re creating a protocol that makes it easier for funding to be allocated to projects in a transparent manner. A protocol that is accountable to the community and makes plural funding mechanisms more accessible. Given the open-source nature of the protocol, we hope that once it’s publicly accessible, people will be able to run experiments with various plural funding mechanisms and that multiple funding rounds serving different ecosystems will be running concurrently at any given time.

To start, we’re running a series of alpha rounds to test our MVP with vision-aligned partners such as Optimism. Here, we’ll look at how the protocol works and our vision for what a transparent, on-chain infrastructure for public goods funding looks like.

A brief history of Quadratic Funding

The development of our grants protocol is based on the experience in executing grants programs that Gitcoin has acquired through running fifteen grants rounds with partners including the Ethereum Foundation, a16z, zkSync, and more. At the crux of our program is one of the key mechanisms of the protocol: a fund allocation system known as Quadratic Funding (QF).

Originating from a 2020 paper co-authored by Glen Weyl, Vitalik Buterin, and Zoe Hitzig, QF matches funds based on the number of contributors rather than the total amount funded. It aims to push decision-making to the edges instead of concentrating it in the hands of whales and power brokers. It accomplishes this by matching funds contributed to a crowdfunding campaign with the following equation:

This formula says that the amount received by the project is proportional to the sum of the square roots of the contributions received. In plain terms, this means that projects with a higher quantity of grassroots supporters would receive more funds than those which received more money through individual donations.

These matched funds are sourced from a “matching pool,” which can either be raised from a series of funding partners or, in the case of many of our early partners, sourced from a large ecosystem treasury.

To date, Gitcoin has distributed over $72M in matching funds to hundreds of projects in the Web3 ecosystem through QF.

Retroactive Public Goods Funding

The Optimism Foundation will be utilizing our new grants protocol to run their second retroactive public goods funding round. RetroPGF is a system for funding public goods based on the idea that it’s easier to reward projects that have been useful in the past, than proactively fund untested solutions that could bear fruit in the future.

The ultimate vision for RetroPGF is to create a funding cycle for public goods akin to what currently exists for for-profit startups. The entity deciding which projects merit funding in this scenario is known as a Results Oracle, and, as proposed by Vitalik can take a variety of forms, including a single entity or organization, a smart contract with a fixed allocation table, or project token. The Oracle funds projects that have been recognized as already providing value, with funding it receives from protocol fees. In the case of RetroPGF 2, Optimism’s Citizens’ House will serve as the Results Oracle, and be responsible for distributing funding through a vote from 90 badge holders.

Gitcoin is launching the new grants protocol out of a belief in pluralism. We believe experimentation with a variety of approaches to funding public goods is necessary to determine which methods are most effective for different types of communities, and ultimately lead to the most impact. We’re excited to support RetroPGF 2 and play a part in building a new system to make building public goods a more sustainable endeavor for builders.

Building a community-centric protocol

With the protocol, funding is organized through programs and rounds. All in all, the overall architecture can be summed up as follows:

Programs create the framework for deploying multiple rounds under one ecosystem’s umbrella. Think of it as the brand name for a series of rounds.
Rounds handle the specifics on how funding is allocated. This can be done through quadratic funding or a different strategy (like quadratic voting) – it’s up to the community. Rounds also handle details on the payout process itself.

A round is one wave of a program and runs for a limited amount of time. During a round, community members are able to browse grants and, using their selected mechanism, help decide how funds should be allocated among those grants. For example, GR15 was the fifteenth round of the Gitcoin Grants’ quadratic funding program.

Within a round, there is a:

  • Round core contract that holds the main details of the round and serves as the coordination point for the round’s set of contracts
  • Voting strategy contract that determines the plural mechanism used in the program (e.g., Quadratic Funding or something else).
  • Gatekeeper contract that determines who is eligible to have a say in how the round’s funds are distributedPayout strategy contract that actually distributes the funding.

There are a few different types of users involved in interacting with a grants program through the protocol:

  • Program operators and round operators are wallets that have permission to create and manage a program and round, respectively. For the purposes of testing the protocol, these are currently the same people, but if a program grows more mature and requires more staff, one could theoretically assign different people to these roles.
  • Voters are wallets who cast a vote for a grant during the round. Grantees are projects who apply for acceptance into a round, and upon approval are eligible to receive funding based on the amount of votes / individual contributions they receive.

To use the protocol, first, an operator creates a program on-chain by interacting with the ProgramFactory contract to deploy a unique ProgramImplementation contract.

After deploying the program, the operator deploys the series of contracts that will govern their round: the payout strategy, the voting strategy, the gatekeeper, and the round core. In this process, the round core contract is deployed last so that the other three contracts’ addresses can be linked to the round core.

There are a few parts to the process.

First, all of the voting strategy contracts– which define the voting algorithms for grants within a round– are deployed.

Then, as in the program deployment process, the RoundFactory contract is deployed, followed by the RoundImplementation contract, before the latter is linked to the former. Every PayoutStrategy contract is unique to RoundImplementation, which is why the payouts contract is deployed first.

Decisions, decisions: the voting strategy contract

Currently, communities can choose to either develop with our abstract voting strategy contract, or use the built-in Quadratic Funding voting strategy. This is where the level of plurality in a given round is determined.

The core methods of the abstract contract allow contributors to cast multiple votes, which can be weighed and should emit events after a vote is cast in grant explorer. Developers are free to extend this contract to adjust the weight assigned to different votes and which rounds the voting contract is assigned to. This flexibility allows various degrees of pluralism to be introduced into a round depending on the community’s needs and experimenting with different ways of fund distribution.

The QF contract implements Quadratic Funding in a program by allowing voters to cast multiple weighted votes to grants with a single transaction and is inspired by the bulk checkout contract from the centralized grants platform. It supports fund distribution through both ERC-20 token transfer and native token transfer to the grant address from the funder to the project (not including funds from the matching pool).

Distribution is handled by the payout contract, which takes the updated, weighted distribution the community decides on as uploaded by the executed RoundImplementation contract and sends it to the projects that received the most votes.

Designing for community sovereignty

Gitcoin’s new grants protocol is intentionally designed to be flexible. While technical implementation is important to ensure program operations occur without a hitch, much of the success of a grants program lies in the design decisions made by program operators. These include the specific priorities that ecosystem stewards choose to focus on for a particular round, whether it’s infrastructure or sustainability.

It also includes the level of voting power that the community is given through the voting strategy contract. Round operators can choose to implement Quadratic Funding or another mechanism that incorporates more plural decision-making or limit voting to a centralized group of judges. As a result, the fact that a protocol is run on Gitcoin’s grants protocol doesn’t guarantee that it is pluralistic because it is a permissionless, censorship-resistant tool that supports any round. However, it still remains a transparent alternative to centralized, black box platforms, and it remains easier to audit fund movement through blockchain.

We also believe that our grants protocol serves as a valuable form of community intelligence to ecosystem leaders and other community members through its flexibility and allowance for pluralism. The types of projects that receive votes to be funded are a valuable signal of a community’s values and priorities. Hence, we think of our grants protocol as much as an organizing tool to overcome coordination problems as we think of it as a funding protocol. It has the potential to change the paradigm of existing funding infrastructure by making the community a core unit of peer-to-peer funding, where previous apps have focused their efforts on the individual, and also makes it easier to allocate resources internally within growing ecosystems.

Experimenting with the new protocol

On OP Mainnet, you can explore Gitcoin’s grants protocol more during the upcoming test round. Gitcoin is partnering with the Optimism Foundation to run the second retroactive public goods funding round supporting open-source developers who are crucial to maintaining key parts of OP Mainnet’s technology.

The nomination window will be open from January 3 to January 17 2023. The approval and signup deadline ends on January 24. The voting period will last from January 31 to February 10.

While we’re currently refining our documentation, the code repository for the MVP of our protocol is open-source, and can be found here. We welcome interested contributors who want to take a deeper dive.
Stay tuned for more information on the application and selection process for Optimism RPGF Round 2 in the coming weeks! Follow @OptimismGov on Twitter and subscribe to the RetroPGF newsletter to stay in the loop.