I often see various claims on social media about what blockchains can be used for. From settlement and real-world asset management to AI and permanent monkey jpeg storage. For an uninformed onlooker, not even world hunger is out of the equation. I made this blog to share my thoughts on blockchain-related topics. Lately, I’ve noticed a trend of people trying to fit blockchains into places where they really shouldn’t be.
Even though I try to avoid discourse on such topics for my sanity, I can’t stop from occasionally engaging with it on Twitter.
So, let’s answer the question of why not.
(this section glosses over a lot of details and is a gross oversimplification. if you feel like some things need elaboration, lmk)
Most people fundamentally misunderstand what blockchains are. To describe blockchains, I like to use this quote from Artem Vorotnikov’s now defunct blog:
Blockchain is a byzantine-fault-tolerant database with high replication factor.
Translating from nerdspeak, Ethereum is an open database that lives on a potentially infinite number of computers for an endless amount of time, where no single actor can bring its operations to a standstill.
Users’ ability to run their nodes is critical to keeping a blockchain network healthy. Over-reliance on RPC endpoints is really bad, as you can easily get censored, lied to, or tracked (shout-outs to Metamask for bringing these problems into the zeitgeist!). Better light clients, the portal network, and state expiry (link might be outdated) are all efforts to make it less painful for users to run their nodes. Considering all these properties, we conclude that blockchains are inherently expensive, low throughput, high latency, and high availability databases.
Yes, layer 2s exist to mitigate some of these negatives. But they are not a silver bullet. They allow blockchains to flourish at doing what they’re best at. Being trustless settlement layers.
Why do we even use blockchains in the first place? The core idea behind them was to enable trustless money settlement. Once Ethereum became a thing, we got expressive smart contracts. This innovation birthed DeFi and allowed us to build trustless financial products.
The ability to have immutable programs that run forever tickled the imagination of developers worldwide. And it’s easy to see why. The concept of having autonomous code that doesn’t require human intervention to maintain is nothing short of genius. But, in this infinite garden of possibilities, we often forget what blockchains are suitable for.
Blockchains are only useful for facilitating settlement between distrusting parties. This does not exclude non-financial transactions. ENS is a great example; trustless domain names with tamper-resistant name records. But as we introduce more layers of trust, they begin to make less sense.
This does not also mean that you should use a blockchain when trust and validity are at a premium. The BitTorrent protocol is the most widespread decentralized network. And it accomplishes this without a blockchain(No, Justin Sun’s BitTorrent scam coin has nothing to do with the protocol) or a monetary incentive for its users. Users support the network via seeding because it is helpful to them. If you can build a protocol without the blockchain, do it.
Unfortunately, most non-financial applications built on-chain right now are different from ENS. Where the only benefit to building the app on-chain is that it’s easier to commercialize.
A great example is social media. We live in an age where most online interactions happen via centralized Web2 platforms. Decentralized replacements are starting to become serious competitors. Large conglomerates like Meta are beginning to embrace this future (Skipping over Meta’s evilness for brevity’s sake). Threads will be acting like a giant mastodon instance on the fediverse. This contrasts with another very popular competitor in the cryptocurrency sphere, Lens.
If you haven’t been living under a cave, you probably heard that Reddit is changing its API pricing and limiting its features. This was widely welcomed as an asshole move by everyone except Reddit staff, who, in a disaster AMA, defamed their community and went on a rampage that was surely a nightmare for their PR team.
Subreddits began shutting down in response, moving to decentralized fediverse/activitypub-powered alternatives like kbin and Lemmy. I think this was a great move and something we will continue seeing.
The social media business model relies on serving your user content they don’t want to see (i.e., ads). As corporate greed and investor expectations rise, companies will make the social media experience more and more unbearable, leading to the inevitable rise of activitypub as the protocol for social media.
However, most of the crypto space believes that on-chain solutions are the way to go.
While yes, it is true that the API fees are exorbitant, there are better ways to go than tying social media together with crypto and blockchains for multiple reasons.
Reddit is a for-profit company taking VC money in exchange for equity. We would get the same outcome if we structured it similarly but with smart contracts.
Lens has a similar design principle as activitypub. Build a generic messaging layer, and let users build social media on top. On its own, this is a good idea. What makes it worse is having users post said messages on-chain.
To interact with other lens users, a user must create a profile. A profile is created by the user minting an NFT, which becomes their profile. Anyone with the NFT corresponding to the profile can control it, so migrating to a new wallet is relatively easy. The Ethereum account holding the NFT can:
- Create posts.
- Mirror, which is the Lens equivalent of retweets.
- Follow other profiles.
- Delegate control of their account.
The Lens is also very composable. Just like Activitypub, you aren’t limited to Twitter microblogging format. Besides applications like lenster, the microblogging platform, there’s also lenstube, the youtube/TikTok clone, as well as things like memester, an on-chain meme generator (because of course, this exists).
The Lens is built on top of a Polygon. An alt L1 that claims to be an L2 (which it isn’t) takes a similar approach to BSC regarding scaling. Increase the block time/gas limit and claim high tps (to their credit, they are much more reasonable than bsc about it). Plenty of things are wrong with this approach, but the #1 thing is that it isn’t scalable.
The Lens is aware of this, so they’ve taken multiple measures to enable a Lens to scale beyond polygons 50 TPS. First, they built their optimistic rollup for Lens called Momoka. Very little documentation exists on how it works, but from my understanding:
- Users send profile activities to Momoka.
- Activities are rolled up and posted on the chain.
- Users can engage in a fraud-proving game if the sequencer posts invalid activities.
Second, posts are kept from the chain. They’re stored off-chain via arweave. Granted, doing this off-chain is much better than storing said data on-chain, but using weave is amongst the worst options for off-chain DA they could have picked. We will get to why this is later in the article.
All of these features sound great, and they are! Unfortunately, the Lens is fundamentally limited due to being on-chain.
Lens is currently gated. To create a profile that can interact with others, you must be allow listed. Twitter, in blockchain terms, processes 25k TPS. Due to this, the only way lens could function nominally is if it rate limits and if indexers are used. In other words, it is impossible to scale Lens without sacrificing decentralization.
This approach is entirely against the ethos of blockchains and why we even made them in the first place. If one has to trust a third party, why use a blockchain in the first place?
Additionally, users have to deal with having a wallet and keeping their keys secure. Yes, things like AA and social recovery will make this process painless, but this overestimates how much people care about social media. While this UX might be fine for us, the enthusiasts, would an average teenage girl want to deal with things like setting up metamask and backing up a seedphrase? If you lose your Mastodon or Instagram password, you can recover it trivially via email. You can wave goodbye to your lens profile if you lose your seed phrase.
It’s best to look at the motivations behind on-chain social. The main arguments are:
- Web2 social media is censored and influenced by algos. Users get arbitrarily banned.
- Web2 social media doesn’t respect the user. Data is sold and harvested. Anti-features are constantly added.
- Existing alternatives only work if they are sufficiently decentralized.
These are fair points, but how Web3 alternatives would solve some of these problems more effectively is unclear.
Censorship on traditional social media platforms is a problem that needs to be solved. User accounts get arbitrarily blocked, shadowbanned, etc. This is one area where I consider Web3 social on par with federated alternatives. If frontends start censoring users, the users can migrate to a new one. Since all profile data is on-chain in some form, no account migration is necessary. This contrasts with activitypub, where users need the origin instance to cooperate when migrating accounts.
Data harvesting is extremely prevalent on traditional social media. Every click, engagement time and rate, and even mouse movements are analyzed and sold in some form. Considering that Web3 alternatives use blockchains, which would only amplify the data harvesting problem. Not only can every post be trivially scraped without an API, but a user’s finances and transactions are potentially public and tied to their social media activity! Ad companies are salivating at the thought that we’ll all be using blockchain social media one day.
And a widespread argument is that alternatives, like activitypub based protocols, aren’t decentralized enough due to being federated. A big misconception is that instances need to follow specific rules and must defederate certain instances, or they will be completely isolated. While this indeed does exist, it does on a very small scale. Instances generally defederate others (by their own volition!) if they promote hate, or are communities focused around taboo/morally gray things like shotacon/lolicon. If this sounds like something George Orwell predicted in 1984, you could always join an instance that does not defederate such things. If the instance itself does not engage in spreading such content, the chances of it getting defeated are close to 0.
So to recap:
- Lens and other blockchain-based social media are long-term unsustainable due to the enormous amounts of DA and throughput required. External DA is a band-aid.
- The UX is strictly worse due to dealing with the blockchain.
- When considering the infra necessary for on-chain social, federated protocols become much more sustainable while having sane UX.
This could be a 10k-sentence-long blog post dissecting all kinds of protocols being built on-chain that really don’t need to be. I might come back to this topic sometime later, and update the blogpost with whatever I feel like talking about, so who knows. Hopefully, I’ve laid the groundwork for understanding why we shouldn’t build everything on-chain.
Now, go out there and use the right tool for the job!