Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add public goods funding page #7732

Closed
wants to merge 31 commits into from

Conversation

emmanuel-awosika
Copy link
Contributor

@emmanuel-awosika emmanuel-awosika commented Sep 7, 2022

This use-case page explains how Ethereum can help improve public goods funding and reduce coordination failures.

Description

The page walks the reader through the following concepts:

  • What are public goods?
  • Why are public goods important?
  • What is the problem with funding public goods?
  • How can blockchains improve public goods funding?

Fixes: #6330

@vercel
Copy link

vercel bot commented Sep 7, 2022

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated
ethereum-org-website ❌ Failed (Inspect) Sep 7, 2022 at 3:18PM (UTC)

@github-actions github-actions bot added content 🖋️ This involves copy additions or edits review needed 👀 labels Sep 7, 2022
@jmcook1186
Copy link
Contributor

Hi - this seems to be a blank page - assume it is in progress? Please convert to draft so it doesn't ping us for review.

@gatsby-cloud
Copy link

gatsby-cloud bot commented Sep 7, 2022

✅ ethereum-org-website-dev deploy preview ready

Updates the index.md file with content for the public goods funding page.
@emmanuel-awosika
Copy link
Contributor Author

Hi - this seems to be a blank page - assume it is in progress? Please convert to draft so it doesn't ping us for review.

I was trying to create a file in my fork of the repository earlier, which was why you saw a blank page (I've added the content now). I want to add a new file (a screenshot), so I can add a relative link to it in the article. Any idea how I can do that?

@jmcook1186
Copy link
Contributor

I'd add the screenshot to src/assets and then use the relative path to link from your page.

Tried to add an image here; not sure if it worked
@emmanuel-awosika
Copy link
Contributor Author

I'd add the screenshot to src/assets and then use the relative path to link from your page.

Alright, thanks. I just pushed a new commit to make the change. Let me know if it works.

@emmanuel-awosika emmanuel-awosika changed the title Add public goods funding Add public goods funding page Sep 7, 2022

2. `Park B`: Adding the square roots of each donor's contribution ($20) gives $40. Subtracting the total amount contributed ($800) from the square of $40 ($1,600) gives $800—the matched funds.

#### Why is quadratic funding ideal? {#advantages-of-quadratic-funding}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"ideal" might be a bit generous - certainly it is favourable compared to traditional funding mechanisms but it is also inherently vulnerable to Sybils whose influence are quadratically scaled. I'd favour using the page-tag wording in the title (i.e. change title to "advantages of quadratic funding")

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed this per your suggestion.


2. **Bribery and collusion**: It is possible to bribe voters to donate to a particular project (even if they prefer another option), thereby artificially inflating perceived preference for the former. This defeats the purpose of voting since the votes cast by a bribed individual may not reflect their true preference. Hence, just like Sybil attacks, bribery and collusion reduce the effectiveness of quadratic funding mechanisms.

Ethereum solves both problems in the following ways:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this problem has been solved - it is still definitely an area of rapid development, but the arms race between Sybil attackers and defenders is real.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed it to "mitigates" since that connotes reducing the problem, not solving it.


[Zero-knowledge proofs](/zero-knowledge-proofs/) enable anyone to prove the validity of a claim without exposing the underlying information. For example, Alice can prove her status as a United States citizen without having to provide her passport details.

Zero-knowledge proofs are particularly useful for preventing bribery and collusion in public voting. This is achieved by obfuscating details about individual votes whilst preserving the integrity of voting results.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this actually implemented in-prod anywhere on Ethereum (genuinely don't know)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clr.fund is similar to Gitcoin and uses MACI. I've provided some more context concerning the tool in the new commit, though.

Cleaned up details related to preventing bribery and collusion with MACI
@corwintines
Copy link
Member

Hey @emmanuel-awosika.

Just wanted to follow up and update you on where we are at.

Last week (Feb 6) we discussed this at GitHub grooming, and decided we needed to workshop this content structure of this a bit. We had a workshopping call Feb 9 to workshop ideas for this page, and I'm working on taking our discussion on this and creating a new content structure. Once I have done that this week, ill follow up with this new structure. After that, the intent is to take as much of what you have written here and bring it into this new structure.

I wanted to apologize for how long this PR has been sitting, but I hope this update will help provide some clarity on where we are at with this, and that we are working to get this across the finish line.

@emmanuel-awosika
Copy link
Contributor Author

Hey @emmanuel-awosika.

Just wanted to follow up and update you on where we are at.

Last week (Feb 6) we discussed this at GitHub grooming, and decided we needed to workshop this content structure of this a bit. We had a workshopping call Feb 9 to workshop ideas for this page, and I'm working on taking our discussion on this and creating a new content structure. Once I have done that this week, ill follow up with this new structure. After that, the intent is to take as much of what you have written here and bring it into this new structure.

I wanted to apologize for how long this PR has been sitting, but I hope this update will help provide some clarity on where we are at with this, and that we are working to get this across the finish line.

Hey @corwintines, thanks for providing an update. Sure, I'll be happy to help rework the page once the new content structure is ready.

@emmanuel-awosika
Copy link
Contributor Author

Hey @corwintines & @wackerow. Any new information on how we might get this over line? I know a new ReFi page (which has some ideas related to public goods funding and regenerative cryptoeconomics) has been added to the website. But I'm wondering if we'd still benefit from a comprehensive resource on public goods funding.

@corwintines mentioned wanting to make the page more reader-friendly, and I'm in support. For starters, we could have some more concrete info about the impact of retroactive public goods funding using stats from Optimism's RetroPGF. This is just an idea at the moment, but I'll leave it to the team to decide the best approach to revamping the content.

@emmanuel-awosika
Copy link
Contributor Author

@corwintines: Resurfacing this PR + sharing some of the newer ideas I have around the content:

  • I believe @samajammin gave a talk at Devcon on “education as a public good”? I can’t remember if that’s the title—but I thought we could include a link to the talk (if it’s available) to the learning resources section.
  • Now that @publicgoodsnetwork is on mainnet, is there a way we can include some content about the project in the page? For starters, this could just be adding a link to the project’s website in the Funding public goods with Ethereum section. But given its status (and novelty) as an L2 network specifically dedicated to funding public goods, we could consider giving it more attention in the content.
  • Is there a chance we could revamp the content and publish in Q4 2024? An idea I have is to include more specific examples of positive impact by public goods funding initiatives—for example, statistics from Optimism’s RetroPGF, past Gitcoin Grants rounds, MolochDAO project funding, Protocol Guild distributions, etc. Another thought was that we could also highlight the value of public goods funding in the context of Ethereum.org itself—for example, saying one or two things about the planned donation round for Ethereum.org contributors at GG19 (eg. we could link out to a recap blog--if there's one planned).
  • IIRC you said the team was still in talks over the best way to structure the page. Perhaps @konopkja has some insights from the UX research side that could help with that? Also, what do you think about getting some feedback on the content from folks from the Gitcoin’s Grants and/or Optimism’s RetroPGF team on the content? (My thought is they could provide some feedback on some of the concepts that we highlight in the page).

Copy link

netlify bot commented Jan 26, 2024

Deploy Preview for ethereumorg ready!

Name Link
🔨 Latest commit 21cc174
🔍 Latest deploy log https://app.netlify.com/sites/ethereumorg/deploys/65fdf4e0d9c2b7000757a6c4
😎 Deploy Preview https://deploy-preview-7732--ethereumorg.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.


### Regenerative cryptoeconomics and public goods markets {#regenerative-cryptoeconomics-and-public-goods-markets}

"Regenerative cryptoeconomics" concerns using blockchain technology to design incentives and mechanisms that support regenerative economic systems. A regenerative economy is one that has positive environmental and social externalities that also generate more capital assets.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

poor sentence, remove

Comment on lines 72 to 98
### 2. Poor resource-allocation mechanisms {#poor-resource-allocation-mechanisms}

In funding public goods, it is necessary to have a mechanism for eliciting the preferences of individuals before allocating funds. Traditional public goods funding models are inefficient because they rely on poorly designed mechanisms for measuring public preferences, such as:

#### Democratic voting {#democratic-voting}

Funding models that apply democratic voting ("one person, one vote") rules rely on the majority opinion to allocate funding for public goods. In theory, using the collective opinion to guide funding is a great idea. In reality, however, this system has problems:

1. **Rational indifference**: In a democratic voting scheme, the ability of each individual to influence the outcome is limited (you can only vote once). As such, those whom a public good benefits the most (for example, public healthcare for aged citizens) are unable to push for its production. This leads to individuals rationalizing nonparticipation ("Why bother voting when my vote matters little?").

2. **Voter ignorance**: Prioritizing the preferences of the majority may not necessarily lead to spending on the right public goods owing to widespread voter ignorance. In this case, informed voters are unable to push for the production of more beneficial public goods.

3. **Negative externalities**: Another downside with democratic funding schemes is the cost borne by the minority. In democratic systems, those who may not necessarily need a public good are forced to pay the same as those who need it the most. Consider the case where Bob (an introvert who prefers staying indoors) is forced to pay taxes to subsidize the creation of public parks for people like Alice (an extrovert who enjoys staying outdoors), even though Bob himself might never get to use the park. This is a trivial example, but there are other real-world situations where the minority in society are (unfairly) required to pay for public goods on behalf of others who need the public good but aren't willing or able to pay for it.

#### Plutocratic voting {#plutocratic-voting}

Some funding models use a plutocratic mechanism in which an individual's financial power determines their influence on the process of providing public goods. These systems are typically described as "one dollar, one vote". In theory, plutocratic funding is ideal since it allows for expressing unequal preference for public goods—but it also has problems:

1. **Serving the rich**: Plutocratic voting prioritizes the preferences of the wealthy (who are often the minority) to the detriment of average income-earners that comprise the majority. Thus, public goods that matter to the majority (and have bigger societal benefits) may never receive funding.

2. **Cost burdens**: It is possible for middle-class citizens to leverage crowdfunding mechanisms in order to compete against wealthy indivdiduals and collectively express their preferences for a public good. But this is considerably unfair since they still have to bear unfavorably higher costs when expressing preferences.

3. **Negative externalities**: Public goods created via plutocratic mechanisms often produce negative externalities, mostly because of the need to maximize returns on investment. A classic example is the Internet as it exists today: because Internet businesses (e.g., social media platforms) cannot charge consumers directly, they rely on advertising to recoup investment in infrastructure. This is even as reports of the [negative effects of targeted advertising on individuals](https://www.vox.com/platform/amp/the-goods/2020/4/9/21204425/targeted-ads-fertility-eating-disorder-coronavirus) continue to surface.

## Improving public goods funding with blockchain technology {#blockchain-for-public-goods-funding}

The problems explained in the previous section lead to "coordination failures" that stall the development of public goods. However, many believe the existence of decentralized blockchain networks, such as Ethereum, can help solve the problem of efficiently funding and developing public goods.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i dont think this is important here and should be removed from this page

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @konopkja. I think it helps to show why a reader should see quadratic funding (or any crypto-based model of funding public goods) as an alternative to the more common approaches (e.g., government funding, private funding via venture capital, and popular crowdfunding schemes like KickStarter). The other part already addresses the incentive problems with some of these models, but the other section highlights more concrete ways in which incentives may be misaligned.

I do agree the text could be shorter and more direct to the point, which is why I rewrote most of the section and removed redundant parts. Let me know if this addresses your concerns.

Comment on lines 21 to 25
As mentioned, public goods are defined as commodities or services made freely available to all members of a society. For a commodity or service to be classified as a public good, it must possess the folllowing characteristics:

1. **Non-excludable**: A public good is _non-excludable_ in the sense that it is costly or impossible to exclude any individual from accessing it. A public road is one example of a public good, no one can prevent you from driving on it (provided you have a license).

2. **Non-rivalrous**: A public good is _non-rivalrous_, meaning that one person consuming the goods or service doesn't prevent another person from doing the same. Going back to the previous example: if you drive on a public road, that doesn't prevent another person from driving on the same road.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove

Comment on lines 15 to 18
Public goods are commodities and services provided to all members of a society (without the possibility of direct profit) usually by government or private organizations. While the creation of public goods is critical to societal progress and wellbeing, traditional models of coordinating to fund public goods suffer problems that limit their efficiency and effectiveness. This makes it difficult to build useful public goods and results in worse outcomes that affect everyone.

But there might be a solution to the problems of funding public goods: blockchain technology. By applying cryptoeconomic incentives and mechanism designs, new blockchain-based projects are fixing the broken model of traditional public goods funding and solving coordination failures in modern markets.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

make it shorter and add example

- Added a shorter, cleaner explanation of challenges facing traditional resource allocation mechanisms
- Reworked introduction to section on improving public goods funding with blockchain technology
- Updated introduction
- Rewrote regenerative cryptoeconomics section
@corwintines
Copy link
Member

corwintines commented Feb 2, 2024

Hey @emmanuel-awosika!

Thanks for the work done on this. We have had a lot of discussion as a team on the public goods funding page, both in the content written here, and the concept/goal of the page.

Where we landed is a need to reframe this page. We noticed a trend through reading and talking about this page that a lot of the discussion for the use case is around funding/voting. While these can be used for public goods funding, they are the core use case in this. I still think we can tie in how they can be used for public goods, but reframing this page around the use case, and then discussing an application like public goods seems like a better approach.

A structure we agreed on, but would like input is something like:

  1. Funding mechanisms (some ideas of funding mechanisms here, would need to be flushed out more and happy to help with this)
    1. Quadratic voting/funding
    2. RPGF
    3. Programmable money / donations
    4. Intro to DAO’s (point to DAO page)
  2. Unique properties that Ethereum brings to the table to enable
    1. Transparency
    2. Immutable
    3. Consensus
    4. Auto-executing (smart contracts)
    5. Privacy?
  3. Intro of what public goods are and tie in Ethereum’s role
    1. Simple intro, get rid of all the game theory. Introduce the concept, but don’t need to get into specifics with examples.
    2. Applications
    3. How quadratic funding can benefit public goods funding

I think there is certainly content written in the current state which will apply to this new structure, but a reframing here to be use cases first, and then an application like public goods funding would suit the content for ethereum.org better.

Let me know if you are interested in working on this pivot. Apologies for the pivot as well, but I think reframing this page will go a long way.

@emmanuel-awosika emmanuel-awosika marked this pull request as draft February 9, 2024 19:39
@emmanuel-awosika
Copy link
Contributor Author

Hey @emmanuel-awosika!

Thanks for the work done on this. We have had a lot of discussion as a team on the public goods funding page, both in the content written here, and the concept/goal of the page.

Where we landed is a need to reframe this page. We noticed a trend through reading and talking about this page that a lot of the discussion for the use case is around funding/voting. While these can be used for public goods funding, they are the core use case in this. I still think we can tie in how they can be used for public goods, but reframing this page around the use case, and then discussing an application like public goods seems like a better approach.

A structure we agreed on, but would like input is something like:

  1. Funding mechanisms (some ideas of funding mechanisms here, would need to be flushed out more and happy to help with this)

    1. Quadratic voting/funding
    2. RPGF
    3. Programmable money / donations
    4. Intro to DAO’s (point to DAO page)
  2. Unique properties that Ethereum brings to the table to enable

    1. Transparency
    2. Immutable
    3. Consensus
    4. Auto-executing (smart contracts)
    5. Privacy?
  3. Intro of what public goods are and tie in Ethereum’s role

    1. Simple intro, get rid of all the game theory. Introduce the concept, but don’t need to get into specifics with examples.
    2. Applications
    3. How quadratic funding can benefit public goods funding

I think there is certainly content written in the current state which will apply to this new structure, but a reframing here to be use cases first, and then an application like public goods funding would suit the content for ethereum.org better.

Let me know if you are interested in working on this pivot. Apologies for the pivot as well, but I think reframing this page will go a long way.

Hey @corwintines. The proposed content structure looks good to me. I'll reach out on Discord with details related to work on this page shortly.

Copy link
Contributor

coderabbitai bot commented Mar 13, 2024

Important

Auto Review Skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository.

To trigger a single review, invoke the @coderabbitai review command.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share

Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit-tests for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit tests for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit tests.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger a review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • The JSON schema for the configuration file is available here.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/coderabbit-overrides.v2.json

CodeRabbit Discord Community

Join our Discord Community to get help, request features, and share feedback.

@wackerow
Copy link
Member

Noticed the build/preview was failing... updated this with latest from dev and patched the image paths that would prevent it from building. Lastly removed the now-unused image. Will check back to see if this preview is at least working.

@corwintines
Copy link
Member

With the change of direction around the content of this page, im going to close this out in favor of a funding page in the future. I do appreciate all the work done here @emmanuel-awosika, and when it comes time to touch on public goods in content around the site I will certainly be coming back to this PR to pull from. It certainly will not go to waste!

@github-actions github-actions bot added the abandoned This has been abandoned or will not be implemented label Mar 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
abandoned This has been abandoned or will not be implemented content 🖋️ This involves copy additions or edits
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Epic: Public goods use case page
8 participants