Dapps seem to be the talk of the town lately, and the term is not a novelty anymore. Still, before launching the series about dapps and their development, it's appropriate to begin by explaining the concept.
D for decentralized
Decentralized nature is the main difference between an app we've been using on mobile and online platforms and a dapp that has emerged with the evolution of the blockchain and decentralized systems.
However, since the concept of decentralization can cover various aspects, it can get confusing as to which part of the application structure needs to be decentralized for an app to acquire such denomination.
What makes an app a dapp?
Many articles still explain dapps sourcing from the definition by David Johnston et al. from 2015. According to the paper, dapps must comply with the following criteria:
- Decentralized operation: open-source code, autonomous operation, consensus of its users.
- Decentralized storage: storage on a blockchain, cryptographically sealed.
- Cryptographic cryptocurrency: use of tokens for access and value contribution.
- Token generation: tokens as proof of value, generated through a cryptographic algorithm.
Through the course of the years and the evolution of the decentralized web, these four criteria have loosened notably, and today, an application can comply with only a few of them and still be considered a dapp.
The most important features that define a dapp are decentralized service and decentralized storage/database it communicates with.
The way of communicating with different stages of an operation doesn't differ much between dapps and apps - the employed communicating protocol can be quite the same on both sides.
The way of how the UI of either dapp or app connects with their services and storage/database is, however, much different.
Contrary to "traditional" applications running on a centralized server or operating systems, dapps connect to a dispersed, P2P network of service nodes. Instead of communication going from A to B in apps (from UI to server), communication in dapps spreads through a network of independent service nodes usually aligned by a consensus mechanism.
Similarly, the database or data storage differs between a dapp and an app. A decentralized system of data storage defines the way the data is stored within a dapp. While for most dapps, blockchain systems are indeed the decentralized system of choice, they are, however, not exclusive - decentralized systems also include distributed systems like HashGraph. The majority of dapps today are being built on the Ethereum blockchain, followed by EOS, NEO, Tron, and other decentralized systems.
No two alike
With the evolution of dapps and tech, one size ceased to fit all, and today, there is a significant variation of dapps and the ways they are defined as decentralized. For example, a dapp could leverage only a decentralized network of nodes while connecting to a mostly centralized database, and it would still be considered a dapp.
Also, although the majority of the launched dapps indeed employ cryptographically generated tokens (aligned with the criteria above), these are actually not a determining factor of decentralization, but rather serve as a tool for dapp's operation.
Bottom line, decentralized nature of an application is determined by two main factors:
- decentralized type of its storage/database,
- decentralized way of its communication with it.
Comparable to decentralized projects in general, dapps can be structurally divided into three levels that follow the analogy of their centralized counterparts.
Dapps of Type I are their own blockchain or decentralized system and serve as an independent foundation like Windows or Mac operating systems.
The Type II dapps leverage the decentralized system of Type I by embedding additional data to it. In the way they function as protocols, they are comparable to computer software that utilizes the underlying operating system.
The type III dapps use the Type II dapps as their base - in this regard, they compare to software solutions running on their software base. Much like with centralized IT solutions, the variety and number of examples are increasing with every level, from I to III.
Apart from the architectural aspect above, dapps can also be classified according to their usability, field, industry, or audience they target. In this respect, they cover categories such as games, social, finance, exchanges, development, security, identity, just to name a few. Possibilities, however, are endless.
Future - dapplied?
Today, 95k active users engage with 2,5k dapps daily. In just a few years of development in a super niche segment of the decentralized web, dapps have acquired a massive growth due to their decentralized nature of operation and data storage that responds well to the increasingly informed user base.
While we follow the evolution of dapps closely, we also support and promote their adoption across industries, underlying systems, and purposes. The open-source 0xcert Framework was developed to redefine the dapp development and contribute to the dapplication of traditionally centralized web-based processes.
In the following posts, we will explore the Framework in detail and learn how to use it for our next dapp project.
Part #2 - Tutorial: How to run and prepare Geth Node for back-end integration
Part #3 - Guide: How to develop a dapp and white is it so complicated
For more information on other sections and features of the 0xcert Framework, please check the Framework documentation.