There is generally a lack of clarity on what a “dApp” is, especially with the wide array of technologies that have come about in recent years, starting with the Bitcoin blockchain.
Some of the belief is that a dApp is exclusively a smart contract running on a blockchain, such as Ethereum. In particular, with the popularity around ICO’s in 2016–2018, this has been a widely-accepted definition. There has been an assumption that a dApp runs on a blockchain or requires the blockchain to operate, whether it be for smart contracts, payments, or other purposes.
A dApp, also known as a “decentralized application”, is an application that is built upon one or more decentralized services. Blockchains are one of these decentralized services, but there are many others. What is a decentralized service, then?
Simply, it is a network of peers that can intercommunicate to collectively provide some sort of service, in a P2P (peer to peer) fashion, where there are no centralized servers that control the network.
Every participating server in a P2P network is effectively equal in terms of “control” and importance in the network, much like a flock of sheep or swarm of bees (without a queen). Often, such P2P networks are referred to as swarms.
A dApp’s backend logic could use any combination of the following decentralized services:
- File storage (IPFS, Storj Labs, Sia Tech, etc)
- Edge cloud storage (NOIA, etc)
- Edge data store (Bluzelle, etc)
- Immutable data storage + smart contracts (ethereum, NEO, Zilliqa, etc)
- Computing (Golem Project, SONM, etc)
These are just examples and is not a comprehensive list. A typical dApp will be designed to use the right mix of decentralized services for its back-end.
A dApp’s front-end can run on devices such as phones, browsers, kiosks, etc. It is the back-end that powers the application that determines if it is decentralized or not.
Decentralized applications have been around long before the blockchain was “invented” in 2009, with the widespread release of the Bitcoin blockchain. For example, in 2001, the Torrent protocol was created and resulted in the release of P2P clients that enabled the sharing of files. This version of Torrent was not completely decentralized, as it still required trackers, which were centralized servers that tracked who had the files or portions thereof. But in 2005, a trackerless version of Torrent came out, where the system was now completely decentralized. Torrent is the best example of a widely-used application that is decentralized and uses no blockchain technology whatsoever. It is the best example of a very early dApp.
The Centralized Internet
Practically speaking, there are many aspects of the Internet that dApps have to still make use of, that are still centralized. These include DNS (powered by centralized root servers), IP networks (powered by telco’s), and other infrastructural technologies. In the discussion of dApps, we need to take the practical stance that some of these fundamental technologies that power basic Internet services required for dApps will still be relatively centralized for the time being. We take the approach that it is the services we use on top of the Internet that dictate if our application is decentralized or not.
Furthermore, there will be applications that are only partially decentralized. For example, some games might be available through platforms like Steam or an AppStore on Apple or Android. They might be tied into payment networks like Paypal to take payments, despite the fact that they store all their data on decentralized services. It would be acceptable in many of these cases, to call these partially decentralized applications. The decentralized services stack is not yet complete, and so partial decentralization will be a practical reality for the time being.
In closing, I hope this article clarifies what a dApp is, and what it is not. The definition is much broader than what most people think. A dApp is an application who’s back-end infrastructure is driven by P2P participants with no centralized form of control.