A well-known resource to blockchain-based decentralized applications is the whitepaper written by David Johnson entitled The General Theory of Decentralized Applications, DApps. In this whitepaper, he identifies four key criteria to be a DApp:
-
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, so as to avoid any central points of failure.
-
The application must use a cryptographic token (Bitcoin or a token native to its system) that 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 proof of the value that the nodes are contributing to the application (Bitcoin uses the PoW algorithm).
However, this definition is very limited. David is thinking only of decentralized applications running on a blockchain, and only ones that can be incentivized through a token. There are a number of decentralized applications that predate blockchain that do not use or require tokens. In this chapter, we will discuss both blockchain and non-blockchain decentralized applications, but with a focus on those that are relevant to the blockchain ecosystem. We will also discuss blockchain applications that are not decentralized, despite running on top of a decentralized network.
For this book, we will use the following four criteria to describe a decentralized application:
- The application must be completely open source.
- It must operate autonomously, with no individual, organization, or organized group controlling the functioning of the application. 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 must be stored in a public, decentralized way that is open to inspection and without a single point of failure.
- The application must provide a way of aligning incentives for the use of the application across all key user groups.
As you can see, this simplified definition retains all the key principles of decentralization without relying on a blockchain or tokens, as there are many ways that decentralized applications can be structured or used with or without blockchain. As we will see when we look at IPFS, it is entirely possible to have a decentralized application without blockchain, and incentives without having tokens.