There are new terms in Ethereum like smart contract. What is a DApp and how is it different from smart contracts?


DApp is an abbreviated form for decentralized application.



If an app=frontend+server, since Ethereum contracts are code that runs on the global Ethereum decentralized peer-to-peer network, then:

DApp = frontend + contracts

Illustration of a DApp that uses a blockchain with smart contracts combined with the pillars of Swarm and Whisper:

enter image description here

  • 3
    Using this excellent answer as template for the dapp-development tag wiki. Thanks. – Waqar Lim Oct 25 '16 at 9:56
  • 2
    Does a "dapp" have to be based on swarm and whisper to be considered a dapp, or can it be built on more traditional Web infrastructure? – Mike Shultz Jun 8 '17 at 6:54
  • 2
    @Mike A DApp should use decentralized storage and decentralized communication. It matters less which one specifically (whether it's Swarm or some other decentralized storage), but it's important to avoid centralized infrastructure: for example a company going out of business would make the DApp fail. – eth Jun 11 '17 at 7:47
  • 1
    Dapp it can be frontend+contracts, but not necessary. we can talk about dapp when every user has it own server ( backend ) and comunicate with other over IPFS or ethereum – maroodb Aug 15 '18 at 12:47

A good Blog post by Vitalik Buterin goes through and the concept of a Dapp and other related concepts such as smart contract, Decentralised Autonomous Organisation, Decentraclised Corporation ect..

Here is the link with the Blog Post: DAOs, DACs, DAs and More: An Incomplete Terminology Guide

  • 2
    Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference. – Waqar Lim Oct 25 '16 at 9:56

Find below a definition of DApp written in this doc called "The General Theory of Decentralized Applications, Dapps".

For an application to be considered a Dapp (pronounced Dee-app, similar to Email) it must meet the following criteria:




  • The application must generate tokens according to a standard crytptographic algorithm acting as a proof of the value nodes are contributing to the application (Bitcoin uses the Proof of Work Algorithm).

Clarification related to the terms you use in your question:

  1. Ethereum is a DApp, it tick all the boxes from the criterias listed in the above definition
  2. Smart contracts: don't have to be Open Source, do they? so no, smart contracts are not a DApp. Unless I miss something.
  3. Bitcoin is a DApp, it tick all the boxes from the criterias listed in the above definition

Dapp abbreviate as Decentralized Application used to Developed Applications using Front-end(HTML+CSS+JS) Web page + Back-end(Solidity Smart contract) Programming code + Server(TestRPC) Private Blockchain/Dummy Network in Ethereum platform


I think that some of the general belief around dApps referring exclusively to a backend that is driven by smart contracts, is limited.

A dApp indeed is a decentralized application, but it does not specifically dictate how it is decentralized.

A rational answer to this is that the front-end, being run on devices such as phones, browsers, etc, is not relevant to the decentralization aspect.

The back-end, on the other hand, must be decentralized, at least partly, if not wholly.

The backend logic could use any combination of the following (not a comprehensive list) infrastructure pieces:

  • Decentralized file storage (IPFS, Filecoin, Storj, SIA, etc)
  • Decentralized edge cloud storage (NOIA, etc)
  • Decentralized immutable data storage (Ethereum smart contract, NEO smart contract, etc)
  • Decentralized edge data store (Bluzelle, etc)
  • Decentralized computing (Golem, SONM, etc)

Of course, these are just examples I thought of. Fact is, you could use whatever pieces you want, but for the app to be a dApp, most of your backend must be decentralized. There are always some pieces that are typically still centralized, such as DNS and even the packet networks that are used to reach the various decentralized pieces of your application.

protected by eth Mar 26 '18 at 0:50


Would you like to answer one of these unanswered questions instead?
