You might hear this term from time to time, and you have perhaps not spent much more thought on it.
But you are definitely missing out on something great, so let me give you an introduction!
A thread.
1. The internet today
Nearly all websites you visit every day are a perfect model of how the internet works today.
Someone creates a service (a website, e.g.), hosts it somewhere, and has it under full control.
1/24
If you own an app, you decide what happens. You store the data. You can often decide what you do with it.
And most importantly: You can prevent certain users from participating if you don't feel like they deserve to be around.
2/24
A client is distributed by hardware under your control and talks to software that you built on servers that you control.
This is a centralized architecture, and it works well.
Everything is controlled by one entity that manages the service.
3/24
2. Enter dApps
dApp is short for decentralized application.
Those applications basically live on a blockchain.
They have no dedicated backend other than the blockchain.
Their APIs are composed of smart contracts executed by blockchain nodes.
4/24
Their frontends are often distributed through decentralized systems, although many dApps are still distributed through traditional channels like web hosters.
All data of a dApp is stored on a blockchain and is thus distributed.
No one really has full control over it.
5/24
A dApp thus exists of two components (like traditional apps):
1. A backend (smart contracts deployed to a blockchain) 2. A frontend (hosted somewhere, downloaded by you, executed in your browser)
6/24
To create more trust among its users, dApps are often fully open source.
If both source code and development are transparent, people can always see what exactly happens because there are no curtains.
This is, however, not a requirement for any dApp.
7/24
3. The goals of dApps
The goal of a dApp is to build a community-powered application that users can trust.
No central entity should control the app, its users, and the data behind it.
8/24
Everything is publicly available, and everyone can transparently check what exactly is going on in the dApp at any time.
This helps with detecting potential frauds or misbehavior.
9/24
A dApp can leverage the computing power of a whole blockchain network.
The more miners or validators there are, the more computing power to execute smart contract logic. This helps scalability as long as the blockchain scales.
10/24
Thanks to being based on a blockchain, a dApp can leverage cryptocurrencies for payments.
Especially users coming from heavily sanctioned countries or with questionable state authorities can still participate.
11/24
4. Nuances of dApps
A full dApp is achievable but sometimes not possible.
This is why there are nuances of dApps.
Some dApps still employ a traditional backend and only partially use blockchain technology. You could, however, argue that those are no real dApps.
12/24
Some dApps only consist of a frontend and leverage existing smart contracts to create something completely new.
They don't rely on their own smart contract logic and orchestrate existing functionality into something completely new.
13/24
5. How to get started
You can start with very little and work your way up slowly.
Get to know a few of the more popular client libraries you will need to interface with blockchains at all.
1. Web3.js 2. ethers.js
14/24
Then integrate MetaMask into your frontend, for example.
It's a browser extension that gives you a fully-fledged web wallet.
It's used to:
- Authenticate users
- Sign transactions
- Keep track of coins and more
I've implemented nearly a hundred smart contracts with Solidity during my short blockchain career, but I'm ready to drop Solidity right now if I think about WebAssembly on the blockchain.
Interested to learn more? Let's take a look at what WASM can do for blockchains!
π§΅ππ»
1/
Before we jump in:
If you don't exactly know what WebAssembly is, this thread might help you understand the basics first. ππ»