Why There is No Such Thing as a Decentralized App — Yet
The idea behind a decentralized application is that once it’s deployed, it’s virtually impossible to take down. These don’t exist yet. Every so called DApp has at least some part of it controlled by a person or company.
Blockchain enabled the concept of a decentralized application and Ethereum in particular made it popular, but the reality is “DApps” just store some small bits of data on a blockchain, usually related to ownership of assets, and the rest is run by the company that created it.
In the case of decentralized exchanges, there is a spectrum from more decentralized to more centralized, but they ALL have major pieces centralized. Even Etherdelta which is probably the furthest one on the decentralized end of the spectrum has their order book on a centralized server. The rest are more centralized than Etherdelta with multiple centralized pieces. Just because the name has DEX in it, doesn’t mean it’s decentralized (this is true 100% of the time).
In the case of crypto collectibles like CryptoKitties, the “decentralized” part is tokens (a random number) stored on blockchain. When you buy a kitty, you are actually buying a random number, an ID, for the kitty you bought. Everything else is run by the company that built it, Axiom Zen. This includes the marketplace, the auctions, the data, even the image of your kitty.
The Centralized Pieces
To get technical, they all have some or all of the following owned and operated by a single entity:
- DNS — when you go to the apps website, the company owns the DNS entry that you use to get there
- User interface — the app you use, whether it’s in your browser or a mobile app on your phone, it’s owned by the company, hosted by the company and distributed the company
- Backend servers — owned and operated by the company
- Database servers — owned and operated by the company
- Object Storage — typically owned and operated by the company (or the cloud service account that the company owns and is paying for) unless they’re using IPFS
If you’re thinking “this looks like just like any ol’ centralized app”, you’d be right. DApps today are just centralized apps with some small bits of data stored on a blockchain.
If any of the companies running these services goes bankrupt, decides to shutdown the app, or is forced to shut it down, you’re typically left with nothing (I believe with Etherdelta, you can at least get your money out).
I’m not saying being centralized is bad, it’s just not decentralized.
Choosing centralization for some parts is almost certainly the right decision from a business point of view because if they didn’t, the user experience would be awful and they’d have no customers.
Why Can’t We Be More Decentralized?
It all comes down to one thing really: reliable performance.
Ethereum is too slow to support a single application, let alone thousands of applications. I wrote an article last year about this if you want to learn why. Even higher performing blockchains like GoChain are too slow for mass adoption, but they’re a step in the right direction.
I won’t even get into fees and storage issues here, but those are other major issues with current blockchains. Maybe we can discuss that in a follow up article.
So How Do We Get There?
See that list above of all the centralized pieces? Those all need decentralized equivalents. IPFS has created decentralized object storage and is a great example of solving one of those pieces. And it turns out IPFS is a possible solution for the user interface too. We still need good solutions for all the others parts though to make decentralized apps a reality.
Can you help build the decentralized future? Start #BUIDLing!