Merge branch 'main' of github.com:life-itself/web3
This commit is contained in:
commit
4395459b5e
|
|
@ -2,11 +2,29 @@
|
|||
|
||||
A problem in economics where a collective good or service must be sustained by [mutualization](mutualization.md) of funds across different parties with different incentives while maintaining access.
|
||||
|
||||
* National defence is a public good.
|
||||
* Open source software is a public good.
|
||||
* City parks are a public good.
|
||||
## Example:
|
||||
|
||||
Jim wants to be able to see as he walks along at night so he contributes to the cost and upkeep of streetlights. Mike also wants to have lit streets. Mike, however, recognises that if other people, like Jim, pay for street lights he can benefit from this without having to contribute because street lights are a [public good](public-goods.md); street lights are non-excludable and non-rival. Mike therefore does not contribute, but is able to enjoy well lit streets as others have paid for this public good. If everyone acted as Mike, no one would contribute to the public good. If people can benefit from a public good without paying for it, why would they pay for it? But if no one contributes, there will be no funding for public goods. This is what we call the **public goods problem**.
|
||||
|
||||
## Associated problems:
|
||||
|
||||
* **Funding problem:** How do we fund public goods?
|
||||
* **Allocation problem:** How do we coordinate decion making in deciding what public goods to fund/ how to allocate funds?
|
||||
* **The [free rider problem](free-rider-problem.md):** How do we prevent free-riders and the associated collapse in provision of the public good?
|
||||
|
||||
## The [free rider problem](free-rider-problem.md)
|
||||
|
||||
Mike is a free rider, enjoying the benefits of a public good (in this case street lights) without contributing to the costs of the good. This is what we call the [free rider problem](free-rider-problem.md): the use of public goods by parties who do not contribute to their creation or upkeep while still extracting value from the service or good. This can lead to under-provision of a good or service.
|
||||
|
||||
|
||||
# Examples of public goods:
|
||||
|
||||
* National defence
|
||||
* Open source software
|
||||
* City parks
|
||||
* Lighthouses
|
||||
* Street lights
|
||||
|
||||
See also [free rider problem](free-rider-problem.md).
|
||||
|
||||
## References
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
# Public Goods
|
||||
|
||||
Public goods are goods which anyone can use and benefit from, not just those who contribute to the creation and/or upkeep of the good.
|
||||
|
||||
* Public goods are non-excludable: anyone can use them.
|
||||
* Public goods are non-rival: one person's consumption of the good does not diminish another person's consumption of it.
|
||||
|
||||
| Rival | Non-Excludable | Excludable |
|
||||
| ----------- | ------------ | ----------------------|
|
||||
| Yes | Private goods | Common-Pool Resources |
|
||||
| No | Club goods | Public Goods |
|
||||
|
||||
## Examples of public goods:
|
||||
|
||||
* National defence
|
||||
* Open source software
|
||||
* City parks
|
||||
* Lighthouses
|
||||
* Street lights
|
||||
|
||||
See [Public Goods Problem](public-goods-problem.md)
|
||||
|
|
@ -25,7 +25,7 @@ In this episode, Rufus and Stephen engage with the vision laid out by technologi
|
|||
This thesis has been put forward in various forms. So far, the most fully articulated form that we have found is from Balaji Srinivasan. See the show notes below for links to source material.
|
||||
|
||||
|
||||
## Conflict of Interests Disclaimer
|
||||
## A note before we get stuck in
|
||||
|
||||
* It’s hard to disentangle venture capitalist narratives from:
|
||||
1. Talking their books
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import Link from "next/link"
|
||||
import { YOUTUBE_REGEX } from "../../lib/constants"
|
||||
import { YOUTUBE_ID_REGEX } from "../../lib/constants"
|
||||
|
||||
export function Latest({ posts }) {
|
||||
return (
|
||||
|
|
@ -23,7 +23,7 @@ export function Latest({ posts }) {
|
|||
<div className="flex-1 bg-slate-800 p-6 flex flex-col justify-between">
|
||||
<div className="flex-1">
|
||||
<p className="text-sm font-medium text-indigo-600 dark:text-yellow-500">
|
||||
{youtube && YOUTUBE_REGEX.test(youtube) ? (
|
||||
{youtube && YOUTUBE_ID_REGEX.test(youtube) ? (
|
||||
<a target="_blank" rel="noopener" href={youtube} className="hover:underline">
|
||||
Video
|
||||
</a>) : <p>Article</p>}
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@ import MdxContent from "./MdxContent";
|
|||
import siteConfig from "../config/siteConfig";
|
||||
|
||||
import LiteYouTubeEmbed from "react-lite-youtube-embed";
|
||||
import { YOUTUBE_REGEX, YOUTUBE_ID_REGEX } from "lib/constants";
|
||||
import { YOUTUBE_ID_REGEX } from "lib/constants";
|
||||
|
||||
export default function MdxPage({ body, meta }) {
|
||||
const { title, description, date, keywords, youtube, podcast, image, _raw } =
|
||||
meta;
|
||||
|
||||
const youtubeId = youtube && YOUTUBE_REGEX.test(youtube) && youtube.match(YOUTUBE_ID_REGEX)[1]
|
||||
const youtubeId = youtube && YOUTUBE_ID_REGEX.test(youtube) && youtube.match(YOUTUBE_ID_REGEX)[1]
|
||||
|
||||
const PodcastIcon = siteConfig.social.find((s) => s.name === "Podcast").icon;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
export const YOUTUBE_REGEX = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
|
||||
export const YOUTUBE_ID_REGEX = /(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:\S*&)?vi?=|(?:embed|v|vi|user|shorts)\/))([^?&\"'>\s]+)/
|
||||
|
||||
export const TWITTER_REGEX = /^https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(es)?\/(\d+)/;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import Link from "next/link";
|
||||
import { allOtherPages } from "contentlayer/generated"
|
||||
import { YOUTUBE_REGEX } from "lib/constants";
|
||||
import { YOUTUBE_ID_REGEX } from "lib/constants";
|
||||
|
||||
export async function getStaticProps() {
|
||||
const posts = allOtherPages
|
||||
|
|
@ -30,37 +30,37 @@ export default function Notes({ posts }) {
|
|||
</p>
|
||||
</div>
|
||||
<div className="mt-12 max-w-lg mx-auto grid gap-6 lg:grid-cols-3 lg:max-w-none">
|
||||
{posts && posts.map(({ title, description, image, youtube, link }) => (
|
||||
title && description &&
|
||||
(<div key={link} className="flex flex-col rounded-lg shadow-lg overflow-hidden">
|
||||
<div className={`bg-stone-100 flex-shrink-0 ${image ? "h-48" : "h-10"}`}>
|
||||
{image && <img className="" width="100%" height="100%" src={image} alt={title} />}
|
||||
</div>
|
||||
<div className="flex-1 bg-slate-800 p-6 flex flex-col justify-between">
|
||||
<div className="flex-1">
|
||||
<p className="text-sm font-medium text-indigo-600 dark:text-yellow-500">
|
||||
{youtube && YOUTUBE_REGEX.test(youtube)
|
||||
? (<a target="_blank" rel="noopener" href={youtube} className="hover:underline">
|
||||
Video
|
||||
</a>)
|
||||
: <p>Article</p>
|
||||
}
|
||||
</p>
|
||||
<Link href={link}>
|
||||
<a className="block mt-2">
|
||||
<p className="text-xl font-semibold text-slate-900 dark:text-slate-300">{title}</p>
|
||||
<p className="mt-3 text-base text-gray-500">
|
||||
{description && description.length > 150
|
||||
? `${description.slice(0, image ? 120 : 200)} ...`
|
||||
: description
|
||||
}
|
||||
</p>
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>)
|
||||
))}
|
||||
{posts && posts.map(({ title, description, image, youtube, link }) => (
|
||||
title && description &&
|
||||
(<div key={link} className="flex flex-col rounded-lg shadow-lg overflow-hidden">
|
||||
<div className={`bg-stone-100 flex-shrink-0 ${image ? "h-48" : "h-10"}`}>
|
||||
{image && <img className="" width="100%" height="100%" src={image} alt={title} />}
|
||||
</div>
|
||||
<div className="flex-1 bg-slate-800 p-6 flex flex-col justify-between">
|
||||
<div className="flex-1">
|
||||
<p className="text-sm font-medium text-indigo-600 dark:text-yellow-500">
|
||||
{youtube && YOUTUBE_ID_REGEX.test(youtube)
|
||||
? (<a target="_blank" rel="noopener" href={youtube} className="hover:underline">
|
||||
Video
|
||||
</a>)
|
||||
: <p>Article</p>
|
||||
}
|
||||
</p>
|
||||
<Link href={link}>
|
||||
<a className="block mt-2">
|
||||
<p className="text-xl font-semibold text-slate-900 dark:text-slate-300">{title}</p>
|
||||
<p className="mt-3 text-base text-gray-500">
|
||||
{description && description.length > 150
|
||||
? `${description.slice(0, image ? 120 : 200)} ...`
|
||||
: description
|
||||
}
|
||||
</p>
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>)
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue