A decentralized application (dApp) is a service that provides direct interaction between providers and end users providers through a blockchain or distributed ledger.
A decentralized application is a service that runs on a peer-to-peer network of computers providing direct interaction between users and providers. As opposed to traditional centralized applications where code is run on centralized servers, decentralized applications are intended to operate in a manner not controlled by a single trusted entity. These properties make decentralized applications inherently more difficult to hack or coerce.
Decentralized applications exist in a variety of forms prior to the development of blockchain technology such as BitTorrent and Tor. However, blockchain technology has dramatically increased the scope and attention of the potential of decentralized applications. For example, Ethereum provides a general purpose blockchain designed to facilitate the development of Dapps, and has resulted in a dramatic increase in the number of Dapps under development.
The precise definition of a decentralized applications is not agreed upon in this actively developing field. However, any application which is not completely open source and transparent is not considered a decentralized application because it reinstates the trust requirements around code execution.
Dapps software enables users to transfer some sort of transactional data of value, these scarce resources could be cryptocurrency coins, storage space, image, video, or many others.
Classification
DApps can be classified based on whether they operate on their own blockchain, or whether they operate on the blockchain of another DApp. By this classification, DApps are divided into three types.
Type 1 DApps operate on their own blockchain. Blockchains such as Bitcoin and Ethereum can be classified as Type I DApps.
Type 2 DApps are protocols that operate on the blockchain of a Type I DApp. These protocols themselves have tokens that are required for their function.
Type 3 DApps are protocols that operate using the protocols of a Type II DApp. Similar to Type II DApps, Type III DApps also have tokens that are required for their function.
The resources for building decentralized applications have been rapidly advancing. Dapps have both front end (visible elements of an application) and back end (internal logic components).
Front end of Dapps can consist of the usual HTML, CSS, or any other elements of traditional applications. Decentralized solutions for storing and sharing files are being developed such as IPFS/Filecoin, Storj, Siacoin, Maidsafe, and others.
Smart contracts provide a method for decentralized applications to interact with blockchains. Blockchain platforms such as Ethereum, Bitcoin’s rootstock, Lisk, Tezos, NEO, EOS, and others provide support for smart contracts capable of executing arbitrarily complex business logic allowing for almost any range of possible decentralized applications.
DApps have their backend code running on a decentralized peer-to-peer network, as opposed to typical applications where the backend code is running on centralized servers. A DApp can have frontend code and user interfaces written in any language that can make calls to its backend.
DApps have been utilized in decentralized finance (DeFi), in which dapps that perform financial functions on blockchains.[11]
All the DApps have an identifying code that may only work on a specific platform. Not all DApps work on standard web browsers. Some of them only work on special websites with a customized code, adjusted to open certain DApps.[citation needed]
The performance of a DApp is tied to its latency, throughput, and sequential performance.[12] Bitcoin's system for transaction validation is designed so that the average time for a Bitcoin to be mined is 10 minutes.[12] Ethereum offers a reduced latency of one transaction every 15 seconds. For comparison, Visa handles approximately 10,000 transactions per second.[12][13] More recent DApp projects, such as Solana, have attempted to exceed that rate.[14]
Internet connectivity is a core dependency of blockchain systems, which includes DApps.[12] High monetary costs also act as a barrier. Transactions of small monetary values can comprises a large proportion of the transferred amount.[12] Greater demand for the service also leads to increased fees due to increased network traffic.[15] This is an issue for Ethereum, which is attributed to increased network traffic caused by DApps built on the Ethereum blockchain, such as those used by Non-fungible tokens (NFTs).[15] Transaction fees are affected by the complexity of a DApp's smart contracts, and by the particular blockchain.[7]
Decentralized applications also require some form of external data which informs the execution of the internal logic of the application. Oracles are in development which provide decentralized means of accessing external data without relying on trusted 3rd parties. Prediction markets in development such as Augur and Gnosis are examples of Oracles.
A Bitcoin mining rig composed of dozens of graphics processing units: