Many people have already responded to Moxie, but I want to focus on the implications for the Web3 space. I was hoping to keep this to a Twitter thread, but I’m not Adam Cochran. This was a good excuse to write on Mirror for the first time.
Moxie’s piece captures the essence of some of the thoughts I (and many others) have had recently about some of the key tensions in the Web3 world. I don’t necessarily agree with the Signal founder’s conclusions, but I do think his/her views are worth taking seriously.
This is a more thoughtful and precise critique than the one Jack made earlier. Dan Finlay points out that it is non-adversarial, genuine, and constructive.
First, the key points:
More and more people are choosing not to run their own servers, even nerds. Organisations that build software don’t want to run their own servers either.
Most of the internet runs on AWS, as well as blockchains (through Infura and Alchemy). While this may be true, as Vitalik points out, it might not be the most accurate way to think about the issue, and it might not even be a problem as long as users have good tools to verify that the data they’re receiving is being correctly validated.
A protocol moves much more slowly than a platform.
A lot of people in crypto struggle to come to terms with the fact that starting out in a more centralized, structured (potentially even hierarchical) way can actually enhance productivity and increase the pace of development. Many teams hedge by making promises for decentralization down the line, but the problem is that many of these teams will bump up against a compelling source of friction, which ironically comes as a natural consequence of their success: users like and prioritize fast, seamless UX and a company that can deliver on features quickly. Shipping high quality fast > decentralization.
Most dApps rely on either Infura or Alchemy to interact with the blockchain. In reality, even when you use a wallet like MetaMask to connect a dApp to the blockchain, the dApp is still interacting with Infura through your wallet!
I think most people in crypto should already know this, but worth spelling out again for those who don’t. More importantly:
These client APIs do not use any verification methods to check the accuracy of information concerning the blockchain state or responses. Furthermore, the results provided are not signed.
And regarding privacy:
These companies can see almost all read requests from almost all users in almost all dApps.
Summarizing the last two points: when you use your MetaMask (or any similar) crypto wallet, you trust Infura to send you the right data, and to do so you also let Infura see all the requests you make via their API. The next point should make sense as a matter of consequence:
If your NFT is removed from OpenSea, it will also be removed from your wallet. It doesn’t matter that your NFT is still on the blockchain because the wallet (and everything else in the ecosystem) is using the OpenSea API to display NFTs.
In essence, your MetaMask is just a way of viewing data that is being relayed from the blockchain by centralised third parties, such as Infura and OpenSea. If OpenSea stops relaying that data, then, from a mainstream user’s perspective, the corresponding NFT would effectively be gone. Obviously, that’s not really the case, but it’s worth bearing in mind when considering people’s reasons for interacting with NFTs (which we’ll come back to shortly).
Though the technologies behind cryptocurrency and blockchain tend towards centralization, this is only because builder are interested in the premise of these technologies. shortcuts have been taken in order to allow building “now,” but this does not reflect a lack of interest from builders.The only amount of decentralization people want is the minimum amount needed in order for something to exist.
The people who are flipping NFTs (non-fungible tokens) are only interested in making money, not in the underlying blockchain technology that allows for distributed trust models and secure payment methods.
People are buying NFTs on OpenSea mostly because they think they will be able to sell them later at a higher price, not because they care about the artists or creators. A small number of people are making a lot of money doing this, while most other people are losing money.
There are two main conclusions from the text: 1. We should design systems that can distribute trust without requiring the infrastructure to be distributed as well. 2. We should try to reduce the burden of building software.
In summarized format, that all looks a bit morose, although certainly pointed. So first, in response, why I’m optimistic:
- By now many (most?) people building at the protocol layer are aligned on the idea that people don’t want to run their own servers and that blockchains are better as data availability machines than as execution engines. Ethereum is building in this direction through its rollup-centric roadmap, Celestia is prioritizing this direction, etc.
- Moreover, light clients will allow for most people to only “lightly” verify state when they interact with the blockchain. Again, the latest iteration of the ethereum roadmap is very conscious of this. Lots of chatter on this recently with good highlights from Suzuha / Fiskantes / Zaki, and I’m excited about Rick Dudley’s Laconic Network.
- Also, and this is where Moxie’s claim that little cryptography is involved in “crypto” befuddles a bit—there is a huge amount of effort going into building ZK systems that will allow regular users to rely on cryptography to verify blockchain state. This is undeniably an important pillar of crypto going forward and a real advance in the state of cryptography.
- Finally, even at the infrastructure layer, there are projects that aim to decentralize the stack from the bottom up – projects like The Graph and Pocket Network, the latter being a direct decentralized competitor to Infura and Alchemy. I want to put a pin in this one, however, as I’m not entirely convinced that this is a scalable answer (not really talking about technically scalable, but more so socially).
The text is saying that it’s possible to have different levels of decentralization for different parts of a project, and that we should aim for a minimum level of decentralization using data availability chains, ZK rollups, and light clients.
There are a few things to think about here. First, the idea that people don’t want to run their own servers is still important. This is because most people don’t care about how decentralized the technology is, unless they feel the direct consequences of centralization when something goes wrong. (I’m not talking about most people in crypto, I’m talking about the majority of humans.)
Impressions of web3
I’m a cryptographer, but I’m not interested in “crypto.” I would rather see a meme about how “crypto” used to mean “cryptography” than the latest NFT drop.
I don’t understand why people are excited about moving all aspects of life into an instrumented economy.
Even though I haven’t seen anything that would make me a believer in web3, I decided to explore it more thoroughly to see if I’m missing something.
How I think about 1 and 2
Web3 is a term that is difficult to define, which makes it hard to set specific goals for it. However, the general idea is that web1 was decentralized, web2 centralized everything into platforms, and web3 will decentralize everything again. Web3 should provide the same level of functionality as web2, but without being centralized.
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. The premise for web1 was that everyone on the internet would be both a publisher and consumer of content as well as a publisher and consumer of infrastructure.
We’d all have our own web server with our own web site, our own mail server for our own email, our own finger server for our own status messages, our own chargen server for our own character generation. However – and I don’t think this can be emphasized enough – that is not what people want. People do not want to run their own servers.
Even nerds do not want to run their own servers at this point. Even organizations building software full time do not want to run their own servers at this point. If there’s one thing I hope we’ve learned about the world, it’s that people do not want to run their own servers. The companies that emerged offering to do that for you instead were successful, and the companies that iterated on new functionality based on what is possible with those networks were even more successful.
- A protocol moves much more slowly than a platform. After 30+ years, email is still unencrypted; meanwhile WhatsApp went from unencrypted to full e2ee in a year. People are still trying to standardize sharing a video reliably over IRC; meanwhile, Slack lets you create custom reaction emoji based on your face.
This isn’t a funding issue. If something is truly decentralized, it becomes very difficult to change, and often remains stuck in time. That is a problem for technology, because the rest of the ecosystem is moving very quickly, and if you don’t keep up you will fail. There are entire parallel industries focused on defining and improving methodologies like Agile to try to figure out how to organize enormous groups of people so that they can move as quickly as possible because it is so critical.
When the technology itself is more conducive to stasis than movement, that’s a problem. A sure recipe for success has been to take a 90’s protocol that was stuck in time, centralize it, and iterate quickly.
There is a new internet protocol called web3 that promises to be different from the current internet protocol. In order to understand what the future may hold, I decided to build a couple of applications and create a digital token.
Making some distributed apps
I created a dApp called Autonomous Art that lets anyone mint a token for an NFT by making a visual contribution to it. The cost of making a visual contribution increases over time, and the funds a contributor pays to mint are distributed to all previous artists (visualizing this financial structure would resemble something similar to a pyramid shape). At the time of this writing, over $38k USD has gone into creating this collective art piece.
I made a dApp called First Derivative that allows you to create, discover, and exchange NFT derivatives. NFT derivatives are objects that track an underlying NFT, similar to how financial derivatives track an underlying asset.
Both apps gave me a feeling for how the space works. To be clear, there is nothing particularly “distributed” about the apps themselves: they’re just normal react websites. The “distributedness” refers to where the state and the logic/permissions for updating the state live: on the blockchain instead of in a “centralized” database.
It feels strange to me that people who are talking about cryptocurrencies do not pay attention to the client/server interface. They will talk about how a blockchain works with distributed trust and leaderless consensus, but they do not mention that the clients cannot participate in these mechanics. All of the diagrams for the networks are of servers and the trust model is based on the servers. It is not possible for mobile devices or browsers to be peers with the current design of blockchain.
Nowadays, we rely mostly on mobile devices rather than personal computers. This means that there is a clear distinction between servers and clients, with the latter unable to carry out the functions of the former. I believe that this is a very important distinction, and ethereum acknowledges this by calling servers “clients”. However, there is no word for the actual untrusted client/server interface that will have to exist somewhere. If ethereum is successful, there will be billions more clients than servers.
A dApp, or decentralized application, needs to interact with a blockchain in order to function. This is because the dApp needs to be able to modify or render state, which is information that is stored on the blockchain. However, it is not possible to interact with the blockchain directly from a client, such as a mobile device or desktop browser. This is because the blockchain cannot be stored locally on a device. Instead, the only way to interact with the blockchain is through a node that is running on a remote server.
Making an NFT
Instead, they store a cryptographic hash of the image data off-chain, which allows the image to be displayed without having to be sent on-chain each time. I also wanted to create a more traditional NFT. NFTs are often associated with images and digital art, however the data is not stored on the blockchain. If it were, it would be very expensive. Instead, a cryptographic hash of the data is stored off-chain. This allows the image to be displayed without having to be sent on-chain each time.
NFTs don’t store data on the blockchain. Instead, they have a URL that links to the data. I was surprised that there is no hash commitment for the data at the URL. There are many NFTs on popular marketplaces that are worth tens, hundreds, or millions of dollars, and often the URL just goes to a VPS running Apache. This means that anyone with access to that machine or anyone who buys that domain name in the future can change the image, title, description, etc. for the NFT whenever they want. There is nothing in the NFT specification that says what the image should be or that allows you to confirm that something is the correct image.
Recreating this world
They’re all platforms. Why does it seem strange to the author that Ethereum is built on platforms, given the history of web1 to web2?
The web3 protocols are very slow to evolve, which can be a problem when building things. For example, when First Derivative was created, it would have been great to be able to price minting derivatives as a percentage of the underlying value. However, that data isn’t available on the blockchain, it’s only available through an API that OpenSea provides. People are excited about NFT royalties because 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 outside of the blockchain. The speed at which centralized platforms are able to iterate and improve is already outpacing the speed of the distributed protocols, and this is leading to more control and power being consolidated into a few platforms.
The text is discussing how the author believes that it is not surprising that people’s wallets show the same NFTs as OpenSea. The author goes on to say that OpenSea is not simply a “view” that can be replaced because it has been constantly improving itself.
Leave a Reply