[site/PR-161]: merge latest changes
This commit is contained in:
commit
f2b08a248c
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ca53ff6b3314cbc4078c212424d64f750f3abebf4fa276ae923356984667bcb1
|
||||
size 667691
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dc4e4a9b1b9e01994c8e10ac1bc41deb7d2261f6a5861619a1f8d4b77aef09f9
|
||||
size 263612
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 1.3 MiB |
|
|
@ -192,7 +192,7 @@ Understand the deeper theoretical concepts behind the technical and economic cla
|
|||
* [Predatory inclusion](../concepts/predatory-inclusion.md)
|
||||
* [Enclosure](../concepts/enclosure.md)
|
||||
|
||||
**Meta**
|
||||
#### Meta
|
||||
|
||||
* [Value](../concepts/value.md)
|
||||
* [Risk](../concepts/risk.md)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# Editing Guide
|
||||
|
||||
This is a guide to help people contribute content or manage contribution of content. Focus is on the "wiki" content stored in markdown -- which is all pages except the front page and a few special generated pages e.g. `/all` page.
|
||||
|
||||
[Read the guide](https://docs.google.com/document/d/1RcwjaJYn0jtMw9rOR9W0Gv2fmQDd7Fjr53NM6j1-lco/edit?usp=sharing).
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
---
|
||||
title: A Macroeconomics Perspective on Cryptocurrencies
|
||||
date: 2022-05-03
|
||||
created: 2022-04-03
|
||||
description: "In this episode of our Making Sense of crypto and web3 series, Stephen Diehl is joined by economist and data scientist, Matthew Ranger, in a discussion on crypto assets from the perspective of an economist."
|
||||
image: /img/a-macro-economics-thumbnail.png
|
||||
youtube: https://youtu.be/bLRsmn1Tsn8
|
||||
featured: true
|
||||
aliases: notes/a-macroeconomics-perspective-on-cryptocurrencies.md
|
||||
---
|
||||
|
||||
---
|
||||
title: A Macroeconomics Perspective on Cryptocurrencies
|
||||
date: 2022-05-03
|
||||
|
|
|
|||
|
|
@ -38,9 +38,9 @@ Rufus and Stephen end their conversation with an analysis of this position and t
|
|||
* Gave rise to a modern framework of laws that cover financial products from debt instruments, bonds, equities, and derivatives. The legal foundation on which all of market capitalism is built.
|
||||
* **Because of their centrality to markets, securities have strict registration, ownership and transfer regulation.**
|
||||
|
||||
## The Debate Aurrounding Crypto Investments
|
||||
## The Debate Surrounding Crypto Investments
|
||||
|
||||
* There is currently debate about how crypto investments fall under the existing securities regulatory framework. This is being debated inside the government regulatory agencies, on the floor of the senate, and in the courts.
|
||||
* There is currently debate about how crypto investments fall under the existing securities regulatory framework. This is being debated inside the government regulatory agencies, on the floor of the Senate, and in the courts.
|
||||
* The outcome of the final ruling will potentially impact trillions of notional value in “scofflaw” investments of potentially unregistered securities.
|
||||
* Landmark case from 1946, SEC vs W. J. Howey Co. set the [Howey Test](../concepts/howey-test.md) precedent for determining what is a securities contract.
|
||||
* (1) an investment of money, (2) in a common enterprise, (3) with the expectation of profit and (4) to be derived from the efforts of others.
|
||||
|
|
@ -48,11 +48,11 @@ Rufus and Stephen end their conversation with an analysis of this position and t
|
|||
* **If we accept the premise that crypto tokens aren’t currencies, then tokens are clearly investments made with the expectation of profit. Are crypto assets unregistered securities?**
|
||||
* Crypto tokens currently exist partially outside the US securities framework.
|
||||
* The SEC has taken action against some [Initial Coin Offerings](https://www.sec.gov/ICO), [selling debt instruments to retail](https://www.reuters.com/article/sec-investors-retail-idUSL2N0XB0NU20150414), against outright [Ponzi schemes](https://www.sec.gov/spotlight/enf-actions-ponzi.shtml), and firms acting as bank-like entities.
|
||||
* District courts have set precedent in many investment fraud cases that have consistently indicated token sales to US persons meet [Howey Test](../concepts/howey-test.md) and Dodd-Frank criterion of securities sales, even if done internationally (i.e from Switzerland). If you sell to US persons it becomes a security under US law.
|
||||
* District courts have set precedent in many investment fraud cases that have consistently indicated that token sales to US persons meet [Howey Test](../concepts/howey-test.md) and Dodd-Frank criteria of securities sales, even if done internationally (i.e. from Switzerland). If you sell to US persons it becomes a security under US law.
|
||||
* **A federal case or executive order that sets precedent nationally has yet not been heard in the courts.**
|
||||
* Thousands of companies and projects' success or failure rests on token sales not being regulated as securities. If they are regulated as securities it is quite possible the entire market implodes.
|
||||
* Sale of securities depends who you are selling to, and what kind of risk and return are presented in the prospectus.
|
||||
* Selling to the general public is highly regulated, with lots of disclosures, auditing of financials by PWC, Deloitte, etc, and transparency in ownership and inside stock sales.
|
||||
* Thousands of companies' and projects' success or failure rests on token sales not being regulated as securities. If they are regulated as securities it is quite possible the entire market implodes.
|
||||
* Sale of securities depends on who you are selling to, and what kind of risk and return are presented in the prospectus.
|
||||
* Selling to the general public is highly regulated, with lots of disclosures, auditing of financials by PWC, Deloitte, etc., and transparency in ownership and inside stock sales.
|
||||
* Selling securities to institutions and high net worth individuals is not as highly regulated. SEC defines “accredited investor” as:
|
||||
* A company you are a director of.
|
||||
* A limited liability company or family office with over $5 million.
|
||||
|
|
@ -60,8 +60,8 @@ Rufus and Stephen end their conversation with an analysis of this position and t
|
|||
* Case example: Theranos raised $724 million from private accredited investors including Henry Kissinger and Betsy Devos. The people in the blast radius of the fraud were all fabulously wealthy and invested capital they already allocated to high-risk investments anyways.
|
||||
* Many policymakers on both sides of the aisle debate whether or not the accreditation laws are too restrictive and shut the public out of high-risk-high-return investments that only wealthy people have access to.
|
||||
* On the right, then individual choice is a paramount, the government shouldn’t dictate risk-taking in markets. Just “evolution” and the natural state of being.
|
||||
* On the left, Pikkety’s analysis that wealth generated from capital grows faster than economic output and patrimonial capitalism leads to distortions of markets and inequality.
|
||||
### Steel Manning the Position that Crypto Investments Should Not Be Brought Within Tformhe Securities Regulation Framework
|
||||
* On the left, Pikkety’s analysis that wealth generated from capital grows faster than economic output and that patrimonial capitalism leads to distortions of markets and inequality.
|
||||
### Steel Manning the Position that Crypto Investments Should Not Be Brought Within The Securities Regulation Framework
|
||||
* It is very easy to create an equity crowdfunding and cap table structure on top of crypto platforms like [ethereum](../concepts/ethereum.md).
|
||||
* Individuals can do it anonymously and raise billions of dollar equivalents in seed capital for ventures that are very early. Don’t need to involve the SEC, government or lawyers at all.
|
||||
* Previously this kind of access was gated to US persons with connections and access to funds, connections and access to capital.
|
||||
|
|
@ -73,17 +73,17 @@ Rufus and Stephen end their conversation with an analysis of this position and t
|
|||
|
||||
### Analysis
|
||||
|
||||
* We tried the complete laissez faire caveat emptor securities model in the 1920s. **It ended very badly**.
|
||||
* The kind of fly-by-night “There Will Be Blood” type of charlatans ran wild selling securities to the public.
|
||||
* We tried the complete laissez-faire *caveat emptor* securities model in the 1920s. **It ended very badly**.
|
||||
* The kind of fly-by-night “There Will Be Blood” type of charlatans ran wild selling securities to the public.
|
||||
* Most US states created Blue Sky Laws to "to stop the sale of stock in fly-by-night concerns, visionary oil wells, distant gold mines and other fraudulent exploitations."
|
||||
* History is repeating itself exactly like it did then. **Shibu Inu and Dogecoin were the blue sky securities of the 1920s**. People were attracted to get rich quick schemes back then just as much as they are today. Human psychology is remarkably invariant across time.
|
||||
* History is repeating itself exactly like it did then. **Shibu Inu and Dogecoin were the blue sky securities of the 1920s**. People were attracted to get-rich-quick schemes back then just as much as they are today. Human psychology is remarkably invariant across time.
|
||||
* As part of the New Deal, the United States signs into law the Securities Act of 1933, Glass-Steagall Act of 1933, Securities Exchange Act of 1934. These largely clean up the fraud. The US framework is the blueprint for many industrialized nations to do the same.
|
||||
* The Great Depression ends and the US is victorious in WWII.
|
||||
* A long peace in financial markets.
|
||||
* Bank runs are entirely eliminated.
|
||||
* US capital markets become extremely large, robust and a new era of unrivalled growth and private innovation.
|
||||
* Centrist Hypothesis: Regulated capital markets, taken on the whole arc of human history, produce relative prosperity.
|
||||
* According to the SEC crypto tokens meet the Howey test and thus are securities contracts.
|
||||
* According to the SEC, crypto tokens meet the Howey Test and thus are securities contracts.
|
||||
* This fits with our general intuition about the intent and purpose retail day traders are buying them. They’re investing in common ventures with the expectation of profit from the sale of tokens the same as equity.
|
||||
* The enterprises possibly now exist as anonymous internet entities and Discord servers now instead of law firms and board rooms.
|
||||
* Some [DAO](../concepts/dao.md) governance tokens quite literally are designed to imitate voting shares as seen in existing equity structures.
|
||||
|
|
@ -100,7 +100,7 @@ Rufus and Stephen end their conversation with an analysis of this position and t
|
|||
* There’s a perverse incentive to simply abscond with seed money rather than actually build anything.
|
||||
* There’s a perverse incentive to build technical Potemkin villages that focus on “token value go up” without building anything. Many crypto companies are here.
|
||||
* Can read the whitepapers of these companies and even people with PhDs in econ and software engineering can’t parse what they’re doing. ***How is the lay public going to do due-diligence on claims of financial perpetual motion machines?***
|
||||
* Is there an legal investment vehicle structure that balances the risks of retail investors with their desire for access to high risk early ventures?
|
||||
* Is there a legal investment vehicle structure that balances the risks of retail investors with their desire for access to high-risk early ventures?
|
||||
* Or should we simply bracket these kinds of securities sales to the already-wealthy? Because the check-size to risk ratio just empirically fits in the “Goldilocks zone” of the practical regulatory/legal/public-interest concerns.
|
||||
* Where should the accredited investor red line be?
|
||||
* Can the courts scale to handle millions of new investment fraud cases every year?
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ title: Bitcoin as an Anti-Authoritarian Force
|
|||
date: 2022-05-02
|
||||
created: 2022-05-02
|
||||
description: "Episode #7 of our ongoing deep dive into web3 and crypto with Rufus Pollock and Stephen Diehl. This week we’re exploring the thesis that Bitcoin (and crypto more generally) is an anti-authoritarian force and can help undermine tyranny."
|
||||
image: /img/anti-auth-thumbnail.png
|
||||
youtube: https://youtu.be/U_-Bdx1mqS8
|
||||
podcast: https://anchor.fm/life-itself/episodes/Bitcoin-as-an-Anti-Authoritarian-Force-e1i25vg
|
||||
featured: false
|
||||
featured: true
|
||||
aliases: notes/bitcoin-as-anti-authoritarian.md
|
||||
---
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ We will begin by steel manning this claim, before moving on to evaluate it. Our
|
|||
* Bitcoin is traceable
|
||||
* Countries with the worst human rights records have very sophisticated surveillance software. Trying to undermine powerful nation states in this way is therefore fraught with risk for individuals.
|
||||
* For most uses, Bitcoin must be cashed out by those in charge of the monetary supply, most often the very regime the transferor is seeking to circumvent.
|
||||
* Forces people to move from the country. While that might be beneficial for the indidivual, will not help solve the overall problem.
|
||||
* Forces people to move from the country. While that might be beneficial for the individual, will not help solve the overall problem.
|
||||
* Crypto further enables and expands the scope of the shadow banking system.
|
||||
* The argument for bitcoin as a hedge against authoritarianism suffers from fallacy of composition and selection bias.
|
||||
* The rule of law must always take precedence.
|
||||
|
|
@ -41,7 +41,7 @@ We will conclude that **Bitcoin and crypto generally is not an liberatory force
|
|||
* Gandhi's non-cooperation movement
|
||||
* Anti Vietnam-war protests
|
||||
* Examples of using crypto as a form of, or to facilitate, disobedience: Edward Snowden and Sci-Hub.
|
||||
* Snowden speaks on the infosec conference circuit and likely receives all his speaker feeds via bitcoin which he converts into Russian rubles.
|
||||
* Snowden speaks on the infosec conference circuit and likely receives all his speaker fees via bitcoin which he converts into Russian rubles.
|
||||
* Sci-Hub pirates every scientific paper from Elvesier, Wiley, and other academic publishers and hosts a PirateBay style mirror site in which researchers can bypass paywalls and download paper.
|
||||
* Server is run by one woman in Russia who takes crypto donations. She is seen as a folk hero giving knowledge to the world and advancing science.
|
||||
* Is a violation of copyright laws, although the jurisdictional boundaries of this are somewhat gray considering Russia doesn’t respect US law.
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ title: Collective Action Problems & Climate Change
|
|||
created: 2022-04-13
|
||||
date: 2022-03-01
|
||||
description: 'In this episode we use the example of KlimaDAO to explore the interaction between climate change and the public goods problem.'
|
||||
image: /img/Collective Action Climate.png
|
||||
image: /img/Collective Action Climate.jpg
|
||||
youtube: https://www.youtube.com/watch?v=SLXtnCL6IxE
|
||||
podcast: https://anchor.fm/life-itself/episodes/Collective-Action-Problems--Climate-Change-e1h4o6e/a-a7gpq18
|
||||
featured: true
|
||||
featured: false
|
||||
aliases: notes/collective-action-problems-and-climate-change.md
|
||||
---
|
||||
|
||||
|
|
@ -35,16 +35,16 @@ According to the founders of KlimaDAO: Value and price are visibly disconnected
|
|||
|
||||
Their goal, according to their own words, is to become a Climate Carbon-Based Reserve Currency... effectively a semi-algorithmic [central bank](../concepts/central-banks.md) with [DAO](../concepts/dao.md) governance structures.
|
||||
|
||||
> “The DAO serves the role of "de-central" bank, governing the monetary policy of this new carbon-backed currency, just as a central bank governs the monetary policy of a fiat currency. Over time, we will build an economy around KLIMA by driving adoption and unlocking growth of the crypto-carbon economy.” - [KlimaDAO](https://docs.klimadao.finance/)
|
||||
> The DAO serves the role of "de-central" bank, governing the monetary policy of this new carbon-backed currency, just as a central bank governs the monetary policy of a fiat currency. Over time, we will build an economy around KLIMA by driving adoption and unlocking growth of the crypto-carbon economy. - [KlimaDAO](https://docs.klimadao.finance/)
|
||||
|
||||
We have drawn up our best understanding of the underlying model of KlimaDAO as an investment vehicle:
|
||||
|
||||
[view it here](https://excalidraw.com/#room=1891d6b61b0fee7269f9,T_TZqXxVGi5TGABRzS0T7w)
|
||||
[View it here](https://excalidraw.com/#room=1891d6b61b0fee7269f9,T_TZqXxVGi5TGABRzS0T7w)
|
||||
|
||||
Boiled down to the essentials, the model is as follows:
|
||||
|
||||
* Someone comes along with some currency, eg a [dollar](../concepts/dollar.md) or a euro, and then converts that into USDC, the [stablecoin](../concepts/stablecoin.md) equivalent of a US dollar.
|
||||
* In exchange for depositing whatever amount of USDC, you get 1 divided by the price of Klima Klima tokens from the Klima treasury.
|
||||
* In exchange for depositing whatever amount of USDC, you get 1 divided by the price of Klima tokens from the Klima treasury.
|
||||
* Then the Klima organization takes the USDC that it has received, converts them back into dollars (or euros or pounds etc) and buys carbon offset certificates. Carbon offset certificates represent carbon sequestration (tree planting), methane capture, and renewable energy initiatives. The idea is then that certificates of carbon offsets come back into the treasury. As we understand it from the white paper, there's a guarantee that every Klima token that's issued is backed by at least one tonne of carbon offsets.
|
||||
* So essentially what is being done is they're collecting money together and buying carbon offsets. It's basically the equivalent of a special purpose vehicle for buying carbon offsets.
|
||||
* You can also take those Klima tokens and sell them back to the Treasury or create [derivative](../concepts/derivative.md) financial products on top of them, which can potentially give you more shares in the entity itself. This is called [staking](../concepts/staking.md) and bonding. This process doesn't change the macro structure of what KlimaDAO is trying to do end to end, it just adds a level for people who are already invested in it to get more invested in it.
|
||||
|
|
@ -66,7 +66,7 @@ In Summary:
|
|||
* Underlying aspiration: To sequestrate carbon, to plant more trees, and to drive up the price of carbon offsets - as we buy more of them, there'll be less supply, that will make it more expensive to pollute...
|
||||
* Klima tokens are a reserve currency that can act as a complementary currency to the world's national currencies that can be used to do targeted quantitative easing to encourage either degrowth or decarbonisation.
|
||||
* The potential to raise a lot of money due to price volatility of Klima tokens
|
||||
* KlimaDAO are engaging with important questions that need addressed
|
||||
* KlimaDAO are engaging with important questions that need to be addressed
|
||||
* How do we find cooperative solutions to climate change? KlimaDAO are trying to address crucial questions surrounding human cooperation and institutional design.
|
||||
|
||||
## *The Ministry of the Future* - Kim Stanley Robinson
|
||||
|
|
@ -95,7 +95,7 @@ In Summary:
|
|||
* Firstly, the insane price volatility means Klima can't function as a [currency](../concepts/currency.md). The price of Klima peaked at around $3600, well above the intrinsic value of one ton of carbon. It has since collapsed, losing around 99% of its value over 1 year - it's now trading at around $20.
|
||||
* The notion that it can be a [reserve currency](../concepts/reserve-currency.md), when nobody's denominated any kind of goods or services, seems to be an irreconcilable contradiction inherent in Klima.
|
||||
* Like many other crypto projects it seems to be a piece of financial engineering that at the bottom sits nothing but some appeal to narrative and the faith that “number go up” by creating artificial scarcity of a digital speculative asset. So not a currency.
|
||||
* If this is supposed to be a currency then it looks like the Weimar republic.
|
||||
* If this is supposed to be a currency then it looks like the Weimar Republic.
|
||||
* Something that makes Klima exciting is this price volatility and the potential to raise a lot of money based on this price volatility.
|
||||
* Why not just raise the money at the beginning and then shut down the thing and just buy carbon offsets and hold on to them?
|
||||
* KlimaDAO are asking an important question: how can we tackle climate change using human cooperation?
|
||||
|
|
@ -111,14 +111,14 @@ In Summary:
|
|||
* Are effectively a form of indulgence where you pay for the right to pollute the environment by paying off the damage via some future project or activity. You're not seeking to solve the problem, but rather to mitigate it. It doesn't seek to fix the root of the problem: that we're burning fossil fuels. Buying tokens that represent tree planting in the future will not solve climate change.
|
||||
* People will and can exploit these mechanisms to maximize their capacity to pollute. Secondary markets for carbon credits are driven by bizarre corruption. Tesla has made a lot of money on secondary markets trading carbon credits
|
||||
* Web3 Common Theme: [Technosolutionism](../concepts/technosolutionism.md) via the [financialization of everything](../claims/is-hyperfinancialization.md)
|
||||
* Let’s turn the abstract idea of fighting climate change into a [ficticious commodity](../concepts/ficticious-commodity.md) to be traded on the market.
|
||||
* Let’s turn the abstract idea of fighting climate change into a [fictitious commodity](../concepts/ficticious-commodity.md) to be traded on the market.
|
||||
* This is a distraction from actual solutions. Of which there is no financial silver bullet.
|
||||
* Just adding an additional layer of complexity to fighting climate change. Such a project absorbs time, money, and runs on [proof of work](../concepts/proof-of-work.md) which requires a large amount of energy. All these resources could be better allocated.
|
||||
* Anything we can do we can afford. The money exists, the problem is doing supranational coordination of solutions and allocating resources to those projects.
|
||||
* Mark Carney proposed to COP26 to allocate $130 trillion to help address solutions to climate change. **The money to fight climate change absolutely exists, but sufficient funds is not the issue.**
|
||||
* “Anything we can actually do we can afford.” — John Maynard Keynes
|
||||
* Unfettered capitalism is a process of commoditizing everything, privatizing the commons and destroying that which has no value and converting everything into private profit.
|
||||
* [Crypto asset](../concepts/cryptoasset.md) are an extension of that program to an even more extreme level.
|
||||
* [Crypto assets](../concepts/cryptoasset.md) are an extension of that program to an even more extreme level.
|
||||
* **Our system will continue exploiting fossil fuels so long as the private costs to capitalists are much lower than the societal cost.**
|
||||
* Vague appeals to new mechanism designs and appeals to absolute free [markets](../concepts/market.md) about “aligning incentives” can’t conceive of solutions outside their own capitalist logics.
|
||||
* Overall:
|
||||
|
|
@ -135,7 +135,7 @@ In Summary:
|
|||
* "Let others do the costly things that need to be done to ensure the upkeep of the commons."
|
||||
* If enough people stop contributing, the good disappears.
|
||||
* Rufus’s book [‘The Open Revolution’](https://openrevolution.net/) is an extensive exploration of the internet economy, public goods, and the free-rider problem.
|
||||
* A lot of attention is being payed to this problem by people within the [web3](../concepts/web3.md) space through things like quadratic voting, DAOs, however these don't really seem to be dealing with the issue of what to do if people aren't contributing.
|
||||
* A lot of attention is being paid to this problem by people within the [web3](../concepts/web3.md) space through things like quadratic voting, DAOs, however these don't really seem to be dealing with the issue of what to do if people aren't contributing.
|
||||
* The mechanisms we currently have in our society to address this problem have been developed over thousands of years, eg if we don't pay our taxes we go to jail, and generally the way it is achieved is that someone or some body enforces this contribution, eg the state.
|
||||
* Rufus's book goes into detail into mechanisms for funding software, goods, information, movies, music. We also have examples of funding informational public goods at a large scale, and efforts around the environment. Governments spend billions, trillions in combination, a year on international research and development. All of modern medical science, all of modern mathematics was publicly funded in some way by governments or through other mechanisms. So we have got examples of solutions to the collective action problem - most done via states. It of course comes with some oppressive characteristics, eg the state can compel you to pay taxes, but we haven't really found a mechanism better than that
|
||||
* There are often visions of [libertarian](../concepts/libertarianism.md) solutions to the collective action problem, completely voluntary solutions. And such solutions would be great but they don't seem to exist: we charge people to use swimming pools and we build walls around them to limit access to those who have paid or those who have access by virtue of having contributed to the building of the swimming pool for example.
|
||||
|
|
@ -146,7 +146,7 @@ In Summary:
|
|||
* Collective action problems are not impossible to solve, but they are not by any means straightforward.
|
||||
* **The urgency of the time scale of the climate crisis requires us to engage with existing institutions. There is no other choice, we're out of time**
|
||||
* More innovative solutions to addressing the free rider problem are not mutually incompatible with compelling our institutions to behave differently, and seeking to change them from within.
|
||||
* We need to affect change from within existing institutions instead of burning everything down and replacing it with [DAOs](../concepts/dao.md).
|
||||
* We need to effect change from within existing institutions instead of burning everything down and replacing it with [DAOs](../concepts/dao.md).
|
||||
* Solving climate change is going to involve some aspect of the state, it's going to involve claiming public money and putting that money towards the sustenance of public goods.
|
||||
* **We need to deconstruct the $100 trillion [shadow banking](../concepts/shadow-bank.md) system** that’s being used by plutocrats to evade taxes and strangle democracy. We need to on-shore that capital and redistribute it towards public interests: public works projects, R&D (fusion, solar cells, etc), green infrastructure development, relocation and international development.
|
||||
* Crypto is just enabling more shadow banking as scholars like Ann Pettifor and Hillary Allen have noted.
|
||||
|
|
|
|||
|
|
@ -31,6 +31,14 @@ aliases: notes/deconstructing-decentralization.md
|
|||
|
||||
## I. Mainstream Discourse Around ‘Decentralized’ Permissionless Blockchains
|
||||
|
||||
---
|
||||
|
||||
_**What does 'decentralized' mean?**_
|
||||
|
||||
_There are two different common usages for the term 'decentralized' within crypto: (1) To describe the peer‐to‐peer network of computers that comprise a permissionless blockchain; (2) To describe how power or agency works within permissionless blockchain systems. Coalescing of these meanings and the complexity of blockchain technology results in misunderstandings of how 'decentralized' blockchain technology actually is._
|
||||
|
||||
---
|
||||
|
||||
* The terms ‘decentralized’ and ‘decentralization’ are ubiquitous in the discourse around blockchain technologies and cryptoassets.
|
||||
* Academic work, discussions within the crypto space, businesses, governments, international organizations, legislation.
|
||||
* It is rare to see clear explanations of ‘decentralized’ or ‘decentralization’ when the terms are used.
|
||||
|
|
@ -39,7 +47,7 @@ aliases: notes/deconstructing-decentralization.md
|
|||
* **To describe how power or agency works within permissionless blockchain systems.** If there is not a single, central party keeping the record, that means that power is not held centrally, instead power is diffused throughout the blockchain.
|
||||
* Both political (no one has any power, especially not the state) and physical (we have a lot of computers running, so you can’t easily knock the entire system out) meanings have melded in mainstream usage of the terms.
|
||||
* Director Hinman’s June 2018 speech reflected these melded meanings of ‘decentralized’. His understanding of the ‘decentralized’ nature of bitcoin and ether led to his conclusion that the two are not securities.
|
||||
* Walch argues that the SEC’s standard for “sufficiently decentralized” is extremely low, and argues that a deeper analysis of the concept is needed.
|
||||
* Walch argues that the SEC’s standard for “sufficiently decentralized” is extremely low, and argues that a deeper analysis of the concept is needed.
|
||||
|
||||
## II. The Complex Nature of “Decentralization”
|
||||
|
||||
|
|
@ -70,6 +78,7 @@ aliases: notes/deconstructing-decentralization.md
|
|||
* Calls to Action
|
||||
* The status quo usage of the terms “decentralized” and “decentralization” is deemed untenable by many commentators, and there are a variety of calls to action in the literature: deeper study of the term; frameworks for better understanding or measuring the decentralization of crypto systems; doing away with the terms altogether in discussing crypto systems.
|
||||
|
||||
|
||||
## III. Examples of Concentrations of Power in Permissionless Blockchain Systems
|
||||
|
||||
* Emergency rescues of Bitcoin by small groups of developers in 2018 when a critical software bug was discovered and March 2013 when the blockchain suffered an unintended [hard fork](https://web3.lifeitself.us/concepts/hard-fork).
|
||||
|
|
@ -84,6 +93,14 @@ aliases: notes/deconstructing-decentralization.md
|
|||
|
||||
## IV. Using ‘Decentralized’ to Make Legal Decisions about Blockchains
|
||||
|
||||
---
|
||||
|
||||
_**Is crypto 'decentralized'?**_
|
||||
|
||||
_There are sites of concentrated power in permissionless blockchain systems: core developers and mining pools. Usage of the term differs making its meaning uncertain. Decentralization is **dynamic**. 'Decentralization' is therefore ill-suited to be used as a legal standard._
|
||||
|
||||
---
|
||||
|
||||
* The implications for law of making decisions about permissionless blockchains based on their level of decentralization are significant.
|
||||
* Decentralization’s **uncertain meaning makes it ill‐suited for a legal standard.**
|
||||
* As discussed in Part II, no one is sure what it means for a blockchain system to be decentralized.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,100 @@
|
|||
---
|
||||
title: "Crypto: can these financial perpetual motion machines work?"
|
||||
date: 2022-05-20
|
||||
created: 2022-05-20
|
||||
featured: false
|
||||
aliases: notes/financial-perpetual-motion-machine.md
|
||||
---
|
||||
|
||||
*Does crypto technology “magic” allow it to transcend the principles of economics?*
|
||||
|
||||
The current crypto-economy is booming. A huge amount of money is circulating, and on the surface it appears many are gaining huge returns on their crypto investments. As one now infamous piece of crypto popular culture puts it, the line just keeps going up. Much of the rhetoric in the crypto-sphere gives a sense of a perpetual motion machine, generating self-fuelled growth which will last forever. The key question is, can it?
|
||||
|
||||
This analysis will unpack the idea of crypto as a financial perpetual motion machine. Drawing on the downfall of TerraUSD as a case study it examines the dynamics and sustainability of the current crypto-economy, noting some worrying similarities to financial bubbles including the one which triggered the 2008 financial crisis. Finally, we consider the best case scenario for the sustainability of a crypto-asset – widespread acceptance and diversification before the speculation bubble bursts – before laying out our prognosis as to whether the crypto-economy can continue to operate as a financial perpetual motion machine. We conclude that this is unlikely at best.
|
||||
|
||||
# Contents
|
||||
|
||||
1. [What does it mean to call crypto a financial perpetual motion machine?](#para1)
|
||||
2. [TerraUSD: a case study in the impossibility of financial perpetual motion](#para2)
|
||||
3. [Similarities between the crypto-economy and the pre-2008 financial bubble](#para3)
|
||||
4. [The best case scenario for crypto-assets: (1) ponzi, (2) acceptance, (3) diversification, (4) permanence](#para4)
|
||||
5. [Conclusion: crypto isn’t a magic bullet for financial perpetual motion](#para5)
|
||||
|
||||
# 1. What does it mean to call crypto a financial perpetual motion machine?<a name="para1"></a>
|
||||
|
||||
A perpetual motion machine is a device that, once set in motion, continues to be in motion, with no requirement for any external source of energy to maintain it. The appeal of a perpetual motion machine is the reward of essentially limitless free energy (minus the cost of the initial input of energy to get it going). The first and second laws of thermodynamics have proven the existence of such machines to be impossible.
|
||||
|
||||
By analogy, we can think of a financial perpetual motion machine as something generating continuing economic returns, and perhaps even growth in returns, forever, “for free”. The term “free” here is not used as strictly as in the technical definition above; in the case of crypto, money is spent on inputs such as developer labor, and the energy used for activities such as mining. The important characteristic is that the value of any given asset increases without any economically productive activity taking place. On the understanding of the crypto-economy as a financial perpetual motion machine, my crypto-assets will keep growing in value perpetually without my doing anything (i.e. expending any inputs myself), and without this growth being attached to economically productive activity – understood as the production of goods and services which generate utility for people – as is the case with traditional investments such as stocks.
|
||||
|
||||
While the analogy is not perfect, the impossibility of true perpetual motion should give serious pause for thought as to the sustainability of this consistent and unproductive value growth. This skepticism can only be strengthened by observing the pattern played out time and again throughout economic history: financial perpetual motion invariably transpires to be little more than a bubble, grinding dramatically to a halt as spirits shift and the bubble bursts. Examining the dynamics of the crypto-economy in more detail, there are alarming similarities with both the pre-2008 financial system and bubbles further into the past. We will turn to this analysis in the following sections, beginning with an illustrative case study of the now defunct stablecoin Terra and its staggeringly rapid crash.
|
||||
|
||||
# 2. TerraUSD: a case study in the impossibility of financial perpetual motion<a name="para2"></a>
|
||||
|
||||
To explain why the cryptosphere is not a financial perpetual motion machine we are going to examine the mechanisms that enable the crypto market to churn out more value for investors than was deposited. We are going to use the stablecoin TerraUSD (UST) to demonstrate how these mechanisms operate and to explain why the system is unsustainable. UST is fitting to use as an example to demonstrate how all crypto-assets operate as they are fundamentally underpinned by the same mechanisms. We will explain how the crash suffered by UST is demonstrative of the systemic risk which runs throughout both DeFi and crypto-asset investments more broadly.
|
||||
|
||||
UST is an algorithmic stable coin which is pegged to the US dollar. Whereas fiat- or crypto-collateralized stablecoins maintain their peg by having a reserve of a fiat or crypto currency as collateral, algorithmic stablecoins such as UST maintain their peg through a system of algorithmic arbitrage. UST has a sister token, Luna. The system is designed so that each UST token is redeemable for $1 worth of Luna. Therefore, when UST is trading below $1, traders are incentivized to buy one UST and exchange it for $1 worth of Luna. As UST is burnt to mint Luna, the supply of UST is reduced and its price is pushed up. When UST is trading above $1, token holders are incentivized to exchange their Luna for UST. This increases the supply of UST, thereby reducing its price and keeping the value of UST stable at $1.
|
||||
|
||||
As an algorithmic stablecoin, untied from the volatility of other cryptocurrencies like bitcoin or ether, UST was presented as a safe and steady place to hold one’s money while still remaining within the crypto ecosystem. An additional motivation to potential investors of UST was the promise of staggering yields by holding their UST in a decentralized finance (DeFi) savings protocol called Anchor. The protocol, running on the Terra blockchain, promises 20% interest to those who deposit UST.
|
||||
|
||||
While Terra and Luna is often described as a financial engineering experiment, for a long time it looked as though the experiment was working. According to Coingecko, at its peak in early April, the market value of all Luna exceeded $41 billion placing it in the top 10 cryptocurrencies. <sup>1</sup>
|
||||
|
||||
On May 7 2022, UST deviated from its peg, seemingly as a result of massive withdrawals from Anchor. As billions of UST were removed from Anchor and dumped on the market, the price of Terra slipped, motivating more and more people to pull their money out of Anchor and get rid of their UST. While Luna tanked, the algorithm carried on doing what it was programmed to do: the system created more and more tokens to meet the demand of UST sellers who all remained entitled to a dollar’s worth of Luna. This caused the price to plunge even more, diluting the market with Luna. By May 13, one Luna was valued at $0.00001834 and the total supply of the coin was over 6.5 trillion. At time of writing, UST is currently sitting at 10 cents.<sup>2</sup> As described by Kevin Zhou, crypto hedge fund Galois Capital founder, Luna had suffered from “hyperinflation of hyperinflation”.<sup>3</sup>
|
||||
|
||||
Terra provides a stark case study of the dynamics of the crypto-economy not just because of its dramatic demise, but because the mechanism by which it sustained its growth and subsequently crashed pervades the whole of the crypto-sphere. The Terra system depended entirely on Luna, a manufactured token with no intrinsic or [use value](https://web3.lifeitself.us/concepts/use-value). Its value was a product of [artificial demand](https://web3.lifeitself.us/concepts/artificial-demand) dynamics generated by overblown [narratives](https://web3.lifeitself.us/claims/is-narrative-economics.md) and speculation. Almost all crypto projects share this characteristic: they are fuelled by demand for newly created tokens devoid of meaningful value beyond allowing one to participate in the project and make financial gains from speculation. The growth stemming from sheer belief that these tokens will continue to increase in value bears all the hallmarks of [greater fool theory](https://web3.lifeitself.us/concepts/greater-fool-theory.md) and of an economic bubble, as we outline below.
|
||||
|
||||
Even more worrying is the role of the Anchor platform in the case of Terra, and the prevalence of yield farming and the spate of complex financial derivatives which has sprung up around crypto-assets. As displayed by the impacts on Terra of large withdrawals from Anchor, this layering of ever more complex financial instruments on top of tokens whose value depends on belief alone builds an extremely high level of systemic risk into the system. Not only does this make it more likely that the [bubble](https://web3.lifeitself.us/concepts/bubble) will pop, but that the impacts will be all the more dire when it does. As outlined in the next section, this bears a striking resemblance to the system which underpinned the 2008 financial crisis.
|
||||
|
||||
# 3. Similarities between the crypto-economy and the pre-2008 financial bubble<a name="para3"></a>
|
||||
|
||||
As noted above, the case of Terra is indicative of the bubble dynamics that pervade the entire crypto ecosystem. When we compare these more directly to economic bubbles throughout history, it is hard to avoid drawing parallels which bode ill for the prospect of crypto’s perpetual growth.
|
||||
|
||||
Economic bubbles are a market phenomenon that sees irrational pricing of an asset caused by herd mentality; people hear stories of others who bought in early and made big profits, more and more people jump in, pushing the value of the asset up and up, exceeding the intrinsic value of the asset (if the asset even has any value), until one day the mania subsides and the value of the asset plummets.
|
||||
|
||||
Where such assets have complex financial instruments built on top, there is risk of far reaching systemic damage. The 2008 subprime crisis provides a demonstration of what happens when a range of complex financial products are completely dependent on the cash flows of a fundamentally unstable asset. Just as a fall in house prices caused mass mortgage defaults by borrowers in precarious financial positions, and in doing so brought down the entire financial system propped up by their repackaged debt, the cautionary tale of Terra shows the very same vulnerability throughout the system of decentralized finance (DeFi), which hinges on speculation-driven token value.
|
||||
|
||||
|
||||
In her 2022 paper ‘DeFi: Shadow Banking 2.0?’ Prof. Hilary Allen warns that the current DeFi system risks emulating the “shadow banking” services (functional equivalents for banking products which operate outside the regulated banking sphere) which contributed to the 2008 banking crisis:
|
||||
|
||||
“*if DeFi is permitted to develop without any regulatory intervention, it will magnify the tendencies towards heightened leverage, rigidity, and runs that characterized Shadow Banking 1.0.*”<sup>4</sup>
|
||||
|
||||
Commentators have raised concerns about stablecoins in particular, describing them as analogous to the money market funds (MMF) at the heart of the 2008 crisis in their potential to cause runs. Prof. Allen explains:
|
||||
|
||||
“*If something were to shake confidence in stablecoins’ acceptance in the DeFi ecosystem (this ‘something’ could range from a hack, to a problem with the reserve of assets backing a stablecoin, to a problem with the smart contracts managing the value of a decentralized stablecoin), we could then expect holders to exchange their stablecoins for fiat currency and exchanges to seek redemption, forcing stablecoin issuers to start liquidating the reserve of assets backing the stablecoin, depressing the market value of those assets, and cutting off credit for the corporations in which MMFs usually invest through the commercial paper market.*”<sup>5</sup>
|
||||
|
||||
This fragility and extreme vulnerability to the [animal spirits](https://www.investopedia.com/terms/a/animal-spirits.asp#:~:text=%22Animal%20spirits%22%20is%20a%20term,of%20economic%20stress%20or%20uncertainty.) of investors pervades the entire crypto-economy. The core mechanism – of minting tokens with no use value and who’s market price is artificially driven by speculative hype – underpins almost the whole system (with the small exception of tokens who are in some way backed by real world assets, whose value growth beyond the price of these assets still remains fuelled by speculaiton). What might appear as a recipe for perpetual growth and financial gain in fact appears highly likely to have created a speculation fuelled bubble, with the complex token derivatives which characterize DeFi akin to castles built on foundations of sand. If this analysis is correct then not only is crypto far from a financial perpetual motion machine, but an economic time bomb.
|
||||
|
||||
# 4. The best case scenario for crypto-assets: (1) ponzi, (2) acceptance, (3) diversification, (4) permanence<a name="para4"></a>
|
||||
|
||||
The above paints a bleak outlook for the crypto-economy. So, what’s the best case scenario? Is there any way that the machine can keep running and generating wealth?
|
||||
|
||||
The strongest case has been outlined in Bloomberg, although in a twist of irony it focuses on Terra, just days before its crash. While the piece focuses on [‘The Stability of Algorithmic Stablecoins’](https://www.bloomberg.com/opinion/articles/2022-04-19/the-stability-of-algorithmic-stablecoins) it can perhaps be extended to other crypto projects also.
|
||||
|
||||
As the article notes, if you can keep your token based Ponzi scheme going for long enough then you may be able to reach a point of widespread acceptance. Your stablecoin, despite having no intrinsic value, is just accepted as being worth, say $1. It is this common recognition embedded in the collective psyche of the system’s participants which maintains this value rather than a reliance on an algorithmic mechanism. This is to some extent akin to the collective belief which upholds the value of fiat money, although crucially without the power of a state to enforce it should this belief waver.
|
||||
|
||||
The next step would be to diversify the reserves backing the peg of your stablecoin, into other more embedded cryptocurrencies more embedded in the system such as bitcoin and perhaps also non-blockchain based assets such as gold and dollars. This diversification means that the project is no longer contingent just on investor belief in your own manufactured token’s value. If that spell breaks, there are assets deriving their market value from elsewhere which can be spent to return the value of your stablecoin to $1. More and more reserve assets are purchased, until there are sufficient ‘real world’ tools ready to back up this zero value, made up asset. This ‘best case scenario’ can be summarized, then, as: “(1) Ponzi, (2) acceptance, (3) diversification, (4) permanence.”<sup>6</sup>
|
||||
|
||||
In theory this process could be adapted to function for non-stablecoin projects also. The key is the transition from dependence on [speculative] belief in the value of the project’s manufactured token to other means of securing its value: economic norms and then external assets.
|
||||
|
||||
Even under this best case scenario, however, the prospects for the perpetual growth of the crypto-economy as a whole remain slim. First, while this process could at least in theory work for specific crypto-assets, it cannot work for all of them. Not every crypto token can become so embedded that its value is simply accepted as a given, or become so big that it can fund the purchase of large amounts of external reserves.
|
||||
|
||||
Second, while other crypto-assets still make up a part of a token’s reserve assets, its value will still depend largely on the performance of the crypto-market as a whole. If, as appears plausible based on the above analysis, the great majority of this market is subject to the same speculation fuelled bubble dynamics, then vulnerabilities persist both at the level of individual projects and the broader market. This could be seen in the case of Terra, where a large proportion of initial Anchor withdrawals seemed to occur in response to general market downturns.
|
||||
|
||||
Third, pivoting to backing by real world assets, arguably the most likely way to ensure a crypto token can retain its value, will fundamentally undermine the dynamics giving rise to a perception of financial perpetual motion in the first place. As soon as real world assets enter the equation, so do the constraints of real world economics. Growth will become a function of the real world assets underpinning tokens, and this growth is far less likely to be propelled to dizzying rates by speculation.
|
||||
|
||||
# 5. Conclusion: crypto isn’t a magic bullet for financial perpetual motion<a name="para5"></a>
|
||||
|
||||
The above examples provide strong reason to believe that the crypto-economy cannot keep growing like this forever. The financial perpetual motion machine must at some point come to a halt, as the speculation-driven artificial demand for fundamentally valueless crypto-assets peters out. History is littered with examples of economic bubbles, all of which eventually burst. As the 2008 crash demonstrates, whole-system collapse is made both more likely and more disastrous when derivatives and other complex financial products spring up around bubble driven asset prices. This same systemic risk pervades the ‘DeFi’ system, with the case of Terra being a warning of dynamics which have the potential to cause crashes at far larger scales.
|
||||
|
||||
The best case scenario for individual crypto-assets – normalization and backup asset diversification – is unlikely and does little to secure the continuing growth of the entire crypto-economy. This system is occupying some of the world’s smartest minds, contributing massive carbon emissions to our atmosphere, and had, at its peak, over $3 trillion dollars invested into it. It is time we stepped back from the illusion of financial perpetual motion, before the inevitable crypto-asset crashes begin shaking the wider global economy.
|
||||
|
||||
|
||||
***
|
||||
|
||||
# Notes and references
|
||||
|
||||
1. CoinGecko. ‘Terra Price, Luna Chart, and Market Cap’. Accessed 17 May 2022. https://www.coingecko.com/en/coins/terra-Luna.
|
||||
2. CoinMarketCap. ‘TerraUSD Price Today, UST to USD Live, Marketcap and Chart’. Accessed 18 May 2022. https://coinmarketcap.com/currencies/terrausd/.
|
||||
3. Weisenthal, Joe, and Tracy Alloway. ‘Meet the Hedge-Fund Manager Who Warned of Terra’s $60 Billion Implosion’. Bloomberg.Com, 15 May 2022. https://www.bloomberg.com/news/articles/2022-05-15/Luna-crash-this-crypto-insider-warned-of-terra-ust-s-collapse.
|
||||
4. Allen, Hilary J. ‘DeFi: Shadow Banking 2.0?’ SSRN Electronic Journal, 2022. https://doi.org/10.2139/ssrn.4038788.
|
||||
5. Ibid.
|
||||
6. Levine, Matt. ‘The Stability of Algorithmic Stablecoins’. Bloomberg.Com, 19 April 2022. https://www.bloomberg.com/opinion/articles/2022-04-19/the-stability-of-algorithmic-stablecoins.
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
title: Fintech Incrementalism and Responsible Innovation
|
||||
created: 2022-04-04
|
||||
date: 2022-04-04
|
||||
description: "In episode #5 of our ongoing deep dive into web3 and crypto, Rufus Pollock and Stephen Diehl explore the claim that blockchain can be a vehicle for increase in financialization through the development of more complex, blockchain based financial products."
|
||||
description: "In episode #5 of our ongoing deep dive into web3 and crypto, Rufus Pollock and Stephen Diehl explore the claim that blockchain can be a vehicle for increase in financialization through the development of more complex, blockchain-based financial products."
|
||||
youtube: https://www.youtube.com/watch?v=7rLQoTtwRSU&t=4s
|
||||
podcast: https://anchor.fm/life-itself/episodes/Fintech-Incrementalism-and-Responsible-Innovation-e1gn02u
|
||||
featured: false
|
||||
|
|
@ -21,9 +21,9 @@ aliases: notes/fintech-incrementalism-and-responsible-innovation.md
|
|||
|
||||
In this episode, Rufus and Stephen explore an argument for blockchain and crypto that they term “fintech incrementalism”.
|
||||
|
||||
This position assumes the capitalist notion that greater [financialization](../claims/is-hyperfinancialization.md) is an engine for progress, and claims that blockchain can be a vehicle for this increase in financialization through the development of more complex, [blockchain](../concepts/blockchain.md) based [financial products](../concepts/financial-asset.md) – and the added market efficiency which will result. This ranges from better payment rails i.e. a better visa, stripe etc, to more efficient clearings systems, to full-scale innovation in financial engineering.
|
||||
This position assumes the capitalist notion that greater [financialization](../claims/is-hyperfinancialization.md) is an engine for progress, and claims that blockchain can be a vehicle for this increase in financialization through the development of more complex, [blockchain](../concepts/blockchain.md)-based [financial products](../concepts/financial-asset.md) – and the added market efficiency which will result. This ranges from better payment rails i.e. a better Visa, Stripe etc, to more efficient clearing systems, to full-scale innovation in financial engineering.
|
||||
|
||||
The political imaginaries of this position are more efficient markets and more bespoke and customized financial products to buy. [Capitalism](../concepts/capitalism.md) is net positive in the world, and a fairer, more efficient and transparent economy benefits everyone.
|
||||
The political imaginaries of this position are: more efficient markets and more bespoke and customized financial products to buy. [Capitalism](../concepts/capitalism.md) is net positive in the world, and a fairer, more efficient and transparent economy benefits everyone.
|
||||
|
||||
Rufus and Stephen 'steel man' the “fintech incrementalism” position, identifying 7 key claims, before then conducting an analysis of the position.
|
||||
|
||||
|
|
@ -43,7 +43,7 @@ Rufus and Stephen 'steel man' the “fintech incrementalism” position, identif
|
|||
* Fintech innovation and quantitative finance has a good track record of progress in the last few decades.
|
||||
* New York Fed’s open source models of the US economy
|
||||
* GitHub - [FRBNY-DSGE/DSGE.jl: Solve and estimate Dynamic Stochastic General Equilibrium models (including the New York Fed DSGE)](https://github.com/FRBNY-DSGE/DSGE.jl)
|
||||
* Low cost index funds
|
||||
* Low-cost index funds
|
||||
* [Mechanism design](https://www.investopedia.com/terms/m/mechanism-design-theory.asp#:~:text=Mechanism%20design%20is%20a%20branch,self%2Dinterest%20and%20incomplete%20information.), [auction theory](https://en.wikipedia.org/wiki/Auction_theory)
|
||||
* [Myerson–Satterthwaite theorem](https://en.wikipedia.org/wiki/Myerson%E2%80%93Satterthwaite_theorem)
|
||||
* [Black-Scholes-Merton model](https://www.investopedia.com/terms/b/blackscholes.asp)
|
||||
|
|
@ -60,9 +60,9 @@ Rufus and Stephen 'steel man' the “fintech incrementalism” position, identif
|
|||
|
||||
* **Claim 1:** Everything is moving towards real-time and international finance. Crypto is the evolution of this trend. We want to move the entire economy into a hyperfinanicalized 24/7 real-time always-trading market with even more complexity and lower friction than what we have presently.
|
||||
* Building a [T+0 settlement](https://www.investopedia.com/ask/answers/what-do-t1-t2-and-t3-mean/) system for equities is a great idea. Real-time settlements would be a boon for the liquidity of US capital markets.
|
||||
* Real time payments are a resounding success in Europe and Asia.
|
||||
* Real-time payments are a resounding success in Europe and Asia.
|
||||
* We’ve solved volatility problems of asset classes in the past. We’ll do it again. It just requires more math and more sophisticated models.
|
||||
* **Claim 2:** Banks are outdated and slow to innovate: core banking software is mostly from the 1980s; state of bitrot in financial infrastructure is vast; American infrastructure is massively outdated. Crypto is the means to fix all this.
|
||||
* **Claim 2:** Banks are outdated and slow to innovate: core banking software is mostly from the 1980s; state of bit rot in financial infrastructure is vast; American infrastructure is massively outdated. Crypto is the means to fix all this.
|
||||
* **Subclaim 2a)** Private money and [Central Bank Digital Currencies](../concepts/cbdc.md) will compete for market share and will coexist. This will be the future of finance.
|
||||
* The Federal Reserve, and the European Central Bank will keep all of their balance sheets and swap lines on a global distributed ledger providing greater market transparency and efficiency of sovereign flows.
|
||||
* Retail accounts will all be held directly at the [central bank](../concepts/central-banks.md)
|
||||
|
|
@ -85,7 +85,7 @@ Rufus and Stephen 'steel man' the “fintech incrementalism” position, identif
|
|||
* If we can create completely synthetic hedges for a wide range of real-world phenomenal factors then it doesn’t really matter how we do it.
|
||||
* **Claim 6:** There are a few **[asset classes](asset) that are almost exclusively narrative-driven** rather than mathematics or cashflow-driven.
|
||||
* “If gold appears to be a hedge for anything, it’s the fear of inflation, or the fear of financial instability as proxied by changes in government deficits.”
|
||||
* **The demand curve for [gold](../concepts/gold.md) is, at least partially,generated by emotion and politics.** This is squishy but quantifiable.
|
||||
* **The demand curve for [gold](../concepts/gold.md) is, at least partially, generated by emotion and politics.** This is squishy but quantifiable.
|
||||
* With crypto tokens we can create new synthetic assets whose demand curves are artificially generated by different [psychological forces](../concepts/narrative-economics.md)
|
||||
* Gold is a proxy asset for investing in the “[libertarian](../concepts/libertarianism.md) project”. With crypto can we create a proxy asset for investing in the “[anarchist](../concepts/anarchocapitalism.md) project” or the “[Marxism](../concepts/marxism.md) project”?
|
||||
* **Claim 7:** “The next step in the evolutionary tree of homo economicus, in which all aspects of our humanity sublimates into the free market.”
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: "KlimaDAO & Life Itself in Conversation: Part One"
|
||||
date: 2022-05-20
|
||||
created: 2022-05-18
|
||||
description: "In a previous episode, Collective Action Problems & Climate Change, Steven Diehl and Rufus Pollock discussed the utility of web3 in tackling collective action problems and climate change, using KlimaDAO as a case study. In a follow up to this conversation, Rufus and Theo from Life Itself Labs sat down with Marcus Aurelius and 0xy moron, two core members of KlimaDAO, to discuss the KlimaDAO model, its inspirations and its aims."
|
||||
image: /img/klima-one-thumbnail.png
|
||||
youtube: https://youtu.be/fHHxQAQW0co
|
||||
featured: true
|
||||
aliases: notes/in-conversation-with-klimadao-part-one.md
|
||||
---
|
||||
|
||||
***
|
||||
|
||||
|
||||
|
|
@ -23,9 +23,9 @@ The trader or market fundamentalist view likely represents a majority of interes
|
|||
|
||||
Rufus and Stephen 'steel man' the market fundamentalism position, exploring four key claims:
|
||||
|
||||
1. [Unregulated](../concepts/regulation.md) markets allow companies to so what they're supposed to do: maximize returns to shareholders.
|
||||
2. [Markets](../concepts/market.md) are likeable to evolution; they have no moral quality.
|
||||
3. Crypto-trading is a [public good](../concepts/public-goods-problem.md)
|
||||
1. [Unregulated](../concepts/regulation.md) markets allow companies to do what they're supposed to do: maximize returns to shareholders.
|
||||
2. [Markets](../concepts/market.md) are comparable to evolution; they have no moral quality.
|
||||
3. Crypto trading is a [public good](../concepts/public-goods-problem.md)
|
||||
4. There is no [non-public](../concepts/asymmetric-information.md) disclosure about the risks of these assets, everyone is going in with their eyes open that this is the wild west.
|
||||
|
||||
Rufus and Stephen end their conversation with an analysis of the market fundamentalist position and the associated claims.
|
||||
|
|
@ -41,11 +41,11 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen
|
|||
* Exchange traded [pyramid scheme](../concepts/pyramid-scheme.md)?
|
||||
* [Derivative](../concepts/derivative.md) contract with no underlying?
|
||||
* [Libertarian](../concepts/libertarianism.md) performance [art](../concepts/art.md) split into 21 million pieces https://en.wikipedia.org/wiki/Monte_Carlo_Bonds
|
||||
* If we value it as a "block box" [financial asset](../concepts/financial-asset.md) (ala Nassim Taleb) we find it’s [present value](../concepts/present-value.md) can only be zero. https://www.fooledbyrandomness.com/BTC-QF.pdf
|
||||
* If we value it as a "block box" [financial asset](../concepts/financial-asset.md) (ala Nassim Taleb) we find its [present value](../concepts/present-value.md) can only be zero. https://www.fooledbyrandomness.com/BTC-QF.pdf
|
||||
|
||||
## Who is Trading Crypto?
|
||||
|
||||
* The day-trader in the pub, WallStreetBets demographic.
|
||||
* The day trader in the pub, WallStreetBets demographic.
|
||||
* [Barrett, Claer. ‘Why Young Investors Bet the Farm on Cryptocurrencies’. Financial Times, 2021.](https:www.ft.com/content/162839aa-0437-478b-a4d4-4a8d7ab71458):
|
||||
> "I’ll either be rich, or wrong." This is how Sam, a 29-year-old cryptocurrency enthusiast I interviewed on this week’s Money Clinic podcast, summarized his strategy for investing the last £2,000 of his savings in a hugely volatile and unregulated asset class. Claiming that he's not a natural risk taker, Sam has never set foot inside a casino or put money on a horse. "To me, that seems stupid, like you’re throwing money away." He has never considered investing in stocks and shares. Being self-employed, he's never paid into a pension or thought about setting up a self-invested personal pension (Sipp). "No one’s ever given me that kind of information," he says. So why is he prepared to risk his spare cash betting on crypto? Sam found out his younger brother had turned a £3,000 investment into £30,000 within four years — money he now intends to use as a property deposit. "I was very surprised and it made me feel a bit stupid . . . why aren’t I doing this?"*
|
||||
* cf low bets in general: tiny but possible asymmetric returns. A regressive tax or distributed lottery.
|
||||
|
|
@ -60,8 +60,8 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen
|
|||
|
||||
## Why is the Crypto-Can-Make-Me-Money Position So Interesting to Examine?
|
||||
|
||||
* Likely represents a majority of interest and activity in crypto (and even [DAOs](../concepts/dao.md)) from the day-trader in the pub up to the wall street trader
|
||||
* Generally not brought up explicitly as much in the crypto / [web3](../concepts/web3.md) discussion (for obvious reasons: it is not as substantive or attractive position to espouse publicly)
|
||||
* Likely represents a majority of interest and activity in crypto (and even [DAOs](../concepts/dao.md)) from the day trader in the pub up to the Wall Street trader
|
||||
* Generally not brought up explicitly as much in the crypto / [web3](../concepts/web3.md) discussion (for obvious reasons: it is not a substantive or attractive position to espouse publicly)
|
||||
* The political imaginaries aren’t there - "I just want to make money", "Greed is good"
|
||||
* Consequences and externalities be damned
|
||||
* Hyper-[capitalist](../concepts/capitalism.md)
|
||||
|
|
@ -72,15 +72,15 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen
|
|||
|
||||
## Steel-Manning the Market Fundamentalism Position
|
||||
|
||||
* Unregulated markets allow companies to so what they're supposed to do: maximize returns to shareholders.
|
||||
* Unregulated markets allow companies to do what they're supposed to do: maximize returns to shareholders.
|
||||
* [Friedman Doctrine](https://en.wikipedia.org/wiki/Friedman_doctrine) applied to unregulated markets. Optimize for shareholder value.
|
||||
* Now we get to redefine shareholder to mean token holder, without any regulatory baggage from traditional markets.
|
||||
* Line must go up at any cost.
|
||||
* Crypto products are risk assets that have no fundamentals, but that’s not necessarily a problem because you can make money on trading them.
|
||||
* There other financial products (ETNs - exchange traded notes, volatility swaps) many of which are intrinsically negative-sum and high-risk as well, these are allowed in markets … so why shouldn’t crypto be.
|
||||
* There are other financial products (ETNs - exchange traded notes, volatility swaps) many of which are intrinsically negative-sum and high-risk as well, these are allowed in markets … so why shouldn’t crypto be.
|
||||
* [Credit Suisse defends controversial financial product at the center of the market turmoil](https://www.cnbc.com/2018/02/07/credit-suisse-defends-controversial-xiv-etn-amid-market-turmoil.html)
|
||||
* Markets are likeable to evolution; they have no moral quality.
|
||||
* Markets are a mechanism likeable to evolution: they [select](../concepts/price-formation.md) for fitness and success
|
||||
* Markets are comparable to evolution; they have no moral quality.
|
||||
* Markets are a mechanism comparable to evolution: they [select](../concepts/price-formation.md) for fitness and success
|
||||
* If I'm allowed to trade products that are massively [asymmetric](../concepts/asymmetric-information.md) and disadvantageous to retail traders (individual, non-professional market participants) then I can and I will => it will eliminate those inefficient players (it punishes unfitness and rewards fitness)
|
||||
* Even if I know it’s a [greater fool asset](../concepts/greater-fool-theory), if I have access to non-public information and more capital I can (and should) use it and exit before the other fools.
|
||||
* Some people legitimately did make money trading on [bubbles](../concepts/bubble.md): South Sea Bubble, Dotcom Bubble, Tulip Mania
|
||||
|
|
@ -116,17 +116,17 @@ Rufus and Stephen end their conversation with an analysis of the market fundamen
|
|||
* What does that lead to?
|
||||
* Inequality (money flows to the sharks)
|
||||
* Distrust and cynicism
|
||||
* Both wider in society: i’m out for myself, other people are just out for themselves. Dishonesty and exploitation are a normal part of (capitalist) society
|
||||
* Both wider in society: I’m out for myself, other people are just out for themselves. Dishonesty and exploitation are a normal part of (capitalist) society
|
||||
* Subversive opportunism
|
||||
* When it goes wrong the state and its institutions and leaders are blamed further corroding trust in our collective capabilities when we most need them (climate change etc)
|
||||
* When it goes wrong the state and its institutions and leaders are blamed, further corroding trust in our collective capabilities when we most need them (climate change etc.)
|
||||
* In markets - assuming that markets esp financial markets have some value then undermining faith in them is problematic. Cf the 1920s/1930s which led to much of the market regulations we have today
|
||||
* You may think this is a good if you are anarchist-nihilist
|
||||
* Just because you can trade something doesn't mean it’s good for the world (opium trade, slave trade, asbestos)
|
||||
* [Moral hazard](../concepts/moral-hazard.md)- public is incentivized to take on disproportionate risk expecting a bailout
|
||||
* [Moral hazard](../concepts/moral-hazard.md) - public is incentivized to take on disproportionate risk expecting a bailout
|
||||
* A deformation of character: we become enslaved to the idea of getting rich quick (cf Salgado). Capitalist alienation
|
||||
* Terribly pathological form of [capitalism](../concepts/capitalism.md) that doesn't result in price formation on collective enterprise, goods or services. Funds are betting on financial fantasy castles in the sky detached from any day to day reality of human life.
|
||||
* Terribly pathological form of [capitalism](../concepts/capitalism.md) that doesn't result in price formation on collective enterprise, goods or services. Funds are betting on financial fantasy castles in the sky detached from any day-to-day reality of human life.
|
||||
* What is the purpose of public [markets](../concepts/market.md) then?
|
||||
* A captive market for [ficticious commodities](../concepts/ficticious-commodity.md) that is controlled by opaque unregulated market making and an economic [cartel](../concepts/cartel.md).
|
||||
* A captive market for [fictiyious commodities](../concepts/ficticious-commodity.md) that is controlled by opaque unregulated market making and an economic [cartel](../concepts/cartel.md).
|
||||
* This is great if you're inside the cartel. Not so great if you aren’t.
|
||||
* Wealth transfer from public to insiders is all but guaranteed by the information [asymmetry](../concepts/asymmetric-information.md).
|
||||
|
||||
|
|
|
|||
|
|
@ -44,16 +44,16 @@ Neo-metallism argues that cryptocurrencies, and in particular Bitcoin, can and s
|
|||
|
||||
## Gold as Currency
|
||||
|
||||
* Gold has a historical precedent as money across cultures going back millenia.
|
||||
* Gold has a historical precedent as money across cultures going back millennia.
|
||||
* Multiple cultures have independently used it as currency.
|
||||
* It’s metallurgical properties make it uniquely suited amongst the elements on the periodic table.
|
||||
* It’s relative abundance (although not excessive abundance) and distribution across the Earth’s crust make it rare enough to horde and access even for bronze age cultures.
|
||||
* It is stable at room temperature, doesn’t oxidize , easily detectable because of its glimmer and unique aesthetics, it is malleable without advanced smelting technology and is uniquely distinguishable from other metals.
|
||||
* Its metallurgical properties make it uniquely suited amongst the elements on the periodic table.
|
||||
* Its relative abundance (although not excessive abundance) and distribution across the Earth’s crust make it rare enough to hoard and access even for Bronze Age cultures.
|
||||
* It is stable at room temperature, doesn’t oxidize, is easily detectable because of its glimmer and unique aesthetics, is malleable without advanced smelting technology and is uniquely distinguishable from other metals.
|
||||
* It is probably the ONLY element on the periodic table that has all of these unique characteristics that could even be used for monetary purposes.
|
||||
* There is only a finite amount of it produced in supernova events and nuclear reactions, it is thus impossible to counterfeit or “debase” the supply.
|
||||
* There is only a finite amount of it produced in supernova events and nuclear reactions: it is thus impossible to counterfeit or “debase” the supply.
|
||||
* Advanced economies began stockpiling gold in government reserves and issuing notes against that float in redemption in gold by a government treasury.
|
||||
* Gold theoretically acts as a universal numeraire across economic systems allowing interchange and commerce. It is a fixed “measuring sticking” for economic value that cannot be changed.
|
||||
* It satisfies the definition of money, it can theoretically function as a unit of account, medium of exchange, and store of value. The only issue is that it incurs storage costs and is not easily transported because of its density and physicality.
|
||||
* Gold theoretically acts as a universal numéraire across economic systems allowing interchange and commerce. It is a fixed “measuring stick” for economic value that cannot be changed.
|
||||
* It satisfies the definition of money: it can theoretically function as a unit of account, a medium of exchange, and a store of value. The only issue is that it incurs storage costs and is not easily transported because of its density and physicality.
|
||||
|
||||
### Why the Gold Standard: Fiat Money, Sound Money and the Gold Standard
|
||||
|
||||
|
|
@ -75,7 +75,7 @@ The Gold Standard is Good
|
|||
* Inflation is a bad thing: prices will be driven up at different times, distorting relative prices, wages, and rates of return. Artificial distortion can lead to booms in production and consumption which are out of line with future reality, leading in turn to dramatic busts.
|
||||
* The Philosophical Argument
|
||||
* Intervention is inherently undemocratic, in that it allows a select few individuals to exert undue power over the lives of the rest of a nation (and beyond).
|
||||
* This is the argument laid out in Hayek’s famous Road to Serfdom (1944).
|
||||
* This is the argument laid out in Hayek’s famous *Road to Serfdom* (1944).
|
||||
|
||||
Bitcoin is Better
|
||||
* Bitcoin is Like Gold
|
||||
|
|
@ -86,9 +86,9 @@ Bitcoin is Better
|
|||
* Bitcoin shares three other important characteristics with gold:
|
||||
1. Scarcity: Bitcoin is artificially scarce, just as gold is naturally scarce. There is a hard limit of 21 million coins baked into Bitcoin’s design. This makes it inherently deflationary, just like gold.
|
||||
2. Universality: Bitcoin shares gold’s “universality” due to its prominence in the crypto sphere. Just as gold is the standout element suited to peg currency to, so Bitcoin is the only standout cryptocurrency due to it being the original and most prominent.
|
||||
3. Fair initial distribution: The lack of overarching controller or owner means there was a “fair” distribution mechanism for Bitcoin. It rewarded early finders and /investors in the same way as natural distribution of gold rewarded those who initially unearthed it.
|
||||
3. Fair initial distribution: The lack of overarching controller or owner means there was a “fair” distribution mechanism for Bitcoin. It rewarded early finders and investors in the same way as natural distribution of gold rewarded those who initially unearthed it.
|
||||
* Bitcoin Functions Better Than Gold
|
||||
* Bitcoin is digital and so is not subject to the same costs around storage and transport as gold.
|
||||
* Bitcoin is digital and so is not subject to the same costs around storage and transportation as gold.
|
||||
* Bitcoin is arguably more decentralized. Gold supply is mostly controlled by sovereign nations like the U.S., China, Germany, and other European countries.
|
||||
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ Bitcoin is Better
|
|||
* While excessive inflation is bad and governments/central banks have made errors in the past, this has been rare. Historically most have quite easily kept inflation under control.
|
||||
* The flexibility offered by the ability for governments/central banks to intervene is highly useful, and worth the risk of error. Most obviously, they can stabilise in the face of shocks, for example, a pandemic. This was the reason we switched to fiat currency in the first place.
|
||||
* Paper money was issued as an emergency measure in Spain, during the conquest of Granada (1482-1492).
|
||||
* The gold standard can also lead to the reverberation of shocks through the global economy. This is because economic shocks in one economy will lead to investors buying up gold as a safe asset. Given currencies are pegged to gold, this increase in demand in one nation can have significant impacts on the value of currencies the world over.
|
||||
* The gold standard can also lead to the reverberation of shocks through the global economy. This is because economic shocks in one economy will lead to investors buying up gold as a safe asset. Given that currencies are pegged to gold, this increase in demand in one nation can have significant impacts on the value of currencies the world over.
|
||||
* The Philosophical Argument
|
||||
* Hayek's claim hasn't been borne out historically. Since leaving metallism most metrics of prosperity have increased, and there have been fewer crises than under the old system. There hasn’t been any evidence of any shift away from democracy or increases of the translation of political power to economic benefit (where such things do happen today, it’s not happening through monetary policy).
|
||||
* There are ways to democratize the fiat system without returning to gold e.g. we can increase the democratic accountability of those in control of monetary policy.
|
||||
|
|
@ -113,7 +113,7 @@ Bitcoin is Better
|
|||
|
||||
'The Bitcoin Standard is Better'
|
||||
* 'Bitcoin is Like Gold'
|
||||
* Bitcoin cannot function as a medium of exchange. The transaction throughput is so small that it doesn't work as a global system of currency - it can't process transactions fast enough.This is inherent to the proof-of-work process Bitcon uses to verify its transactions. This incapacity is therefore baked in.
|
||||
* Bitcoin cannot function as a medium of exchange. The transaction throughput is so small that it doesn't work as a global system of currency - it can't process transactions fast enough. This is inherent to the proof-of-work process Bitcoin uses to verify its transactions. This incapacity is therefore baked in.
|
||||
* Bitcoin does not appear to hold potential as a store of value given its extremely high price variance.
|
||||
* Gold, on the other hand, has historical precedent as a store of value in economic insecurity; its price has proven to be better insulated from broader economic dynamics than many other asset types.
|
||||
* If Bitcoin were to behave as a [store of value](../concepts/store-of-value.md) it would have to abandon hypervolatility, and there is no easily identifiable economic mechanism for this to happen.
|
||||
|
|
@ -121,15 +121,15 @@ Bitcoin is Better
|
|||
* Bitcoin being digital does not mean it is without its costs.
|
||||
* The extraction, transport and storage costs associated with gold are outweighed by massive Bitcoin mining costs. The [“proof-of-work” mechanism](../concepts/consensus-algorithm.md) used to validate transactions and undertake mining for Bitcoin requires a huge amount of electricity (costly and environmentally damaging). This verification process creates significant friction around transactions - the system is very slow, particularly when lots of people are using it.
|
||||
* Bitcoin, unlike traditional commodities, has a negative price elasticity of demand - demand goes up with price, not down. For this reason, Bitcoin looks like a [speculative](../concepts/speculation.md) [bubble](../concepts/bubble.md), which at some point will inevitably crash.
|
||||
* States can synthetically stimulate demand for a single, fiat currency by demanding tax in this currency, ensuring the whole system works and that the value of such currency can never drop to zero. In other words, there is a clear mechanism to guard against value bottoming out. The same cannot be said for cryptocurrencies such as Bitcon.
|
||||
* States can synthetically stimulate demand for a single, fiat currency by demanding tax in this currency, ensuring the whole system works and that the value of such currency can never drop to zero. In other words, there is a clear mechanism to guard against value bottoming out. The same cannot be said for cryptocurrencies such as Bitcoin.
|
||||
* Bitcoin no longer shares gold’s uniqueness.
|
||||
* Lots of new “alt coins” - new alternatives to Bitcoin - are being minted, meaning the cryptocurrency market is now crowded with competitors.
|
||||
* High numbers of different coins also creates inflationary effects - the very thing stores of value are intended to guard against.
|
||||
* Single currency systems were adopted as these are significantly more efficient. A single price in a single currency allows far easier exchange of goods. Having multiple issuers of currency adds friction to trade, as one must convert the value of a given object between currencies before exchange can take place.
|
||||
* The history of large issuances of private money isn't good.These systems are subject to fraud and a general breakdown of trust. If any bank can issue its own [private bank notes](../concepts/private-money.md), how does one know which bank is reliable and which isn’t?
|
||||
* The history of large issuances of private money isn't good. These systems are subject to fraud and a general breakdown of trust. If any bank can issue its own [private bank notes](../concepts/private-money.md), how does one know which bank is reliable and which isn’t?
|
||||
|
||||
## A Final Note on Trust
|
||||
* In the world of Bitcon, and [blockchain](../concepts/blockchain.md) more generally, replacing interpersonal trust with cryptographic verification mechanisms is seen as positive; we no longer need trust: in states, governmental institutions or one another.
|
||||
* In the world of Bitcoin, and [blockchain](../concepts/blockchain.md) more generally, replacing interpersonal trust with cryptographic verification mechanisms is seen as positive; we no longer need trust: in states, governmental institutions or one another.
|
||||
* The problem with trust is that when you get rid of it, it's very hard to get it back. If crypto were to fail we would risk a large-scale general reduction in trust. Even if it were to succeed, it would likely lead to a significantly diminished role for trust at a broader level.
|
||||
* At the root of [trustless](../concepts/decentralization.md) blockchain technologies are assumptions about human nature, which have significant implications for how we approach vital questions of social cooperation.
|
||||
* There is evidence that high trust of strangers correlates with positive economic and social outcomes.
|
||||
|
|
@ -173,4 +173,4 @@ Bitcoin is Better
|
|||
1. Wang, G., Tang, Y., Xie, C., & Chen, S. (2019). Is bitcoin a safe haven or a hedging asset? Evidence from China. Journal of Management Science and Engineering, 4(3), 173–188. https://doi.org/10.1016/j.jmse.2019.09.001
|
||||
1. Caferra, Rocco, Gabriele Tedeschi, and Andrea Morone. 2021. ‘Bitcoin: Bubble That Bursts or Gold That Glitters?’ Economics Letters 205: 109942. https://doi.org/10.1016/j.econlet.2021.109942.
|
||||
1. Wolf, Martin. 2019. ‘The Libertarian Fantasies of Cryptocurrencies’. Financial Times, February. https://www.ft.com/content/eeeacd7c-2e0e-11e9-ba00-0251022932c8.
|
||||
1. Fantacci, Luca. 2019. ‘Cryptocurrencies and the Denationalization of Money’. International Journal of Political Economy 48 (2): 105–26. https://doi.org/10.1080/08911916.2019.1624319.
|
||||
1. Fantacci, Luca. 2019. ‘Cryptocurrencies and the Denationalization of Money’. International Journal of Political Economy 48 (2): 105–26. https://doi.org/10.1080/08911916.2019.1624319.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ date: 2022-04-08
|
|||
description: 'In this episode with Pia Mancini about her work to make community finance transparent and sustainable with Open Collective, her commitment ot steward ownership and the value of an exit to community.'
|
||||
image: /img/Pia Mancini Thumbnail.jpg
|
||||
youtube: https://www.youtube.com/watch?v=C2KYJiQVtIM
|
||||
featured: true
|
||||
featured: false
|
||||
aliases: notes/pia-mancini-open-collective-dialogue.md
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ title: Web3 and Post-State Technocracy
|
|||
created: 2022-03-21
|
||||
date: 2022-02-17
|
||||
description: "In this episode we explore the aspirational transition from the existing US-led international order to a world in which blockchain technology and technocracy are the new foundations for global human governance."
|
||||
image: /img/technocracy.jpg
|
||||
image: /img/post-state-technocracy.jpg
|
||||
youtube: https://www.youtube.com/watch?v=gZ0iCJkM3PU
|
||||
podcast: https://anchor.fm/life-itself/episodes/On-Web3-and-Post-State-Technocracy-with-Stephen-Diehl--Rufus-Pollock-e1g4cpe
|
||||
featured: true
|
||||
featured: false
|
||||
aliases: notes/post-state-technocracy.md
|
||||
---
|
||||
|
||||
|
|
@ -78,13 +78,13 @@ This thesis has been put forward in various forms. So far, the most fully articu
|
|||
* Problems like climate change show that liberal democracies and the existing international order are highly vulnerable to paralysis on global tragedy of the commons problems.
|
||||
* Just like evolution, corruption is the natural state of being, so we need to embrace corruption rather than live up to the ideals of liberal democracy.
|
||||
* Instead of a strong man to save us, we need strong tech.
|
||||
* **Claim 5:** [web3](../concepts/web3.md) is a paradigm shift akin to the industrial revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life.
|
||||
* We can’t stop runaway phenomenon. We simply have to embrace them.
|
||||
* **Claim 5:** [web3](../concepts/web3.md) is a paradigm shift akin to the Industrial Revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life.
|
||||
* We can’t stop runaway phenomena. We simply have to embrace them.
|
||||
* Crypto is inevitable. We can’t put the toothpaste back in the tube.
|
||||
* Creative destruction is unpredictable but in the end it’s right.
|
||||
* Historical inventions like the printing press were fraught with concern and risk, and yet humanity survived those paradigm shifts. The disruption of the financial system is no different than the printing press.
|
||||
* The train of progress only goes one direction, get on or get off. There’s no place for Luddites in the future.
|
||||
* Matt Damon superbowl ad is the soft form of this worldview.
|
||||
* Matt Damon Superbowl ad is the soft form of this worldview.
|
||||
|
||||
## Evaluating the position
|
||||
|
||||
|
|
@ -105,7 +105,7 @@ This thesis has been put forward in various forms. So far, the most fully articu
|
|||
* **Claim 2:** "The state can (and should) be hollowed out"
|
||||
* "Nation states are being dissolved from within. The internet is global, the internet is the basis of human life, so borders should not exist."
|
||||
* “No borders politics” is legitimately a divergence from classical right wing positions. Usually resonates with far-left positions. This is an interesting shift in thinking.
|
||||
* "We can replace all of the state's legacy functions with software, and the public goods that it once supported can be replaced by either the private sector or blockchain apps.""
|
||||
* "We can replace all of the state's legacy functions with software, and the public goods that it once supported can be replaced by either the private sector or blockchain apps."
|
||||
* Replacing the DMV and the tax authority with automation is a genuinely appealing idea to many people. Replacing it with the private sector is more controversial.
|
||||
* People have successfully built antifragile services that exist outside the regulatory perimeter that have endured the test of time:
|
||||
* ThePirateBay has existed since 2003 despite government attempts to remove it from the internet. No government cares enough to really pursue it because it only infringes on the private sector and there’s no political will to shut it down.
|
||||
|
|
@ -129,8 +129,8 @@ This thesis has been put forward in various forms. So far, the most fully articu
|
|||
* **Claim 4:** "Crypto is the smartest people in the world exiting into their own economy"
|
||||
* A tech-led plutocracy, not a utopia.
|
||||
* The result would be an oligarchy: the technical elite and those with access to capital rule.
|
||||
* **Claim 5:** [web3](../concepts/web3.md) is a paradigm shift akin to the industrial revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life.
|
||||
* This is a vision of the future detached from the lived experience and day to day economics of the vast majority of people globally.
|
||||
* **Claim 5:** "[web3](../concepts/web3.md) is a paradigm shift akin to the industrial revolution. Our current reading of economics is incommensurate with the inevitable new world order that will exist after blockchain and tokenization subsume all of human life."
|
||||
* This is a vision of the future detached from the lived experience and day-to-day economics of the vast majority of people globally.
|
||||
* We'll all be full-time FX traders at face value makes zero sense. Price discovery is important but who will smelt the aluminium for your MacBook?
|
||||
* How will this new economy function when their financial system can't even be used to buy goods and services?
|
||||
* “Crypto doesn’t currently function as money, not because of technical or economics limitations, but because statists won’t give up their power.”
|
||||
|
|
@ -145,7 +145,7 @@ This thesis has been put forward in various forms. So far, the most fully articu
|
|||
* We can’t run nation states like we run tech startups.
|
||||
* Skeptical about finding a quick-fix in technology or politics. There is wisdom in learning from the past and the institutions that exist.
|
||||
* Esperanto-style solutionism has never worked for societies or economies.
|
||||
* Anna Neima’s book The Utopians is full of similarly minded people and communities. They usually dissolve or collapse.
|
||||
* Anna Neima’s book *The Utopians* is full of similarly minded people and communities. They usually dissolve or collapse.
|
||||
|
||||
***
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
# production
|
||||
/build
|
||||
public/sitemap.xml
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
import { Tooltip } from './Tooltip';
|
||||
|
||||
/**
|
||||
* Component for adding previews on hovering over anchor tags with relative paths
|
||||
*/
|
||||
export const Anchor = (props) => {
|
||||
/* Check if the path is relative */
|
||||
const pathIsRelative = (path) => {
|
||||
return path &&
|
||||
path.indexOf("http:") !== 0 &&
|
||||
path.indexOf("https:") !== 0 &&
|
||||
path.indexOf("#") !== 0
|
||||
}
|
||||
|
||||
if (pathIsRelative(props.href)) {
|
||||
return (
|
||||
<Tooltip {...props} render={ tooltipTriggerProps => (
|
||||
<a {...tooltipTriggerProps} />
|
||||
)}
|
||||
/>
|
||||
)
|
||||
}
|
||||
return <a {...props} />;
|
||||
};
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
|
||||
|
||||
export const Heading = ({ level, observer }) => (props) => {
|
||||
useEffect(() => {
|
||||
/* start observing heading's intersection with the bounding box
|
||||
* set by observer's `rootMargin` */
|
||||
if (!observer) {
|
||||
return
|
||||
}
|
||||
observer.observe(document.getElementById(props.id));
|
||||
});
|
||||
|
||||
return React.createElement(`h${level}`, {
|
||||
...props,
|
||||
className: "c-heading scroll-mt-16 cursor-pointer"
|
||||
})
|
||||
}
|
||||
|
|
@ -14,11 +14,12 @@ export function Latest({ posts }) {
|
|||
<div className="mt-12 max-w-lg mx-auto grid gap-5 lg:grid-cols-3 lg:max-w-none">
|
||||
{posts && posts.map((post) => (
|
||||
<div key={post.title} className="flex flex-col rounded-lg shadow-lg overflow-hidden">
|
||||
<div className="flex-shrink-0">
|
||||
{post.image ? <img className="h-48 w-full object-cover" src={post.image} alt={post.title} />
|
||||
: <div className="h-20 w-full bg-slate-500" />
|
||||
}
|
||||
</div>
|
||||
{post.image ?
|
||||
<div className="h-48 flex-shrink-0">
|
||||
<img className="" width="100%" height="100%" src={post.image} alt={post.title} />
|
||||
</div>
|
||||
: <div className="h-20 w-full bg-slate-500" />
|
||||
}
|
||||
<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">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
import Head from 'next/head'
|
||||
import Nav from './Nav'
|
||||
|
||||
import siteConfig from '../config/siteConfig'
|
||||
import navLinks from '../config/navLinks.js'
|
||||
import navLinks from '../config/navLinks'
|
||||
import Nav from './Nav'
|
||||
// import Sidebar from './Sidebar'
|
||||
|
||||
|
||||
export default function Layout({ children }) {
|
||||
return (
|
||||
|
|
@ -12,19 +15,17 @@ export default function Layout({ children }) {
|
|||
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="" />
|
||||
{/* <link href="https://fonts.googleapis.com/css2?family=Nunito+Sans&display=swap" rel="stylesheet" />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter&display=swap" rel="stylesheet"></link> */}
|
||||
</Head>
|
||||
<Nav />
|
||||
<main>
|
||||
{children}
|
||||
</main>
|
||||
<footer className="w-full h-24 mt-16">
|
||||
<div className="max-w-7xl mx-auto py-12 px-4 overflow-hidden sm:px-6 lg:px-8">
|
||||
<div className="max-w-7xl mx-auto py-12 px-4 sm:px-6 md:px-8 overflow-hidden">
|
||||
<nav className="-mx-5 -my-2 flex flex-wrap justify-center" aria-label="Footer">
|
||||
{navLinks.map((item) => (
|
||||
<div key={item.name} className="px-5 py-2">
|
||||
<a href={item.href} className="text-base text-gray-500 hover:text-gray-900">
|
||||
<a href={item.href} className="text-base text-gray-400 hover:text-gray-500">
|
||||
{item.name}
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -38,21 +39,25 @@ export default function Layout({ children }) {
|
|||
</a>
|
||||
))}
|
||||
</div>
|
||||
<p className="flex items-center justify-center mt-8">
|
||||
Created by
|
||||
<a
|
||||
href={siteConfig.authorUrl}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img src={siteConfig.authorLogo} alt={siteConfig.author} className="mx-2 h-6 inline-block" />
|
||||
{siteConfig.author}
|
||||
{' '}
|
||||
<div className="flex flex-col items-center mt-8 text-gray-400">
|
||||
<p>
|
||||
Created by
|
||||
<a
|
||||
href={siteConfig.authorUrl}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<img src={siteConfig.authorLogo} alt={siteConfig.author} width="20" height="20" className="mx-2 h-6 inline-block" />
|
||||
{siteConfig.author}
|
||||
{' '}
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
Licensed under a CC-By 4.0 International License
|
||||
</a>
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,30 +0,0 @@
|
|||
import ReactPlayer from "react-player";
|
||||
import TwitterEmbed from "./TwitterEmbed";
|
||||
import { YOUTUBE_REGEX, TWITTER_REGEX } from "../lib/constants";
|
||||
|
||||
export const Paragraph = (props) => {
|
||||
if (
|
||||
typeof props.children == "object" &&
|
||||
props.children.props &&
|
||||
props.children.props.href
|
||||
) {
|
||||
if (YOUTUBE_REGEX.test(props.children.props.href)) {
|
||||
return (
|
||||
<div className="relative pt-[56.25%] my-8" {...props}>
|
||||
<ReactPlayer
|
||||
className="absolute top-0 left-0"
|
||||
width="100%"
|
||||
height="100%"
|
||||
url={props.children.props.href}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (TWITTER_REGEX.test(props.children.props.href)) {
|
||||
return <TwitterEmbed url={props.children.props.href} {...props} />;
|
||||
}
|
||||
}
|
||||
|
||||
return <p {...props} />;
|
||||
};
|
||||
|
|
@ -1,50 +1,28 @@
|
|||
import Head from "next/head";
|
||||
import ReactPlayer from "react-player/lazy";
|
||||
import { Paragraph } from "./Link";
|
||||
import { NextSeo } from "next-seo";
|
||||
import siteConfig from "../config/siteConfig";
|
||||
import LiteYouTubeEmbed from "react-lite-youtube-embed";
|
||||
|
||||
import { YOUTUBE_REGEX } from "../lib/constants";
|
||||
import siteConfig from "../config/siteConfig";
|
||||
import MdxContent from "./MdxContent";
|
||||
|
||||
const components = {
|
||||
Head,
|
||||
p: Paragraph,
|
||||
};
|
||||
|
||||
export default function MdxPage({ children, editUrl }) {
|
||||
const {
|
||||
Component,
|
||||
frontmatter: {
|
||||
title,
|
||||
description,
|
||||
date,
|
||||
authors,
|
||||
youtube,
|
||||
podcast,
|
||||
image,
|
||||
_raw,
|
||||
},
|
||||
} = children;
|
||||
export default function MdxPage({ body, meta }) {
|
||||
const { title, description, date, keywords, youtube, podcast, image, _raw } =
|
||||
meta;
|
||||
|
||||
let youtubeThumnbnail;
|
||||
let podcastEmbed;
|
||||
|
||||
if (youtube && YOUTUBE_REGEX.test(youtube) && !image) {
|
||||
const youtubeId =
|
||||
youtube && YOUTUBE_REGEX.test(youtube) && youtube.split(/^|=|\//).pop();
|
||||
|
||||
if (youtubeId && !image) {
|
||||
// get the youtube thumbnail image from https://img.youtube.com/vi/<youtube-video-id>/maxresdefault.jpg
|
||||
const youtubeId = youtube.split(/^|=|\//).pop();
|
||||
youtubeThumnbnail = youtube.replace(
|
||||
YOUTUBE_REGEX,
|
||||
`https://img.youtube.com/vi/${youtubeId}/maxresdefault.jpg`
|
||||
);
|
||||
}
|
||||
|
||||
if (podcast && podcast.includes("life-itself")) {
|
||||
const podcastUrl = podcast;
|
||||
podcastEmbed = [
|
||||
podcastUrl.slice(0, "https://anchor.fm/life-itself".length),
|
||||
"/embed",
|
||||
podcastUrl.slice("https://anchor.fm/life-itself".length),
|
||||
].join("");
|
||||
}
|
||||
const PodcastIcon = siteConfig.social.find((s) => s.name === "Podcast").icon;
|
||||
|
||||
const titleFromUrl = _raw.flattenedPath
|
||||
.split("/")
|
||||
|
|
@ -60,6 +38,11 @@ export default function MdxPage({ children, editUrl }) {
|
|||
? youtubeThumnbnail
|
||||
: null;
|
||||
|
||||
// enable editing content only for claims, concepts, and guide for now
|
||||
const editUrl = ["claims", "concepts", "guide"].includes(_raw.sourceFileDir)
|
||||
? siteConfig.repoRoot + siteConfig.repoEditPath + _raw.sourceFilePath
|
||||
: null;
|
||||
|
||||
return (
|
||||
<>
|
||||
<NextSeo
|
||||
|
|
@ -69,6 +52,11 @@ export default function MdxPage({ children, editUrl }) {
|
|||
openGraph={{
|
||||
title: SeoTitle,
|
||||
description: description,
|
||||
url: `${siteConfig.url}/${_raw.flattenedPath}`,
|
||||
type: "article",
|
||||
article: {
|
||||
tags: keywords ? keywords.split(",") : [],
|
||||
},
|
||||
images: imageUrl
|
||||
? [
|
||||
{
|
||||
|
|
@ -81,89 +69,75 @@ export default function MdxPage({ children, editUrl }) {
|
|||
]
|
||||
: siteConfig.nextSeo.openGraph.images,
|
||||
}}
|
||||
additionalMetaTags={[
|
||||
{ name: "keywords", content: keywords ? keywords : "" },
|
||||
]}
|
||||
/>
|
||||
<article className="prose dark:prose-invert mx-auto p-6">
|
||||
<header>
|
||||
<div className="mb-6">
|
||||
{title && <h1 className="mb-0">{title}</h1>}
|
||||
{authors && (
|
||||
<div className="-mt-6">
|
||||
<p className="opacity-60 pl-1">{authors}</p>
|
||||
</div>
|
||||
)}
|
||||
{date && (
|
||||
<p className="text-gray-900 dark:text-gray-500 text-sm pl-2">
|
||||
on {date}
|
||||
</p>
|
||||
)}
|
||||
{description && <p className="">{description}</p>}
|
||||
{youtube && YOUTUBE_REGEX.test(youtube) && (
|
||||
<div className="relative pt-[56.25%]">
|
||||
<ReactPlayer
|
||||
className="absolute top-0 left-0"
|
||||
width="100%"
|
||||
height="100%"
|
||||
url={youtube}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
{podcast && (
|
||||
<div className="pt-4">
|
||||
<ul className="list-disc">
|
||||
<li>
|
||||
Podcast:
|
||||
<a href={podcast}>{podcast}</a>
|
||||
</li>
|
||||
</ul>
|
||||
{podcastEmbed && (
|
||||
<div className="md:mx-4">
|
||||
<iframe
|
||||
src={podcastEmbed}
|
||||
height="100px"
|
||||
width="100%"
|
||||
frameBorder="0"
|
||||
scrolling="no"
|
||||
className="rounded-md"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<div className="my-6">
|
||||
<Component components={components} />
|
||||
</div>
|
||||
{editUrl && (
|
||||
<div className="mt-12 mb-6">
|
||||
<a
|
||||
className="flex no-underline font-semibold text-yellow-li"
|
||||
href={editUrl}
|
||||
target="_blank"
|
||||
>
|
||||
Edit this page
|
||||
<span className="mx-1">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="h-6 w-6"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<div className="max-w-7xl mx-auto px-2 sm:px-6 md:px-8">
|
||||
<article className="prose dark:prose-invert prose-a:break-words mx-auto lg:mr-[20rem] p-6">
|
||||
<header>
|
||||
<div className="mb-6">
|
||||
{title && <h1 className="mb-0">{title}</h1>}
|
||||
{date && (
|
||||
<p className="text-gray-900 dark:text-gray-500 text-sm pl-2">
|
||||
on {date}
|
||||
</p>
|
||||
)}
|
||||
{description && <p className="">{description}</p>}
|
||||
{youtubeId && <LiteYouTubeEmbed id={youtubeId} />}
|
||||
{podcast && (
|
||||
<div className="pt-4">
|
||||
<ul className="list-disc">
|
||||
<li>
|
||||
<a
|
||||
className="flex items-center"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
href={podcast}
|
||||
>
|
||||
<div className="w-4 mr-2">
|
||||
<PodcastIcon />
|
||||
</div>
|
||||
<p className="m-0">Listen to this podcast</p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</main>
|
||||
</article>
|
||||
</header>
|
||||
<main className="my-6">
|
||||
<MdxContent body={body} />
|
||||
{editUrl && (
|
||||
<div className="mt-12 mb-6">
|
||||
<a
|
||||
className="flex no-underline font-semibold text-yellow-li"
|
||||
href={editUrl}
|
||||
target="_blank"
|
||||
>
|
||||
Edit this page
|
||||
<span className="mx-1">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="h-6 w-6"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"
|
||||
/>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
)}
|
||||
</main>
|
||||
</article>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
import React from "react";
|
||||
import Head from "next/head";
|
||||
import { useMDXComponent } from "next-contentlayer/hooks";
|
||||
|
||||
import { Anchor } from "./Anchor";
|
||||
import { Heading } from "./Heading";
|
||||
import { Paragraph } from "./Paragraph";
|
||||
import useHeadingsObserver from "../hooks/useHeadingsObserver";
|
||||
|
||||
const MdxContent = ({ body }) => {
|
||||
const observer = useHeadingsObserver();
|
||||
|
||||
const customComponents = {
|
||||
Head,
|
||||
p: Paragraph,
|
||||
a: Anchor,
|
||||
h1: Heading({ level: 1, observer }),
|
||||
h2: Heading({ level: 2, observer }),
|
||||
h3: Heading({ level: 3, observer }),
|
||||
h4: Heading({ level: 4, observer }),
|
||||
h5: Heading({ level: 5, observer }),
|
||||
h6: Heading({ level: 6, observer }),
|
||||
};
|
||||
const Component = useMDXComponent(body.code);
|
||||
|
||||
return <Component components={customComponents} />;
|
||||
};
|
||||
|
||||
export default MdxContent;
|
||||
|
|
@ -12,14 +12,14 @@ function classNames(...classes) {
|
|||
|
||||
export default function Nav() {
|
||||
return (
|
||||
<Disclosure as="nav" className="shadow">
|
||||
<Disclosure as="nav" className="shadow-md bg-slate-900 sticky top-0 z-10">
|
||||
{({ open }) => (
|
||||
<>
|
||||
<div className="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
|
||||
<div className="relative flex justify-between h-16">
|
||||
<div className="absolute inset-y-0 left-0 flex items-center sm:hidden">
|
||||
<div className="flex justify-between h-16">
|
||||
<div className="flex items-center xl:hidden">
|
||||
{/* Mobile menu button */}
|
||||
<Disclosure.Button className="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500">
|
||||
<Disclosure.Button className="inline-flex items-center justify-center p-2 mr-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500">
|
||||
<span className="sr-only">Open main menu</span>
|
||||
{open ? (
|
||||
<XIcon className="block h-6 w-6" aria-hidden="true" />
|
||||
|
|
@ -28,13 +28,13 @@ export default function Nav() {
|
|||
)}
|
||||
</Disclosure.Button>
|
||||
</div>
|
||||
<div className="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
|
||||
<div className="flex-shrink-0 flex items-center uppercase text-yellow-500">
|
||||
<div className="flex-1 flex justify-between">
|
||||
<div className="text-sm sm:text-base flex-shrink-0 flex items-center uppercase text-yellow-500">
|
||||
<Link href="/">
|
||||
<a>{siteConfig.title}</a>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="hidden sm:ml-6 sm:flex sm:space-x-8">
|
||||
<div className="hidden xl:flex mx-auto space-x-4">
|
||||
{/* Current: "border-indigo-500 text-gray-900", Default: "border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700" */}
|
||||
{navLinks.map((item, i) => (
|
||||
<Link key={i} href={item.href}>
|
||||
|
|
@ -53,7 +53,7 @@ export default function Nav() {
|
|||
</Link>
|
||||
))}
|
||||
</div>
|
||||
<div className="hidden sm:flex items-center justify-end w-full space-x-4">
|
||||
<div className="hidden md:flex items-center justify-end space-x-4">
|
||||
{siteConfig.social.map(
|
||||
({ name, href, icon: Icon }) =>
|
||||
["YouTube", "GitHub", "Life Itself"].includes(name) && (
|
||||
|
|
@ -77,8 +77,7 @@ export default function Nav() {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Disclosure.Panel className="sm:hidden">
|
||||
<Disclosure.Panel className="xl:hidden">
|
||||
<div className="pt-2 pb-4 space-y-1">
|
||||
{/* Current: "bg-indigo-50 border-indigo-500 text-indigo-700", Default: "border-transparent text-gray-500 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-700" */}
|
||||
{navLinks.map((item, i) => (
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
import LiteYouTubeEmbed from "react-lite-youtube-embed";
|
||||
import { YOUTUBE_REGEX } from "../lib/constants";
|
||||
|
||||
export const Paragraph = (props) => {
|
||||
if (
|
||||
typeof props.children == "object" &&
|
||||
props.children.props &&
|
||||
props.children.props.href &&
|
||||
YOUTUBE_REGEX.test(props.children.props.href)
|
||||
) {
|
||||
const youtubeId = props.children.props.href.split(/^|=|\//).pop();
|
||||
return <LiteYouTubeEmbed id={youtubeId} />;
|
||||
}
|
||||
return <p {...props} />;
|
||||
};
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
import { useState, useEffect, useRef, Fragment } from 'react'
|
||||
import {
|
||||
arrow,
|
||||
autoPlacement,
|
||||
FloatingPortal,
|
||||
inline,
|
||||
offset,
|
||||
shift,
|
||||
useDismiss,
|
||||
useFloating,
|
||||
useHover,
|
||||
useFocus,
|
||||
useInteractions,
|
||||
useRole,
|
||||
} from '@floating-ui/react-dom-interactions'
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
import { allOtherPages } from 'contentlayer/generated';
|
||||
|
||||
import documentExtract from '../utils/documentExtract'
|
||||
|
||||
|
||||
const tooltipBoxStyle = (theme) => ({
|
||||
height: 'auto',
|
||||
maxWidth: '40rem',
|
||||
padding: '1rem',
|
||||
background: theme === 'light' ? '#fff' : '#000',
|
||||
color: theme === 'light' ? 'rgb(99, 98, 98)' : '#A8A8A8',
|
||||
borderRadius: '4px',
|
||||
boxShadow: 'rgba(0, 0, 0, 0.55) 0px 0px 16px -3px',
|
||||
})
|
||||
|
||||
const tooltipBodyStyle = (theme) => ({
|
||||
maxHeight: '4.8rem',
|
||||
position: 'relative',
|
||||
lineHeight: '1.2rem',
|
||||
overflow: 'hidden',
|
||||
})
|
||||
|
||||
const tooltipArrowStyle = ({ theme, x, y, side }) => ({
|
||||
position: "absolute",
|
||||
left: x != null ? `${x}px` : '',
|
||||
top: y != null ? `${y}px` : '',
|
||||
right: '',
|
||||
bottom: '',
|
||||
[side]: '-4px',
|
||||
height: "8px",
|
||||
width: "8px",
|
||||
background: theme === 'light' ? '#fff' : '#000',
|
||||
transform: "rotate(45deg)"
|
||||
})
|
||||
|
||||
// export const Tooltip = ({ absolutePath, render, ...props }) => {
|
||||
export const Tooltip = ({ render, ...props }) => {
|
||||
const theme = 'light'; // temporarily hard-coded; light theme tbd in next PR
|
||||
|
||||
const arrowRef = useRef(null);
|
||||
const [ showTooltip, setShowTooltip ] = useState(false);
|
||||
const [ tooltipContent, setTooltipContent ] = useState("");
|
||||
const [ tooltipContentLoaded, setTooltipContentLoaded ] = useState(false);
|
||||
// floating-ui hook
|
||||
const {
|
||||
x,
|
||||
y,
|
||||
reference, // trigger element back ref
|
||||
floating, // tooltip back ref
|
||||
placement, // default: 'bottom'
|
||||
strategy, // default: 'absolute'
|
||||
context,
|
||||
middlewareData: { arrow: { x: arrowX, y: arrowY } = {}} // data for arrow positioning
|
||||
} = useFloating({
|
||||
open: showTooltip, // state value binding
|
||||
onOpenChange: setShowTooltip, // state value setter
|
||||
middleware: [
|
||||
offset(5), // offset from container border
|
||||
autoPlacement({ padding: 5 }), // auto place vertically
|
||||
shift({ padding: 5 }), // flip horizontally if necessary
|
||||
arrow({ element: arrowRef, padding: 4 }), // add arrow element
|
||||
inline(), // correct position for multiline anchor tags
|
||||
]
|
||||
});
|
||||
// floating-ui hook
|
||||
const { getReferenceProps, getFloatingProps } = useInteractions([
|
||||
useHover(context, { delay: 100 }),
|
||||
useFocus(context),
|
||||
useRole(context, { role: 'tooltip' }),
|
||||
useDismiss(context, { ancestorScroll: true }),
|
||||
]);
|
||||
|
||||
const triggerElementProps = getReferenceProps({ ...props, ref: reference});
|
||||
const tooltipProps = getFloatingProps({
|
||||
ref: floating,
|
||||
style: {
|
||||
position: strategy,
|
||||
left: x ?? '',
|
||||
top: y ?? '',
|
||||
},
|
||||
});
|
||||
|
||||
const arrowPlacement = {
|
||||
top: 'bottom',
|
||||
right: 'left',
|
||||
bottom: 'top',
|
||||
left: 'right',
|
||||
}[placement.split('-')[0]];
|
||||
|
||||
const fetchTooltipContent = async () => {
|
||||
setTooltipContentLoaded(false);
|
||||
|
||||
let content;
|
||||
// get tooltip content
|
||||
try {
|
||||
// create a temporary anchor tag to convert relative href to absolute path
|
||||
const tempLink = document.createElement("a");
|
||||
tempLink.href = props.href;
|
||||
const filePath = tempLink.pathname.slice(1) // remove slash from the beginning
|
||||
// disallow tooltips for 'notes' pages for now due to their different structure
|
||||
if (filePath.includes('notes')) {
|
||||
return
|
||||
}
|
||||
const page = allOtherPages.find(p => p._raw.sourceFilePath === filePath)
|
||||
content = documentExtract(page.body.raw);
|
||||
} catch {
|
||||
return
|
||||
}
|
||||
|
||||
setTooltipContent(content);
|
||||
setTooltipContentLoaded(true);
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if (showTooltip) {
|
||||
fetchTooltipContent();
|
||||
}
|
||||
}, [showTooltip])
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
{ render(triggerElementProps) }
|
||||
<FloatingPortal>
|
||||
<AnimatePresence>
|
||||
{ showTooltip && tooltipContentLoaded &&
|
||||
<motion.div
|
||||
{...tooltipProps}
|
||||
initial={{ opacity: 0, scale: 0.85 }}
|
||||
animate={{ opacity: 1, scale: 1 }}
|
||||
exit={{ opacity: 0 }}
|
||||
transition={{ type: "spring", damping: 20, stiffness: 300 }}
|
||||
>
|
||||
<div className="tooltip-box" style={ tooltipBoxStyle(theme) }>
|
||||
<div className="tooltip-body" style={ tooltipBodyStyle(theme) }>
|
||||
{ tooltipContent }
|
||||
</div>
|
||||
</div>
|
||||
<div ref={arrowRef} className="tooltip-arrow" style={ tooltipArrowStyle({
|
||||
theme,
|
||||
x: arrowX,
|
||||
y: arrowY,
|
||||
side: arrowPlacement
|
||||
})}>
|
||||
</div>
|
||||
</motion.div>
|
||||
}
|
||||
</AnimatePresence>
|
||||
</FloatingPortal>
|
||||
</Fragment>
|
||||
)
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@ This is an open collaborative project. We already have a variety of partners and
|
|||
* Write up key concepts and ideas. You can check out our [existing guide][guide] to see which ones could be extended or improved.
|
||||
* See our [concepts-todo](../../meta/concepts-todo.md) task list for open topics.
|
||||
* See our [claims-todo](../../meta/claims-todo.md) task list for open topics.
|
||||
* Read our [editor guide](../../meta/editing.md) on how to contribute or edit content on the website.
|
||||
* Proof edit articles and transcribe dialogs. Please [get in touch][contact] to find out more.
|
||||
|
||||
### If you like coding and designing
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@ import remarkGfm from 'remark-gfm'
|
|||
import rehypeSlug from 'rehype-slug'
|
||||
import rehypeAutolinkHeadings from 'rehype-autolink-headings'
|
||||
import wikiLinkPlugin from "remark-wiki-link-plus"
|
||||
import rehypeToc from "@jsdevtools/rehype-toc"
|
||||
|
||||
const isValidDate = dateObject => new Date(dateObject)
|
||||
.toString() !== 'Invalid Date';
|
||||
|
||||
const ObsidianAliases = defineNestedType(() => ({
|
||||
name: 'Obsidian',
|
||||
|
|
@ -22,6 +26,7 @@ const OtherPage = defineDocumentType(() => ({
|
|||
date: { type: "date", description: "This will be the publication date" },
|
||||
image: { type: "string" },
|
||||
description: { type: 'string' },
|
||||
keywords: { type: "string" },
|
||||
youtube: { type: "string" },
|
||||
podcast: { type: "string" },
|
||||
featured: { type: "boolean", default: false },
|
||||
|
|
@ -31,13 +36,19 @@ const OtherPage = defineDocumentType(() => ({
|
|||
computedFields: {
|
||||
date: {
|
||||
type: "date",
|
||||
resolve: (doc) => new Date(doc.date).toLocaleDateString('en-US', {
|
||||
weekday: "long", year: "numeric", month: "long", day: "numeric"
|
||||
})
|
||||
resolve: (doc) => {
|
||||
const formattedDate = new Date(doc.date).toLocaleDateString('en-US', {
|
||||
weekday: "long", year: "numeric", month: "long", day: "numeric"
|
||||
})
|
||||
return isValidDate(formattedDate) ? formattedDate : null
|
||||
}
|
||||
},
|
||||
created: {
|
||||
type: "date",
|
||||
resolve: (doc) => new Date(doc.created).toLocaleDateString('en-US')
|
||||
resolve: (doc) => {
|
||||
const formattedDate = new Date(doc.created).toLocaleDateString('en-US')
|
||||
return isValidDate(formattedDate) ? formattedDate : null
|
||||
}
|
||||
},
|
||||
}
|
||||
}));
|
||||
|
|
@ -48,8 +59,12 @@ export default makeSource({
|
|||
mdx: {
|
||||
remarkPlugins: [
|
||||
remarkGfm,
|
||||
[wikiLinkPlugin, { markdownFolder: 'content' }]
|
||||
[ wikiLinkPlugin, { markdownFolder: 'content' } ]
|
||||
],
|
||||
rehypePlugins: [rehypeSlug, rehypeAutolinkHeadings]
|
||||
rehypePlugins: [
|
||||
rehypeSlug,
|
||||
[ rehypeAutolinkHeadings, { behavior: 'wrap' } ],
|
||||
[ rehypeToc, { position: 'afterend' } ]
|
||||
]
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
import { useState, useEffect } from "react";
|
||||
|
||||
const useHeadingsObserver = () => {
|
||||
const [observer, setObserver] = useState(null);
|
||||
|
||||
const activeHeading = "";
|
||||
const timeoutId = null;
|
||||
|
||||
/* Runs only after the first render, in order to preserve the observer
|
||||
* between component rerenderings. */
|
||||
useEffect(() => {
|
||||
const observer = new IntersectionObserver(
|
||||
(entries) => {
|
||||
// highlight only the first intersecting heading in the ToC
|
||||
const firstIntersectingHeading = entries.find(
|
||||
(entry) => entry.isIntersecting
|
||||
);
|
||||
const newActiveHeading = firstIntersectingHeading?.target.id;
|
||||
if (!newActiveHeading || activeHeading === newActiveHeading) {
|
||||
return;
|
||||
}
|
||||
if (timeoutId) {
|
||||
clearTimeout(timeoutId);
|
||||
}
|
||||
timeoutId = setTimeout(() => {
|
||||
// remove highlight of the previous active heading in the ToC
|
||||
document
|
||||
.querySelector(`.toc-link[href="#${activeHeading}"]`)
|
||||
?.classList.remove("active");
|
||||
|
||||
// add highlight to the new active heading in the ToC
|
||||
document
|
||||
.querySelector(`.toc-link[href="#${newActiveHeading}"]`)
|
||||
?.classList.add("active");
|
||||
|
||||
activeHeading = newActiveHeading;
|
||||
}, 300);
|
||||
},
|
||||
{
|
||||
root: null,
|
||||
rootMargin: "-65px 0% -85% 0%", // 65px is a navbar height
|
||||
}
|
||||
);
|
||||
|
||||
setObserver(observer);
|
||||
|
||||
return () => {
|
||||
observer.disconnect();
|
||||
};
|
||||
}, []);
|
||||
|
||||
return observer;
|
||||
};
|
||||
|
||||
export default useHeadingsObserver;
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
export const YOUTUBE_REGEX = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
|
||||
|
||||
export const TWITTER_REGEX = /^https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(es)?\/(\d+)/;
|
||||
export const TWITTER_REGEX = /^https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(es)?\/(\d+)/;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -3,18 +3,17 @@
|
|||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"postbuild": "NODE_OPTIONS='--experimental-json-modules' node ./scripts/generate-sitemap.mjs",
|
||||
"export": "next export",
|
||||
"start": "next start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@floating-ui/react-dom-interactions": "^0.6.0",
|
||||
"@headlessui/react": "^1.4.1",
|
||||
"@heroicons/react": "^1.0.4",
|
||||
"@mdx-js/loader": "^2.0.0",
|
||||
"@mdx-js/react": "^2.0.0",
|
||||
"@next/mdx": "^12.1.0",
|
||||
"@silvenon/remark-smartypants": "^1.0.0",
|
||||
"@tailwindcss/typography": "^0.5.2",
|
||||
"contentlayer": "^0.1.2",
|
||||
"framer-motion": "^6.3.3",
|
||||
"gray-matter": "^4.0.3",
|
||||
"next": "^12.1.0",
|
||||
"next-contentlayer": "^0.1.2",
|
||||
|
|
@ -22,17 +21,22 @@
|
|||
"next-themes": "^0.1.1",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-player": "^2.10.0",
|
||||
"rehype-autolink-headings": "^6.1.1",
|
||||
"rehype-slug": "^5.0.1",
|
||||
"remark-gfm": "^3.0.0",
|
||||
"remark-slug": "^7.0.0",
|
||||
"remark-toc": "^8.0.0",
|
||||
"remark-wiki-link-plus": "^1.0.0"
|
||||
"react-lite-youtube-embed": "^2.2.2",
|
||||
"sharp": "^0.30.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.2.6",
|
||||
"globby": "^13.1.1",
|
||||
"hast-util-to-string": "^2.0.0",
|
||||
"postcss": "^8.3.5",
|
||||
"tailwindcss": "^3.0.0"
|
||||
"prettier": "^2.6.2",
|
||||
"rehype-autolink-headings": "^6.1.1",
|
||||
"rehype-toc": "^3.0.2",
|
||||
"rehype-slug": "^5.0.1",
|
||||
"remark-gfm": "^3.0.0",
|
||||
"remark-parse": "^10.0.1",
|
||||
"remark-wiki-link-plus": "^1.0.0",
|
||||
"tailwindcss": "^3.0.0",
|
||||
"unist-util-find": "^1.0.2"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
export default function () {
|
||||
return (
|
||||
<div className="flex flex-col items-center justify-center mt-12 sm:mt-20 xl:mt-36 space-y-8">
|
||||
<img src="/img/undraw_page_not_found.svg" alt="404" className="px-8 sm:px-0 max-w-xs m-auto" />
|
||||
<p className="text-lg">Page not found</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
@ -1,49 +1,30 @@
|
|||
import MdxPage from '../components/MDX';
|
||||
import { allOtherPages } from 'contentlayer/generated';
|
||||
import { useMDXComponent } from 'next-contentlayer/hooks';
|
||||
import siteConfig from "../config/siteConfig"
|
||||
import { allOtherPages } from "contentlayer/generated";
|
||||
|
||||
import MdxPage from "../components/MDX";
|
||||
import siteConfig from "../config/siteConfig";
|
||||
|
||||
export default function Page({ body, ...rest }) {
|
||||
const Component = useMDXComponent(body.code);
|
||||
const children = {
|
||||
Component,
|
||||
frontmatter: {
|
||||
...rest,
|
||||
date: rest.date === "Invalid Date" ? null : rest.date,
|
||||
created: rest.created === "Invalid Date" ? null : rest.created
|
||||
},
|
||||
};
|
||||
|
||||
// enable editing content only for claims, concepts, and guide for now
|
||||
const editUrl = ['claims', 'concepts', 'guide'].includes(rest._raw.sourceFileDir)
|
||||
? siteConfig.repoRoot + siteConfig.repoEditPath + rest._raw.sourceFilePath
|
||||
: null
|
||||
|
||||
return (
|
||||
<MdxPage children={children} editUrl={editUrl} />
|
||||
);
|
||||
export default function Page({ body, ...meta }) {
|
||||
return <MdxPage body={body} meta={meta} />;
|
||||
}
|
||||
|
||||
export const getStaticProps = async ({ params }) => {
|
||||
// All pages ending with .md in the /data folder are made available in allOtherPages
|
||||
// Based on the specified slug, the correct page is selected
|
||||
const urlPath = params.slug.join('/')
|
||||
const page = allOtherPages.find(p => p._raw.flattenedPath === urlPath)
|
||||
return { props: page }
|
||||
}
|
||||
const urlPath = params.slug.join("/");
|
||||
const page = allOtherPages.find((p) => p._raw.flattenedPath === urlPath);
|
||||
return { props: page };
|
||||
};
|
||||
|
||||
export const getStaticPaths = async () => {
|
||||
const paths = allOtherPages.map((page) => {
|
||||
// demo => [demo]
|
||||
// abc/demo => [abc,demo]
|
||||
const parts = page._raw.flattenedPath.split('/')
|
||||
return { params: { slug: parts } }
|
||||
})
|
||||
const parts = page._raw.flattenedPath.split("/");
|
||||
return { params: { slug: parts } };
|
||||
});
|
||||
|
||||
return {
|
||||
paths,
|
||||
fallback: false,
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { DefaultSeo } from 'next-seo'
|
|||
import { ThemeProvider } from 'next-themes'
|
||||
|
||||
import '../styles/global.css'
|
||||
import "react-lite-youtube-embed/dist/LiteYouTubeEmbed.css";
|
||||
import siteConfig from '../config/siteConfig.js'
|
||||
import Layout from '../components/Layout'
|
||||
import * as gtag from '../lib/gtag'
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:29d50bf63165133404309fea97324eff18a7cd86a3172d39e0c3d0cd635b62fe
|
||||
size 141203
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:df3e54f72d5eea93eda159366a0c5d561db0e259c3125c3d49e20c3da433b8ea
|
||||
size 1107869
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:03740cba37002918969b970ee86f2b9ec69583e51124e1d3b4488a696ff142f0
|
||||
size 462200
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e235633d023105e6d7662c2a0b437fa270ca7e868fb2df2889ac02861ba9e15f
|
||||
size 493531
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d7cc8019a1b120ff4dd6ce900f788ed17e8cf5dd6e38f81c4a020c5d3387a806
|
||||
size 368957
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:18bf3b1fb17ea49bd7a616d992245f40e34eba33e5e49739c1bbe32cc2970054
|
||||
size 60178
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4d4728d0239c3103ca7cd6da93a0ad6d2f69f3df0f6bebeac72e44bf36105e0b
|
||||
size 27545
|
||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 24 KiB |
|
|
@ -0,0 +1,45 @@
|
|||
import { writeFileSync } from "fs";
|
||||
import { globby } from "globby";
|
||||
import prettier from "prettier";
|
||||
|
||||
async function generate() {
|
||||
const prettierConfig = await prettier.resolveConfig("./.prettierrc.js");
|
||||
const pages = await globby([
|
||||
"pages/!(\\[**])*.js*",
|
||||
"content/**/*.md*",
|
||||
"!pages/_*.js*",
|
||||
"!pages/api",
|
||||
"!pages/404.js*",
|
||||
]);
|
||||
|
||||
const sitemap = `
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
${pages
|
||||
.map((page) => {
|
||||
const path = page
|
||||
.replace("pages", "")
|
||||
.replace("content", "")
|
||||
.replace(/.jsx*/, "")
|
||||
.replace(/.mdx*/, "");
|
||||
const route = path === "/index" ? "" : path;
|
||||
return `
|
||||
<url>
|
||||
<loc>${`https://web3.lifeiteself.us${route}`}</loc>
|
||||
</url>
|
||||
`;
|
||||
})
|
||||
.join("")}
|
||||
</urlset>
|
||||
`;
|
||||
|
||||
const formatted = prettier.format(sitemap, {
|
||||
...prettierConfig,
|
||||
parser: "html",
|
||||
});
|
||||
|
||||
// eslint-disable-next-line no-sync
|
||||
writeFileSync("public/sitemap.xml", formatted);
|
||||
}
|
||||
|
||||
generate();
|
||||
|
|
@ -15,11 +15,18 @@
|
|||
}
|
||||
|
||||
/* OTHERS */
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
.c-heading a {
|
||||
@apply transition-colors no-underline break-normal;
|
||||
}
|
||||
|
||||
.c-heading a:hover {
|
||||
@apply text-yellow-li;
|
||||
}
|
||||
|
||||
/* bg-neutral-800
|
||||
@apply bg-slate-800
|
||||
*/
|
||||
|
|
@ -31,3 +38,81 @@ body {
|
|||
.extra-small {
|
||||
font-size: 0.50rem;
|
||||
}
|
||||
|
||||
/* tooltip fade-out clip */
|
||||
.tooltip-body::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 3.6rem; /* multiple of $line-height used on the tooltip body (defined in tooltipBodyStyle) */
|
||||
height: 1.2rem; /* ($top + $height)/$line-height is the number of lines we want to clip tooltip text at*/
|
||||
width: 10rem;
|
||||
background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 100%);
|
||||
}
|
||||
|
||||
/* rehype-toc classes */
|
||||
/* nav element */
|
||||
.toc {
|
||||
@apply
|
||||
hidden
|
||||
lg:block
|
||||
w-[20rem]
|
||||
my-12
|
||||
pt-12
|
||||
px-8
|
||||
fixed
|
||||
top-16
|
||||
bottom-0
|
||||
right-[max(2rem,calc(50%-40rem+2rem))]
|
||||
overflow-y-auto
|
||||
/* border-l */
|
||||
/* border-slate-800 */
|
||||
}
|
||||
|
||||
/* toc title */
|
||||
.toc::before {
|
||||
position: absolute;
|
||||
content: "On this page";
|
||||
@apply text-white text-xl font-semibold top-1
|
||||
}
|
||||
|
||||
/* list (ol) element */
|
||||
.toc-level {
|
||||
@apply list-none p-0;
|
||||
}
|
||||
|
||||
.toc-level:not(.toc-level-1) {
|
||||
@apply pl-2
|
||||
}
|
||||
|
||||
/* list item (li) element */
|
||||
.toc-item {
|
||||
@apply leading-3;
|
||||
}
|
||||
|
||||
.toc-item-h1 {
|
||||
@apply p-0;
|
||||
}
|
||||
|
||||
/* link (a) element */
|
||||
.toc-link {
|
||||
@apply transition-colors relative text-sm text-slate-400 no-underline break-normal;
|
||||
}
|
||||
|
||||
.toc-link:not(.active) {
|
||||
@apply hover:text-white;
|
||||
}
|
||||
|
||||
.toc-link.active {
|
||||
@apply text-yellow-li;
|
||||
}
|
||||
|
||||
.toc-link::before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
@apply transition-opacity opacity-0 border-l border-yellow-li h-[110%] -top-[5%] -left-[0.5rem];
|
||||
}
|
||||
|
||||
.toc-link.active::before {
|
||||
@apply opacity-100;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
import { unified } from 'unified'
|
||||
import remarkParse from 'remark-parse'
|
||||
import { toString } from 'mdast-util-to-string'
|
||||
|
||||
|
||||
// get first paragraph found in the document
|
||||
const documentExtract = (md) => {
|
||||
const mdast = unified().use(remarkParse).parse(md);
|
||||
let paragraph = mdast.children.find((node) => node.type === "paragraph");
|
||||
return toString(paragraph);
|
||||
}
|
||||
|
||||
export default documentExtract;
|
||||
Loading…
Reference in New Issue