My first impressions of web3
Despite considering myself a cryptographer, I have not found myself particularly drawn to “crypto.” I don’t think I’ve ever actually said the words “get off my lawn,” but I’m much more likely to click on Pepperidge Farm Remembers flavored memes about how “crypto” used to mean “cryptography” than ...
moxie.org
Just going to copy past some select bits here instead of using quote blocks to summarize. Read the full thing at the link.
TLDR is that due to how NFTs are useless alone and they need another centralized platform to access the content they render, they end up recreating the same centralized systems that constitute web2, but with less efficiency. Most crypto bros either don't know enough about the platforms to understand, or they don't care because they just want to grift people.
Quotes begin (there's a lot more technical details and insights in the full article, so I recommend you read it):
web3 is a somewhat ambiguous term, which makes it difficult to rigorously evaluate what the ambitions for web3 should be, but the general thesis seems to be that web1 was decentralized, web2 centralized everything into platforms, and that web3 will decentralize everything again. web3 should give us the richness of web2, but decentralized.
It's probably good to have some clarity on why centralized platforms emerged to begin with, and in my mind the explanation is pretty simple:
- People don't want to run their own servers, and never will.
- A protocol moves much more slowly than a platform.
With the shift to mobile, we now live firmly in a world of clients and servers – with the former completely unable to act as the latter – and those questions seem more important to me than ever. Meanwhile, ethereum actually refers to servers as "clients," so there's not even a word for an actual untrusted client/server interface that will have to exist somewhere, and no acknowledgement that if successful there will ultimately be billions (!) more clients than servers.
A server! But, as we know, people don't want to run their own servers. As it happens, companies have emerged that sell API access to an ethereum node they run as a service, along with providing analytics, enhanced APIs they've built on top of the default ethereum APIs, and access to historical transactions. Which sounds… familiar. At this point, there are basically two companies. Almost all dApps use either Infura or Alchemy in order to interact with the blockchain. In fact, even when you connect a wallet like MetaMask to a dApp, and the dApp interacts with the blockchain via your wallet, MetaMask is just making calls to Infura!
Partisans of the blockchain might say that it's okay if these types of centralized platforms emerge, because the state itself is available on the blockchain, so if these platforms misbehave clients can simply move elsewhere. However, I would suggest that this is a very simplistic view of the dynamics that make platforms what they are.
Making an NFT
Instead of storing the data on-chain, NFTs instead contain a URL that points to the data. What surprised me about the standards was that there's no hash commitment for the data located at the URL. Looking at many of the NFTs on popular marketplaces being sold for tens, hundreds, or millions of dollars, that URL often just points to some VPS running Apache somewhere. Anyone with access to that machine, anyone who buys that domain name in the future, or anyone who compromises that machine can change the image, title, description, etc for the NFT to whatever they'd like at any time (regardless of whether or not they "own" the token). There's nothing in the NFT spec that tells you what the image "should" be, or even allows you to confirm whether something is the "correct" image.
So as an experiment, I made an NFT that changes based on who is looking at it, since the web server that serves the image can choose to serve different images based on the IP or User Agent of the requester.
After a few days, without warning or explanation, the NFT I made was removed from OpenSea (an NFT marketplace)
The takedown suggests that I violated some Term Of Service, but after reading the terms, I don't see any that prohibit an NFT which changes based on where it is being looked at from, and I was openly describing it that way.
What I found most interesting, though, is that after OpenSea removed my NFT, it also no longer appeared in any crypto wallet on my device. This is web3, though, how is that possible?
[...]
All this means that if your NFT is removed from OpenSea, it also disappears from your wallet. It doesn't functionally matter that my NFT is indelibly on the blockchain somewhere, because the wallet (and increasingly everything else in the ecosystem) is just using the OpenSea API to display NFTs, which began returning 304 No Content for the query of NFTs owned by my address!
Recreating this world
Given the history of why web1 became web2, what seems strange to me about web3 is that technologies like ethereum have been built with many of the same implicit trappings as web1. To make these technologies usable, the space is consolidating around… platforms. Again. People who will run servers for you, and iterate on the new functionality that emerges. Infura, OpenSea, Coinbase, Etherscan.
Likewise, the web3 protocols are slow to evolve. When building First Derivative, it would have been great to price minting derivatives as a percentage of the underlying's value. That data isn't on chain, but it's in an API that OpenSea will give you. People are excited about NFT royalties for the way that they can benefit creators, but royalties aren't specified in ERC-721, and it's too late to change it, so OpenSea has its own way of configuring royalties that exists in web2 space. Iterating quickly on centralized platforms is already outpacing the distributed protocols and consolidating control into platforms.
"It's early days still" is the most common refrain I see from people in the web3 space when discussing matters like these. In some ways, cryptocurrency's failure to scale beyond relatively nascent engineering is what makes it possible to consider the days "early," since objectively it has already been a decade or more.
However, even if this is just the beginning (and it very well might be!), I'm not sure we should consider that any consolation. I think the opposite might be true; it seems like we should take notice that from the very beginning, these technologies immediately tended towards centralization through platforms in order for them to be realized [...]
When you think about it, OpenSea would actually be much "better" in the immediate sense if all the web3 parts were gone. It would be faster, cheaper for everyone, and easier to use. For example, to accept a bid on my NFT, I would have had to pay over $80-$150+ just in ethereum transaction fees. That puts an artificial floor on all bids, since otherwise you'd lose money by accepting a bid for less than the gas fees. Payment fees by credit card, which typically feel extortionary, look cheap compared to that. OpenSea could even publish a simple transparency log if people wanted a public record of transactions, offers, bids, etc to verify their accounting.
I don't think it would have taken off because this is a gold rush. People have made money through cryptocurrency speculation, those people are interested in spending that cryptocurrency in ways that support their investment while offering additional returns, and so that defines the setting for the market of transfer of wealth.
The people at the end of the line who are flipping NFTs do not fundamentally care about distributed trust models or payment mechanics, but they care about where the money is.
If we do want to change our relationship to technology, I think we'd have to do it intentionally. My basic thoughts are roughly:
- We should accept the premise that people will not run their own servers by designing systems that can distribute trust without having to distribute infrastructure. This means architecture that anticipates and accepts the inevitable outcome of relatively centralized client/server relationships, but uses cryptography (rather than infrastructure) to distribute trust. One of the surprising things to me about web3, despite being built on "crypto," is how little cryptography seems to be involved!
- We should try to reduce the burden of building software. At this point, software projects require an enormous amount of human effort. Even relatively simple apps require a group of people to sit in front of a computer for eight hours a day, every day, forever. This wasn't always the case, and there was a time when 50 people working on a software project wasn't considered a "small team." As long as software requires such concerted energy and so much highly specialized human focus, I think it will have the tendency to serve the interests of the people sitting in that room every day rather than what we may consider our broader goals. I think changing our relationship to technology will probably require making software easier to create, but in my lifetime I've seen the opposite come to pass. Unfortunately, I think distributed systems have a tendency to exacerbate this trend by making things more complicated and more difficult, not less complicated and less difficult.