Introduction

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.

History

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.

​

Characteristics

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.

Dapp development ecosystem

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).

​

Dapp development ecosystem visualization.

​

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.

​

External data

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.