summary: A decentralized application (dApp, Dapp, or DApp) are designed as open-source projects that run on top of a blockchain network.
content: Decentralized applications (dApp, Dapp, or DApp) are designed as open-source projects that run on top of a blockchain network. The distributed nature of these networks provides users with transparency, decentralization, and resistance to attacks. Decentralized applications fuel their own activity through a tokenized system (digital tokens created through the use of smart contracts). Tokens can be specific for a particular DApp (the Steem token used on Steemit), or they can be native to the blockchain that hosts the DApp, like in the case of CryptoKitties using ether (ETH). A variety of DApps that have been created includes gaming, social media platforms, cryptocurrency wallets, and financial applications DeFi (Decentralized Finance). Overview Decentralized applications have existed since the advent of P2P networks. They are a type of software program designed to exist on the Internet in a way that is not controlled by any single entity. Decentralized applications don’t necessarily need to run on top of a Blockchain network. BitTorrent, Popcorn Time, Bitmessage, and Tor, are all traditional DApps that run on a P2P network, but not on a Blockchain (which is a specific kind of P2P network). Blockchains, in particular, are most often used for creating the reward and incentive systems just mentioned by associating with the app a token, or unit of cryptocurrency, that is provided in exchange for contributing value to the app. As opposed to simple smart contracts, in the classic sense of Bitcoin, that send money from A to B, DApps have an unlimited number of participants on all sides of the market. Difference between DApps & Smart Contracts DApps are blockchain-enabled applications, where the smart contract is what allows it to connect to the blockchain. The easiest way to understand this is to understand how traditional websites operate. The traditional web application uses HTML, CSS, and Javascript to render a page. It will also need to grab details from a database utilizing an API. When you go onto Facebook, the page will call an API to grab your personal data and display them on the page. Traditional websites: Front End → API → Database Decentralized applications are similar to conventional web applications. The front end uses the exact same technology to render the page. The one critical difference is that instead of an API connecting to a Database, you have a Smart Contract connecting to a blockchain. DApp enabled website: Front End → Smart Contract → Blockchain As opposed to traditional, centralized applications, where the backend code is running on centralized servers, DApps have their backend code running on a decentralized P2P network. Decentralized applications consist of the whole package, from the backend to frontend. The smart contract is only one part of the DApp: Frontend (what you can see), and the Backend (the logic in the background). A smart contract, on the other hand, consists only of the backend, and often only a small part of the whole dApp. That means if you want to create a decentralized application on a smart contract system, you have to combine several smart contracts and rely on 3rd party systems for the front-end. DApps 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. Blockchain DApps For an application to be considered a DApp in the context of Blockchain, 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 the consensus of its users must decide all changes. 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 with the application’s tokens. The application must generate tokens according to a standard cryptographic algorithm acting as a proof of the value, nodes are contributing to the application (Bitcoin uses the Proof of Work Algorithm). The development process of DApps: whitepaper & prototype A whitepaper is published describing the DApp and its features. This whitepaper can outline the idea for DApp development but also entail a working prototype. There might be a token sale: Initial tokens sale is set up or also called Initial Coin Offering (ICO) by which the ownership stake of the DApp is spread. Launch funds are invested in building the DApp and deploying it. DApp Licences Operating under an open-source license allows DApps to be open for innovation without restrictions of copyright or patent. Also, by being completely open-source, decentralized applications can operate under the legal model of open-source software. Bitcoin, for example, uses the MIT open-source software license. Capable Platforms for Dapps EOS, Ethereum, TRON, IOST, Steem (blockchain) and other similar blockchains intend to create a protocol for building decentralized applications. These are platforms you can use now to deploy a full-featured application, to a relatively broad community, with relatively available developer tools. Those kinds of blockchains provide developers with a foundational layer: a blockchain with a built-in Turing-complete programming language, allowing anyone to write smart contracts and decentralized applications where they can create their own arbitrary rules for ownership, transaction formats, and state transition functions. Dapps can be browsed on marketplaces such as State of the DApps, Dapp.com, Holdex, DAppRadar and CoinGecko. Popular DApps Uniswap MindSwap Augur PredIQt Polymarket MetaMask Sense Chat.