What if I told you, you could make an unhackable application.In this guide we’ll go over what Decentralized Applications, or Dapps, are and how they are fundamentally changing the way that the web works. If AJAX requests and dynamic content created the need for Web 2.0, then DApps will bring on Web 3.0. These applications require a completely different tech stack than most developers are used to. But before we go into the details of what makes up these applications, we need to go over the paradigm shift that is motivating developers to build these applications.
Who owns data on the web?Way back in the early days of the internet (in the 1990s) the web started off as decentralized by nature. If you created a website and you wanted it to be accessed by anyone else, you had to buy a personal server and store it in your house. This means that you owned and controlled all of the data that you put on the internet. Since then a lot has changed in the realm of web hosting. The late 90s brought upon the dot com bubble and entrepreneurs started to figure out business opportunities of buying large servers and offering a service fee for hosting privileges. Slowly the web started to become more and more centralized and the data was controlled by fewer and fewer companies. Fast forward to today and there are only a handful of companies which see and control all of the data on the internet.
Why is centralization bad?It starts off with data privacy. When you login to Facebook or Snapchat or any other social media network, you’re giving up more data than you probably think. It’s well known that Facebook can read clipboard data, that means every time you copy on the web, this might be being read by a company. Not only do these sites not tell you what information there capturing, but you have little to no say in how they use it. To be completely honest, there’s a high likelihood that these companies themselves don’t even know how they use their data. Their marketing and advertising departments feed your data into machine learning algorithms to figure out what business decisions to make. But given the complexity of the data it’s impossible to discern how exactly the algorithm is making its decision. But that's a different topic for a different day!On a larger scale, centralization also has the potential to shrink the economy and disenfranchise the middle class.
The 3 types of applicationsThere are three fundamental types of applications that you should be familiar with, centralized, distributed, and decentralized.
Centralized systems - a single node has complete control of the flow of data. All nodes connected to this center node are dependent upon it for sending and receiving information i.e. if the central node goes down, the entire system goes down with it.
Distributed systems - each node handles part of the computations for the system. This helps speed up the processing time of complex operations
Decentralized systems - no single node is in control of any other node. If a node goes down the network is still able to operate
Centralized + DistributedSince most of the world's internet traffic is funneled through these companies server warehouses, the internet itself becomes centralized around these companies. And because each company owns hundreds of thousands of servers and distributes the computations it needs to perform between them, the internet is also distributed.
Distributed + DecentralizedBitcoin was one of the first decentralized applications. Thanks to new technology such as DApp
What makes up a DApp?
Fundamentally DApps rely on a system of trust between the business and users that relies on four primary features:
1. Open source - This means that the source code of the app is made publicly available with a license that allows anyone to study, change, or redistribute the source code.
2. Cryptocurrency - Introducing a token into the network allows some scarce resource to be traded among users
3. Decentralized Consensus - This is a fancy way of saying users of the application have a way of coming to an agreement as to what information is recorded. In Bitcoin this information is recorded on the public ledger, the blockchain. Bitcoin uses the Proof of Work Algorithm, but this is one of several.
4. No center node - As we mentioned earlier, this is a primary feature of decentralization. On the internet this can be accomplished through IPFS
The Tech Stack
If you're a web developer you're probably familiar with AWS, and 3rd party APIs. You might use Amazon S3 to store your files, Amazon EC2 instance to scale your application, and 3rd party APIs to provide your data. Now Ethereum and Truebit can be used to scale your computations, IPFS/Filecoin can store your files, and data can be provided through Oracles.
Benefits of using DApps
1. Users own the data
2. By using IPFS, the applications are immune to DDoS
3. Unless you have the computing power of ___ than the information on your app cannot be “hacked” or mutated