Decentralized Applications (Dapps)

A decentralized application (dapp) is a user-facing application that runs on public blockchains. In other words, it is a frontend user interface for interacting with a blockchain. Blockchain is decentralized, so an application that runs on blockchain is decentralized. You can think of a dapp as a service that is being provided to users of public blockchains. The most popular public blockchain for dapps is Ethereum. Ethereum was designed for this purpose.

Smart contracts are the back-end code for decentralized applications. A dapp is the frontend user interface combined with a smart contract. The underlying smart contract of a dapp is code that uses the public blockchain as its data. This means the dapp is running on a decentralized peer-to-peer network. This is radically different than an “app,” which has backend code running on centralized servers. A dapp is decentralized because the underlying smart contract is controlled by logic, not an individual or company.

The smart contract could be something that you have written or someone else has written. Smart contracts are public and accessible, like an open API, so a dapp can use any available smart contract.

Anyone can create a dapp. Remember that a dapp is a user interface, so a dapp is frontend code that can be written in any language (just like an app). The frontend code makes calls to the backend smart contracts. 

Any network participant can use a dapp. The dapp calls the smart contract to execute its code and the participant pays a fee to the network for the computational resources. Use of a dapp is also totally private. The user does not need to provide their personal identity to interact with a dapp, so the data collection associated with traditional apps is not a concern.

Dapps have a payments function already built in. Payments are done via ETH, the native token to Ethereum. Therefore, there is no need to combine the service with a third party payment provider, which is more common in a traditional application. Dapps do not need to rely on internet payment companies like PayPal or Stripe.

One challenge for dapps is the need for the user to have a wallet. The average user will still find it difficult to set up a wallet and use the wallet to interact with the dapp. User experience (UX) is not great if the learning curve is too steep. This will limit adoption of dapps until wallet ownership and usage becomes more familiar.

Another major challenge is cost and scalability. Executing code on a public blockchain is expensive and relatively slow due to the mining process. A transaction that changes the state of the blockchain need to be processed by a miner and propagated throughout the network. Many developers of dapps put limited amounts of code on the blockchain to limit the processing cost.

Developers can build any form of user-facing dapp that runs on the Ethereum network. Examples include games, finance, etc.

Decentralized finance (DeFi) is a form of decentralized application.

Decentralized applications are also important as the user interface of Web3. Web2 is the internet that most of us know today. It is dominated by a handful of companies that monetize the data of their users. Web3 is a decentralized internet that does not require the use of personal data. By providing access through wallets, dapps offer an alternative vision of the internet that is more decentralized.

Resources

There is a list of dapp tools at the end of the Introduction to Dapps page at ethereum.org.