Decentralized Applications (DApps) are applications that run on a distributed computing system, that is, a blockchain network. While there are various ways of defining a DApp, they are usually described as applications that have the following characteristics: Open Source – The source code is intentionally made available to the public, meaning that anyone is able to verify, use, copy, and modify the code.
Cryptographically secure – The application is protected by cryptography, meaning that all the data is recorded and maintained in a public blockchain. There is no single point of failure.
There are multiple issues in legacy applications that the DApps try to solve. The main benefit of choosing a DApp over a traditional app is that the latter uses a centralized architecture by storing their data on servers controlled by a single entity. This means they have a single point of failure, which is susceptible to technical problems and malicious attacks.
A compromised centralized server may take down the entire network of the application, making it temporarily or permanently unusable. Other than that, centralized systems suffer from data leakage or theft quite often, putting the companies and individual users at risk.
There is a great variety of DApps, with different use cases. They may include gaming, social media platforms, cryptocurrency wallets, and financial applications (DeFi). Decentralized applications fuel their own activity through a tokenized system (digital tokens created through the use of smart contracts). Tokens can be specific for a particular DApp (e.g., the Steem token used on Steemit), or they can be native to the blockchain that hosts the DApp, like in the case of CryptoKitties using ether (ETH).
Summing up, DApps are designed as open-source projects that run on top of a blockchain network. In turn, the distributed nature of these networks provides transparency, decentralization, and resistance to attacks.