Understanding The Web

“Decentralized” Applications

Posted

Censorship resistant

Decentralization is a defining feature of applications built on top of blockchains. An ideal that removes the middleman from the equation. A paradigm where users transact directly with one another. A medium immune to censorship.

Recently, there has been controversy on the Solana blockchain related to some questionable “meme coins”. Some developers have decided to take action resorting to censorship. The topic of censorship has raised questions about decentralization.

If blockchains are supposed to be decentralized and censorship resistant, how can we censor things we don’t like?

Why do we want decentralization?

Before we try to understand decentralization in blockchain applications, we need to understand what caused this desire for decentralization.

First, we need to accept the label of our current relationship with the internet as “Web 2.0” (web2). Web2 relies on centralized corporations to provide us with services. We trust these institutions to provide us access to social media or financial instruments, among other things.

On the surface, it seems decentralization is a response to entities having too much control over our every day lives.

The desire for decentralization stems from the belief that the web2 system has over stepped its bounds. Whether its labeling something a conspiracy because it doesn’t align with the correct political party, labeling something as misinformation because it harms the bottom line of the advertisers, or leaving a large part of the world unbanked, we haven’t reached a consensus on what should and should not be moderated.

For argument’s sake, let’s assume decentralization is a valid solution to our web2 “problem”.

Blockchain and Decentralization

Next, we need to zoom out and look at the bigger picture. Blockchains are the foundation of Web3.0 (web3), our answer to web2.

Blockchains, which may or may not be decentralized, function as the database in the web3 landscape. This is in contrast to web2 where centralized servers host databases and an application’s logic. Web2 interactions are initiated by users requesting information from these centralized servers. On a blockchain, an application’s logic is stored as a smart contract.

With these ideas in mind, we can try to define the decentralization of a blockchain. If the blockchain isn’t private, we’re half way there. The more entities we have validating and securing the public network, the more decentralized it is.

We can make clear arguments such as “Entity x has too much staking power”, “Country y controls too much of the hash rate”, or “Blockchain z is too centralized”. Validating the level of decentralization of a blockchain is relatively trivial.

The blockchain is just the first step.

What role do smart contracts play in decentralization?

Smart contracts are immutable

The logic within a smart contract is the point of communication between the blockchain and the user. Judging the decentralization of the code in a smart contract is also simple.

Is the smart contract open source? Can I look at the code on a block explorer? If not, then this smart contract isn’t quite decentralized. You can make the argument that decentralization does not require the code to be open source, but open source code is a good faith, first step.

Can this contract be upgraded? If yes, then the developers have the ability to change the contract. Centralization could be lurking down the road.

Does the contract have unnecessary access control? If yes, the developers may have too much centralized control over important functions in the smart contract.

After we’ve answered those questions, we can claim decentralization if: anyone can deploy a smart contract and anyone can access the smart contract.

As long as a smart contract abides by certain predetermined constraints, such as gas considerations and storage size, a decentralized public blockchain cannot restrict the deployment of a smart contract.

A smart contract should not be able to restrict access to any users. While there is a technical barrier, being able to interact directly with a smart contract is a form of decentralization in itself.

We’ve accounted for the blockchain. We believe it qualifies as decentralized. We’ve analyzed the code in the smart contract, and we don’t see any type of centralization.

What else do we need to look at?

Frontends are centralized

A team of developers have created a smart contract. Initially, this was a centralized process. But they’ve now implemented governance, and the protocol is completely controlled by the community.

This seems like a decentralized system.

Well, even when protocols go the route of governance, builders have the final say or have much more power than anticipated. But for the sake of argument, let’s give our developers the benefit of the doubt.

After we agree on the decentralization of a blockchain and we’ve analyzed the smart contract, the next hurdle is the user interface. When we use applications like Uniswap, Aave, or Compound, we are interacting with a centralized frontend which communicates with a smart contract.

The level of centralization varies. The method of hosting plays a key role in defining the decentralization of the application. Web3 applications lean towards using services such as IPFS, but these services don’t completely obfuscate centralization. While IPFS is peer to peer, enterprise applications require a high degree of centralization.

If a frontend was hosted completely by peer to peer means, that would be a step towards decentralization. But in the current paradigm, there is always a hosting service risk.

Now we understand how a blockchain can be decentralized. We understand how certain aspects of code can make a smart contract centralized. We understand that even with governance in place, we are still beholden to a centralized service that hosts our user interface.

For the sake of argument, lets say our frontend is completely decentralized. It’s hosted in a peer to peer manner.

Now what?

What problem have we solved?

What have we accomplished with a completely decentralized system?

We now have a YouTube or a RobinHood that isn’t controlled by a middle man. We have social media services that are censorship resistant. We have financial applications without barriers to entry.

We’ve defeated web2, and created a system for the people.

What problems have we created?

Now, how do we moderate content in our web3 utopia?

Do we simply allow harmful content to run rampant in our web3 TikTok? Do we allow bad actors to raise funds in our web3 GoFundMe? When hackers drain funds from our web3 ETRADE, do we just accept it and move on?

I don’t think we appreciate the necessity of centralization.

Behind the scenes, a lot off effort is placed in curating what we see and limiting the reach of bad actors. Maybe we don’t need everything to be decentralized.

The real problem lies in the level of control.

Is web3 decentralized?

Web3 doesn’t evade any of the problems web2 faces. Web3 is built on top of the same infrastructure. Bancor, built on top of Ethereum, was initially accessible to everyone. After things went south, certain locations had their “access limited”.

If developers can still unilaterally make decisions, what is web3 trying to achieve?

It is inevitable that projects will use the ideals of web3 as a marketing ploy. Not everyone is gong to have the share the motivations of building an application that is meant to be decentralized. But we can’t dismiss the potential of web3 on the actions of a few.

Web3 isn’t quite as decentralized as it is made out to be. But we are still in the early stages. The landscape may look drastically different in 10 years. Time should weed out the frauds.

But we are left still left with questions.

Is decentralization the most important feature?

Decentralization is one of the benefits of blockchains. Transparency is another benefit.

Blockchains provide us with a new level of transparency that isn’t available in our current relationship with the internet. Block explorers are like magnifying glasses. They don’t allow secrets to exist.

A social media service or a financial application built on top of a blockchain would have every action publicly documented. While it may not be realistic to achieve complete decentralization (a decentralized blockchain, a decentralized smart contract, a decentralized frontend, and even a decentralized internet service provider), transparency is a must.

Without transparency, decentralization doesn’t matter. (And without security, none of this matters… but that is topic for another time.)

A transparent future

Bitcoin brought us to this point. Bitcoin’s purpose was to be a platform for peer to peer financial transactions. I write in the past tense because it’s hard to claim that Bitcoin has accomplished the goals demanded by its whitepaper. Many view it is outdated technology due to its low transactions per second. Rather than competing with fiat money, Bitcoin competes with gold as a “store of value” to hedge against the markets. While it still captures most of the attention as “price go up”, it has strayed away from its whitepaper ideals.

But Bitcoin is still here. It is still the apex predator of cryptocurrencies. And decentralization is important for Bitcoin.

When we add layers of complexity on top of Bitcoin, we end up with web3.

Decentralization is not nearly as important for web3. What is important is transparency.

Decentralization would be ideal, but we’ve learned it’s not always realistic. What we should expect from web3 is a level of transparency that minimizes or eliminates the amount of trust we need to place in our institutions.