105

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

110

DApp is an abbreviated form for decentralized application.

A DApp has its backend code running on a decentralized peer-to-peer network. Contrast this with an app where the backend code is running on centralized servers.

A DApp can have frontend code and user interfaces written in any language (just like an app) that can make calls to its backend. Furthermore, its frontend can be hosted on decentralized storage such as Swarm or IPFS.

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. – soc1c 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
14

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. – soc1c Oct 25 '16 at 9:56
10

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 be completely open-source, it must operate autonomously, and with no entity controlling the majority of its tokens. The application may adapt its protocol in response to proposed improvements and market feedback but all changes must be decided by consensus of its users.

  • The application's data and records of operation must be cryptographically stored in a public, decentralized blockchain in order to avoid any central points of failure.

  • The application must use a cryptographic token (bitcoin or a token native to its system) which is necessary for access to the application and any contribution of value from (miners / farmers) should be rewarded in the application’s tokens.

  • 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
5

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

0

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

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.