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.
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).
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.
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.
The Shared Data Layer of The Blockchain Application Stack
Documentaries, videos and podcasts
- BlockchainA blockchain is an append-only digital ledger storing a set of time-ordered transactions grouped in blocks that are linked together using cryptographic hashes.
- CryptocurrencyA cryptocurrency (or crypto currency) is a digital asset designed to work as a medium of exchange using cryptography to secure the transactions and to control the creation of additional units of the currency. Cryptocurrencies are a subset of alternative currencies, or specifically of digital currencies.
- EthereumEthereum is an open-source, public, distributed blockchain computing platform featuring smart contract (scripting) functionality, which facilitates online contractual agreements.
- BitcoinBitcoin is a cryptocurrency and a digital payment system invented by an unknown programmer, or a group of programmers, under the name Satoshi Nakamoto. It was released as open-source software in 2009.
- TezosTezos is a self-amending cryptographic ledger. The Tezos protocol allows for stakeholders to appove amendments to the state as well as the protocol itself.
- InterPlanetary File SystemContent-addressable, peer-to-peer hypermedia distribution protocol.
- FilecoinA blockchain based storage and cryptocurrency created by Protocol Labs.
- Show More