Day 13: Fund public goods with Gitcoin Grants

CORE CONCEPTS

Today we’ll make a contribution to support public goods and other projects that have positive externalities on the world. In doing so, we’ll learn about quadratic funding, a more democratic and scalable way of allocating match funds. We’ll also discuss Sybil resistance, which is necessary to preserve privacy on the open web while preventing bots from interfering with democratic processes.

IMPORTANT

This session requires having some assets on Polygon. Read here if you need help bridging from Ethereum to Polygon.

What are public goods?

Public goods are common resources that everyone benefits from. They are foundational to any society.

Public goods include natural assets like clean air and water; essential services that aren’t supported by traditional business models, such as public schools and firefighters; and critical infrastructure like roads and sewer lines. Public goods are most often provided and stewarded by government, and funded by taxes.

While public goods in the physical world are easy to grasp, public goods are also essential to the health of the digital world.

Much of the Internet runs on open-source software and open protocols. Protocols like http, programming languages like Python, operating systems like Linux are all open and free for anyone to build on top of. In fact, open-source is so prolific, it would be virtually impossible to release anything over the Internet without touching an open-source protocol or software.

Public goods in the digital world are neither administered by governments nor funded by taxes. On the one hand, this means they are truly global public goods; on the other, it makes it more complicated to fund and maintain them.

Ethereum is a public good. Although the network is constantly offering rewards to validators, and the value of ETH as a cryptocurrency may increase over time, Ethereum does not have any built-in mechanism for paying developers to work on it. Its core work is supported by a foundation with a decentralized governance structure and a global network of open-source contributors.

The very nature of web3, ie, the decentralized web, is prompting a strong movement towards open-source building. In order to create incentives for developers to work on open-source projects, we also need new models of public goods funding.

Gitcoin

Gitcoin was one of the first organizations to recognize the importance of public goods for web3. It provides several mechanisms to support building and funding public goods, including a space for organizations to post specific bounties and regular “grants rounds” for individuals and projects to receive unrestricted funding.

Gitcoin was originally formed as a corporation, but is in the process of turning itself into a DAO. To date, it has given out more than $60 million, supported more than 2,000 projects, and helped over 300,000 active developers. It’s impressive, but still only a drop in the bucket given the need for open-source software and other digital public goods.

Fortunately, Gitcoin is not the only player. There is significant public goods funding from networks built on top of Ethereum (eg, Polygon, Optimism, Arbitrum) as well as newer chains that reserved a large share of their initial token allocations for grant-making. Several other organizations including clr.fund and DAOs have developed funding mechanisms both to catalyze new work and provide retroactive funding for valuable contributions.

Gitcoin Grants Round 14
Gitcoin Grants Round 14

Gitcoin puts on multiple grants rounds a year. Each round has a “matching pool” of funds that are raised upfront from large donors. Then, the round is opened to the public. Community members contribute directly to projects they care out. The matching pool from big donors is allocated in real-time based on the contributions from the community of smaller donors.

At the time of writing, Gitcoin just launched its 14th grants round. Soon, we’ll find a project (or two) from the current round to contribute to with cryptocurrency.

But first we need to discuss the novel mechanism Gitcoin uses to allocate grants: quadratic funding.

WTF is quadratic funding?

Quadratic Funding is a mathematically optimal way to allocate funding to public goods in a democratic community.

Normally, matching funds are allocated using a fixed ratio: eg, for every $1 donated, $1 is matched. With traditional matching, a project that receives $100 from one donor would receive the same allocation of matching funds as a project that receives $1 from 100 donors.

With quadratic funding, a project that has the support of many small-ticket contributors will receive a substantially larger share of match funds than a project that only has a few big-ticket contributors.

All of this is determined by a quadratic formula, which you can see in action here. I’ve also included some more resources and use cases about quadratic funding and voting at the end of this post.

The net effect of quadratic funding is intended to push power to the edges and create more democracy and trust in public goods funding decisions.

Quadratic funding has a very important limitation, though. It is susceptible to “Sybil attacks”.

A Sybil attack is a type of attack on a network in which the attacker creates a large number of pseudonymous identities and uses them to gain a disproportionately large influence. In the case of Gitcoin Grants’ quadratic funding, a donor is incentivized to spend $10 by making ten contributions of $1 to the same cause rather than a single contribution of $10. To prevent such behavior, we need Sybil resistance.

When we make our contribution, we’ll see some of the tactics Gitcoin uses to resist Sybil attacks.

Funding a project on Gitcoin Grants

Now we’ll make a small contribution to a project on Gitcoin Grants. Start by going to the grants page in your MetaMask enabled browser here: gitcoin.co/grants.

The current round has a variety of general themes, including Climate Solutions and Crypto Advocacy, as well as pools for more specific projects that are building Ethereum Infrastructure, improving Polygon, etc.

The current round has more than $3 million in matching funds available
The current round has more than $3 million in matching funds available

We’ll take an example from the Climate Solutions round, but you’re welcome to browse and choose any project you like.

Click the Climate Solutions box and you’ll see a marketplace of different projects. You can filter and search for projects. As you browse the projects, you’ll get a sense for how diverse the ecosystem is: it includes everything from solo art and media projects to early stage ventures.

Search or keep scrolling until you find Spark Eco, a DAO that is building a decentralized solar grid. Again, feel free to pick another project, just make sure that it is able to receive contributions via Polygon. (This is indicated by a tag just below the grant description.)

Select a project like Spark Eco, which accepts contributions via Polygon
Select a project like Spark Eco, which accepts contributions via Polygon

Click and read more about the project. You can learn about the team behind it and see the wallet address where funds are sent.

You can also see the matching ratios. For this project, at this moment, a donation of $1 has a match of $70 and a donation of $100 has a match of $379. Once you’re ready to proceed, click Add to cart.

Add the project to your Gitcoin Grants shopping cart
Add the project to your Gitcoin Grants shopping cart

Before checking out, however, you will need to login to Gitcoin using your Github account. Click the Sign in button to login with Github or create a Github account. (Github is a web2 platform that software developers use for version control and storing code repositories.)

Sign in to Gitcoin with a Github account
Sign in to Gitcoin with a Github account

I already have a Github account so I’m not able to show screenshots of how to do this, but the user interface is similar to normal web2 sign-up processes, so hopefully this step is straightforward.

Once you’re signed in, you should be able to access your Grants Cart. The default contribution is set at 25 DAI. DAI is an Ethereum-based stablecoin pegged to the dollar. We’ll be contributing a smaller amount - and we’ll be doing it on Polygon, not Ethereum.

To change the settings, click I’m Ready to Checkout and select the Polygon Checkout option.

Checkout with Polygon
Checkout with Polygon

Once you initiate the checkout progress, you’ll get the usual Connect with MetaMask prompts. You will also need to allow the site to switch your network from Ethereum to Polygon.

Connect to Gitcoin Grants with MetaMask
Connect to Gitcoin Grants with MetaMask

Once you switch to Polygon and connect your wallet, the checkout page will update, letting you know that you have insufficient DAI to complete checkout.

Switching over to Polygon
Switching over to Polygon

In order to proceed, we will first need to change the currency from DAI to MATIC. Remember, MATIC is Polygon’s native token. (You could pay with other supported assets you have on the Polygon chain, including ETH, but we’ll use MATIC for our example.)

After switching to MATIC, change the grant amount from 25 to 2 MATIC. The minimum contribution size is just under 2 MATIC, worth about $1. My contribution of 2 MATIC will generate a match of 73 DAI ($73).

You’re also encouraged to give back to the Gitcoin matching pool. You can keep the default 5% setting or update to another percentage (including 0%).

Update your grant amount to 2 MATIC
Update your grant amount to 2 MATIC

Once you’ve done this, you can click I’m Ready to Checkout and select the Polygon Checkout option again.

This time, you’ll get the MetaMask popup plus a few other friendly warnings (ie, don’t close the tab, remember the transaction will take some time to process, etc.) These are safe warnings, but it’s always a good idea to closely review any warnings on a dapp!

Confirm the transaction on MetaMask. Note the small gas fee of using Polygon of about 0.04 MATIC, which is less than $0.05.

Confirm your contribution with MetaMask
Confirm your contribution with MetaMask

The transaction should post in less than 30 seconds. When it’s through, the page will update with a short thank you note. It will also include a prompt to verify your identity in order to maximize your match.

Sybil resistance and decentralized identity verification

Identity verification is an additional step to improve Sybil resistance. The first step was requiring users to login with a Github username/password. However, a user could have multiple Github accounts. Gitcoin employs other measures to prevent the same person from contributing through multiple accounts. Now we’ll take a quick look at other attempts to prevent Sybil attack.

Click the Verify button.

Your contribution went through! Now verify you're not manipulating the system by contributing from multiple accounts.
Your contribution went through! Now verify you're not manipulating the system by contributing from multiple accounts.

A new tab will open with options for identity verification. These range from linking other web2 usernames, such as Google or Facebook, to web3-native approaches like linking your ENS and decentralized “proof-of-person” apps.

I recommend exploring some of these decentralized “proof-of-person” apps, especially Proof of Humanity, although they take more than one day to complete. We’ll keep it simple today.

Proceed by clicking the Connect Passport button.

Connect Passport so your contribution can receive a trust bonus
Connect Passport so your contribution can receive a trust bonus

The dapp will check to see if you have a “Gitcoin Passport” already. Since you don’t, it will update with a prompt to create one. Click the link under the Connect Passport button that says visit Gitcoin Passport to create a passport.

Visit Gitcoin Passport to create an identity passport
Visit Gitcoin Passport to create an identity passport

A new tab should open up, prompting you to Connect Wallet and set-up a passport. Click the Connect Wallet button to start the signing process.

Connect Wallet to set-up a Gitcoin passport
Connect Wallet to set-up a Gitcoin passport

As usual, MetaMask pops up and you are prompted to connect and sign the transaction.

Connect with MetaMask
Connect with MetaMask

The page will update to show seven different identity verification options: three web2 options, three web3 options, and one hybrid option (Bright ID).

However, note the warning sign in the top right - because you are on Polygon. To proceed with verification, we need to switch back to Ethereum. (Don’t worry, there won’t be any gas fees with these transactions.)

Gitcoin Passport offers seven ways of identity verification
Gitcoin Passport offers seven ways of identity verification

Switch to Ethereum and then click the button to Link to ENS. MetaMask will popup asking you to sign the transaction.

Verify your ENS and earn a "stamp" in your Gitcoin Passport
Verify your ENS and earn a "stamp" in your Gitcoin Passport

Next, you will be asked to confirm that your ENS name (14days.eth in my case) is the correct credential.

Click Verify and after a few seconds the page should update to show that you have an ENS stamp.

Verify your ENS name is correct and earn a "stamp" in your passport
Verify your ENS name is correct and earn a "stamp" in your passport

You can also verify that you have a POAP linked to your account that is at least 15 days old. Click the Connect to POAP button and sign the transaction.

Verify you have a POAP more than 15 days old
Verify you have a POAP more than 15 days old

Excellent! Now you should have at least one and potentially two identity stamps in your passport. These are decentralized proof that you didn’t just create a bunch of accounts in order to manipulate the quadratic funding algorithm.

Go back to the Gitcoin Trust Bonus tab and click the Connect Passport button again. After a few seconds, you’ll see that your passport has been accepted and is ready for scoring. Click Score Passport.

Score your passport to see your trust bonus
Score your passport to see your trust bonus

After a few more seconds, the page will update showing your matching percentage increased from 50% to 100%.

Finally, click Save Passport so that your trust score can be stored on-chain and you’re good to go.

Your trust score is saved on chain
Your trust score is saved on chain

Final thoughts

That may seem like a lot just to make a $1-2 donation to a project. And, I’ll admit, it is a bit of an adventure the first time you do it!

However, Gitcoin is building deeply important tooling and infrastructure for Internet public goods and digital democracy.

There are many applications for deploying funding pools to better reflect the preferences of a community. Some towns and cities are now experimenting with quadratic funding, even the City of Oakland through the current Gitcoin Grants Rounds.

Gitcoin Passport also provides clues for how digital voting and democracy could take form in the future in the real world. If we can better ensure one human / one vote, then it may be possible to replace outdated systems of manual voting without handing over personal data to centralized systems that are at risk of data breaches or hacking.

Gitcoin is another example of the composability and transparency that the blockchain affords. It integrates seamlessly with grantors and grantees wallets, so there is no overhead in receiving or disbursing funds. (You can audit your contribution directly.) It also builds off other dapps like ENS and POAP to verify your identity.

Finally, Gitcoin and its community are an inspiring example of web3 being a force for good in the world. I encourage you to follow them and go back to support more public goods in the future because, well, public goods are good.

Further reading:

Subscribe to Carl Cervone
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.