FN 207 - Apps vs Dapps
Decentralized applications are the basis for the Web 3.0, but how do they differ from the traditional Web 2.0 apps? This course will answer such question, and go into the following:
- Defining Dapps
- Contrasting Apps & Dapps
- Exploring Difference Implications
Decentralized apps, or Dapps for short, are as the name suggests; decentralized versions of the Web 2.0 apps we are used to seeing and using everyday. Web 2.0 brought huge improvements in terms of interactivity and free flow of data between users and applications when compared to the static webpages of its predecessor. Web 3.0, its third iteration, brings with it a whole new aspect of decentralization to the existing web infrastructure.
Let's look at some of the major differences between apps such as Twitter or Facebook, and dapps such as Snowball or Axial:
The decentralized aspect of modern dapps means that the data and logic of any application lives on the blockchain, and is constantly being validated by hundreds or even thousands of people in the case of Avalanche. This has many implications, but is particularly impactful in terms of trust; trust on the entity controlling the application, as well as trust that the application won't go offline unpredictably.
This is simply because it is much easier to trust that thousands of people won't act maliciously, than it is to trust that any one individual may do so. Because of the application's state always being on the blockchain, it cannot go offline because of any single point of failure. The entire blockchain would need to be taken down in order for the application's state to become non-accessible. This is in stark contrast to the state of any Web 2.0 applications, where a number of services going offline could and have caused many to simply become unusable for a period of time.
In terms of security, dapps are miles ahead of their Web 2.0 counterparts. Smart contracts on the blockchain are immutable, meaning their code cannot be altered once deployed. Updating an application with some malicious code, or introducing a new bug or attack vector isn't possible with smart contracts.
Furthermore, a large portion of traditional applications' security revolves around STO, or Security Through Obscurity. Because of this, many exploits happen because attackers are able to find some information they shouldn't have access to. Dapps function through an entirely opposite ethos, where all data is public, all transactions are public and traceable. Attackers have no choice but to attempt to exploit the code and/or data that is available for everyone to see. This is possible, of course, especially in the first few years of any new technology, but is a much safer standard regardless.
Web 2.0 infrastructure costs have been decreasing in the recent years, but have nonetheless generated a huge impact to up-and-coming apps. This can easily be exemplified by the fact that the biggest Web 2.0 tech giants have heavily invested in offering such infrastructure as a paid service, such as Amazon's AWS, Microsoft's Azure, Google's Firebase, etc.
Since a dapp's data and logic is hosted on the blockchain, none of these hosting/computing/server solutions is necessary. While some functionality could require a dapp to spend some transaction fees to function, the basic need for storage, persistence, authentication, accessibility, etc. is natively covered by the underlying blockchain.
Through the decades of development, apps have been able to make user interactions as easy and simple as possible. On decentralized apps, this is still not entirely the case. Writing data to an application's state is free in most cases for regular apps, but require transaction fees in their decentralized counterparts. This and many other gripes of interacting with decentralized apps such as inconsistent wallet support, lack of browser support, etc. are expected to improve over time, of course. There are even ways of dapps to cover users' transaction fees while retaining the blockchain's security through proxy transactions, and who knows what will be developed next?
The speed of any application is determined by how much data it can process at any time. On Web 2.0 apps, this can be easily scaled by improving the hardware running the application, purchasing an extra server or simply paying for a better hosting plan on your favorite cloud provider.
With dapps, this scaling is quite a bit more difficult. Blockchains have a certain amount of transactions they can process per second, and this is usually dictated by its consensus mechanism, its number of validators, or a myriad of other constraints. Blockchain can be scaled, however, through sharding, subnets, layer 2s, etc. These technologies are very much so still in development, so we'll have to see how they perform in relation to their predecessors' scaling ability.
While the basic infrastructure of dapps are superior to apps in many ways, there is much work to be done particularly when it comes to user experience. This is a major barrier to entry for many, and is holding back the potential for mass adoption when it comes to these decentralized applications and Web 3.0 in general.