A Decentralized Application (DApp) is software that runs on a P2P network. It is designed to be a functional system without being controlled by a single entity. A DApp benefits from the advantages of decentralization, such as not having a single point of failure, as well as the features of blockchain such as censorship resistance and immutability.
Traditional applications, such as Facebook or YouTube, are centralized, running backend and frontend code on the servers of a single entity or licensed secondary entities. A DApp runs backend code on a decentralized P2P network, and frontend code on a client-side application or in some cases frontend code can be hosted on decentralized storage such as IPFS (InterPlanetary File System).
Decentralized applications don’t necessarily need to run on a blockchain. BitTorrent and Tor are examples of non-blockchain decentralized applications. But the term DApp is generally applied to blockchain-based applications which get their functionality from smart contracts and interacting with blockchains. It is also sometimes referred to as a Distributed Application.
For a DApp to be considered decentralized it must:
- Be open source
- Operate autonomously – updates and changes are approved by a consensus protocol
- Store data cryptographically in a public decentralized blockchain
- Use a cryptographic token