A DApp, short for “decentralized application” or “distributed application,” is an application that is executed on a decentralized network of computers.
To understand what a DApp is, you first have to understand how ordinary apps — that is, the traditional type of applications that run on your PC or phone, or that you access via a web interface over the internet — work.
Ordinary apps run when a single computer or server executes their code. In the case of an app that is installed on your PC or phone, your PC or phone is the device that executes the code. In the case of a web app, the app is executed on a server somewhere, and users access it through a web browser.
Either way, there’s only one device executing the app. The app’s execution is therefore centralized.
With a DApp, application code is not executed by a single device. Instead, a DApp runs by using computing resources from a distributed network of computers.
The main advantages of a DApp are reliability and fault tolerance. Because the computing resources required to execute a DApp are provided by a distributed network of computers, the DApp will continue to run even if some computers on the network fail.
In contrast, a traditional app would fail if the server on which it is running goes down, unless you take steps to set up a backup execution environment and can switch the app over to it automatically.
DApps also play an important role in incentivizing participation in decentralized networks, like the kind that blockchains use. That is because people who use a DApp can earn rewards (usually in the form of cryptocurrency) for getting others to use the application as well. Developers need not pay to keep their DApp online, as the networks they are built upon are self-sustaining.
Technically speaking, you don’t need a blockchain to run a DApp. Any type of peer-to-peer network would suffice to execute a DApp (assuming you have the right protocols in place). But you would sacrifice the decentralization of a blockchain in doing so.
That said, the DApp concept became popular thanks in large part to the Ethereum blockchain. Although Ethereum is a blockchain that stores transaction records across a decentralized network of computers, Ethereum was designed so that the computers on its network could also share the computing resources required to execute applications. This is one of the key features that makes Ethereum different from blockchains like Bitcoin, which was not designed to support DApps. Thus, DApps and Ethereum tend to go hand in hand.
Although Ethereum took the lead in bringing the DApp concept mainstream, it is not the only DApp-compatible blockchain. Other blockchains that support DApps include NEO, EOS and Cardano, to name some examples.
It’s important not to confuse DApps with smart contracts. Smart contracts are a similar type of software, and they were also made popular in large part by Ethereum. But a smart contract is not a DApp. A smart contract is simply code that automatically enforces an agreement between two or more parties when certain conditions are met and executes that agreement on the blockchain. Smart contracts can be used in many different ways, and they are used by DApps to execute most functions.
In contrast, a DApp is a complete application. DApps use smart contracts to achieve a wide range of functionality. A DApp could help you store data. It could provide access to a social network. It could be a game. Just as you can build a traditional application to do almost anything, the sky is the limit when it comes to DApp functionality.