Web3 Architecture and How It Compares to Traditional Web Apps
Venture capitalist Chris Dixon ignited a Twitter debate last week with a thread about “Why Web 3 matters.” Dixon, a partner at Andreessen Horowitz (a16z), is a big believer that “the next wave of computing innovation will be driven by crypto.” His definition of “Web 3” (a term more commonly styled as “Web3”) revolves around blockchain and cryptocurrency technologies — a market that a16z is heavily invested in.
Web3, according to Dixon, is “the internet owned by the builders and users, orchestrated with tokens.” He positions this new era as a kind of antidote to Web 2.0 (2005-2020), which became dominated by centralized platforms like Facebook, Google and Amazon. In Web3, he says, “ownership and control is decentralized.”
Dixon didn’t go into detail about what Web3 will look like from a web architecture perspective — other than saying it’ll all be built on blockchains, which he rather oddly defines as “special computers that anyone can access but no one owns.” Most people think of a blockchain as more like a database than a computer. Wikipedia has a good, down-to-earth description: “A blockchain is a growing list of records, called blocks, that are linked together using cryptography.” Dixon later clarified that he was referring to “programmable blockchains like Ethereum,” which he says “are virtual computers that run code and keep state.”
Even if we accept that some blockchains are computers, the fact is they’re not very efficient computers at this point in time — Ethereum is notorious for its slow processing (of transactions) and inability to scale. But that aside, what is the rest of the architecture of Web3? More importantly, how will developers build applications on it?
Web3 Application Architecture
Preethi Kasireddy, who worked for a16z over 2013-15 and was an engineer at Coinbase from 2016-17, recently published a blog post that explains the “architecture of Web 3.0 applications.” She too focuses on the Ethereum blockchain, which has been the main platform for so-called “dapps” (decentralized applications) over the past several years.
According to Kasireddy, backend programming for a dapp is entirely different than for a traditional web application. In Web3, she writes, “you can write smart contracts that define the logic of your applications and deploy them onto the decentralized state machine [i.e. the Ethereum blockchain].” Web servers and traditional databases, in this paradigm, are no longer needed — since everything is done on, or around, the blockchain.
As for the frontend, that “pretty much stays the same, with some exceptions,” writes Kasireddy. She lays out the simplified Web 3 application architecture in this diagram:
So far, so good. But then she gets into some of the complications of blockchains. For a start, dapps have difficulty scaling up, because the cost of running on Ethereum goes up the more your application is used. Each transaction on Ethereum requires a fee to be paid, called “gas,” and that fee (like everything in cryptocurrency) is subject to extreme price volatility.
There are also complications when it comes to “signing” transactions, which is the cryptographic process that keeps blockchains secure. You need a tool like MetaMask to handle this.
But wait, there’s more (complication). A storage solution is required because, writes Kasireddy, “anyone who has built apps on Ethereum knows that storing everything on the blockchain gets really expensive, really fast.” So what you need is “a decentralized off-chain storage solution, like IPFS or Swarm.” Interplanetary File System (IPFS), is a grandly titled protocol and decentralized data storage system that leverages a peer-to-peer (p2p) network architecture, as explained in a recent article here on The New Stack.
Okay, so we seem to be adding additional pieces to the previously simple Web 3 architecture. Kasireddy discusses a few more such additions in her post, but to cut a long story short, this is the diagram that we end up with:
That’s a much more complicated architecture than a traditional web application. Perhaps this explains why there are, as yet, so few mainstream dapps — they’re so hard to build!
Now, I want to note that some Web3 developers are well aware of these issues and they are working hard on solving them. Nader Dabit is a developer I admire who is open about what he terms “the drawbacks” of Web3. Dabit, who I interviewed last August when he was a senior developer advocate at Amazon Web Services (AWS), now works for a Web3 company called Edge & Node. In a recent Twitter thread, he admitted that “there are still many things that cannot yet be built with the existing [Web3] solutions that are available, therefore forcing progressive decentralization or just using centralized solutions for the time being or indefinitely.”
The Problem with Web3 Is… Dapps
As well as being difficult to build, dapps have a poor user experience compared to traditional web applications.
I spent a year reporting on blockchain technology with an independent blog I ran in 2018, called Blocksplain (it’s no longer online). This publication specifically focused on dapps, rather than the speculation aspects of crypto. So over that year, I tested out a whole lot of dapps. In almost all cases, the apps were difficult to use, slow, and not very reliable. In one case, when testing out a blockchain-based Twitter alternative, I inadvertently locked myself out of my account due to an issue with MetaMask. I never did find a way to log back in. I ended 2018 completely underwhelmed by blockchain and ready to move onto richer pastures (as it turned out, I reverted back to web development, which was — and still is — experiencing a renaissance).
Of course, blockchain technology has evolved since 2018, but even so, I am not aware of any breakthrough mainstream dapps in 2021. Plus, as André Staltz pointed out, there seem to be no current examples of dapps that are primarily “about something not related to money.” Staltz, by the way, knows all about decentralized apps — he’s the founder of a non-blockchain decentralized social network called Manyverse, which I wrote about earlier this year.
I am not suggesting that dapps don’t hold some promise, or that the Web3 architecture that Kasireddy outlined is doomed. But the reality is, there are considerable challenges with blockchains — especially when it comes to developing applications on top of them. The architecture is too complex, there are glaring technical limitations (as pointed out by Dabit), platforms like Ethereum are slow and expensive (not to mention the environmental impacts), and there’s no evidence yet that mainstream users even want blockchain applications.
The vision that Chris Dixon articulated in his Twitter thread is very enticing — who wouldn’t want to “own a piece of the internet,” as he put it. I’m also loath to bet against someone as smart as Dixon, who I’m familiar with from my days covering the Web 2.0 era (he even featured in a conference my company ReadWriteWeb put on in 2011). He may, in time, turn out to be right about Web3.
But as of 2021, I’m not convinced. From a web architecture and performance point of view, traditional “centralized” web applications are far superior to dapps (or other decentralized apps, for that matter). There needs to be considerable technical improvement to the dapps architecture before it’s even in the same ballpark as traditional web apps.