A DApp is a user interface that allows users to interact with “smart contracts” stored on a “distributed and decentralized” peer-to-peer “blockchain-based” network like the Ethereum network.
Smart contracts: A smart contract is a type of computer script hosted on the Ethereum network. The script is programmed to preform specific functions when specific conditions are met. For example, a smart contract may distribute tokens when ETH is sent to a specific Ethereum Address.
Distributed and Decentralized: “Distributed and decentralized” means it is hosted on many computers and not controlled by any single entity.
Blockchain: Blockchain is a distributed ledger, a type of database stored on many computers.
Ethereum: The Ethereum network is a cryptocurrency network that uses blockchain technology. However, one might think of Ethereum’s network as a distributed computing system, as it can do much more than just deal with cryptocurrency tokens.
Decentralization and DApps
Despite the name, the frontend of DApps are often not decentralized (they can be, but often aren’t).
While it can’t be a DApp if the backend isn’t utilizing a peer-to-peer distributed network like Ethereum’s, the front end of DApps are often web-based and therefore built using web programming languages and stored on a central server.
In other words, the name DApp can be used to describe applications that have varying levels of decentralization in practice.
Difference Between Apps and DApps
Two major differences between regular Apps and Dapps are:
Instead of the user interface interacting with a traditional program, they are interacting with smart contracts.
Instead of the backend of the App being hosted on a single personal computer or on a single company’s centralized servers somewhere, DApps are hosted on many computers across the world via a peer-to-peer network and their data is recorded on a public blockchain.
With that in mind, a DApp can do anything a regular app can do, but notably the backend has the qualities of being “distributed and decentralized.”
DApps May Be on Crypto Networks, But they Aren’t Just for Tokens
Bitcoin is essentially a decentralized application that can be used for trustless financial contracts that are not subject to the whim of a single entity.
However, Ethereum and other such platforms allow for types of trustless applications beyond financial ones.
The potential of DApps is theoretically vast, but the technology is still in its infancy.
See some examples of DAPPs to better understand what the technology is being used for today and might be used for in the future.
What Makes a DApp a DApp?
Expanding on the basics above, here are some other qualities the DApps should have:
To be DApp, the app’s backend code must be hosted on a “distributed and decentralized” peer-to-peer network. So in the case of Ethereum that would mean utilizing Ethereum’s smart contracts to record data on Ethereum’s blockchain. So while one might use the CryptoKitties website to access the CryptoKitties DApp, the actual application and its data lives on the Ethereum network and the website is only a gateway to accessing smart contracts (for example, triggering a contract to buy a cryptokitty which results in a cryptokitty being assigned to an Ethereum address as recorded on the blockchain).
Ideally the front end code (the part a person might install on their phone or computer or access via a website, the part that talks to the backend) can be hosted on a personal computer or centralized server… or it can too be decentralized and distributed by being hosted on a decentralized server like Swarm (one Ethereum-based answer to centralized servers).
Ideally a DApp should be open source and not require a centralized party to manage it (although in practice everything from the BAT token to CryptoKitties ends up having a central team working on it and some aspects that aren’t fully autonomous).
DApps can have a financial element or not. If they have a financial element, they should use a cryptographic token that runs on the network the DApp is hosted on.
DApps necessarily are secured by cryptography, since the networks they are hosted on are secured by cryptography. However, ideally they should be fully cryptographic, utilizing other applications like Whisper for example when passing data around.
Many different networks run DApps including for example TRON and NEO.
One could argue that Bitcoin is a DApp that uses smart contracts and a blockchain to settle financial contracts.
Bottomline: Any interface for a smart contract (by any name) is a DApp, and any network that utilizes smart contracts (by any name) can have DApps on it. Ideally developers utilize as much distributed and decentralized tech as possible, but the reality is DApps exist in theory and in practice in a broad category.