One of the most exciting applications of blockchain technology is the ability to use a decentralized application (dApp). They are similar to ordinary apps but use a smart contract as a back-end. Front-end code and user interfaces can be written in any language that can make calls to the smart contract. The code runs on a decentralized peer-to-peer network like Ethereum and records of the application’s operations are stored on the blockchain.
Web app models
To run any type of web application we need a few things: front-end, back-end, and a network. There are a couple of models to realize it. In the traditional way of making a web app, we must run it on our own server or pay a hosting provider for deploying it. In case the server goes down for some reason our application can’t be accessed. If a hosting provider decides to shut down our app, he can do it. So, we depend on a third party and have a single point of failure. We can monetize this model with advertisements and pop-ups. All earnings and expenses are paid with fiat money.
The next option is to use a Cloud model. There are many cloud service providers like Amazon, Google Cloud, Microsoft Azure and many others. They can give us computational power and storage on demand. We must pay for usage and again we can monetize it with ads. The cloud is more reliable than a single machine, but the cloud owner can always stop our application.
The next generation is the model. The big difference is that it is hosted on a decentralized network. We have smart contracts serving as back-end and the blockchain holds the dApps logic and data. The information is distributed on many nodes running on a decentralized peer-to-peer network. There are many options for dApp hosting and in most of them, we must pay with some cryptocurrency. Generally, the users of application or the contract owner must pay to work with it, because all actions including making transactions, uploading data, etc. are paid.
The project can be monetized with token mechanics – this means that there is a flow of tokens inside our dApp ecosystem. There are many ways to create a successful token economy model. For example, there can be some service the app provides for which the users are willing to pay. The most important thing is: users should have a good reason to buy and sell dApp tokens.
In most cases, the entire dApp code base is open source. This is not absolutely necessary, but otherwise, the community will be reluctant to trust the project.
Ethereum is perhaps the most popular platform for building dApps thanks to its very own language Solidity. This enables developers to form smart contracts using the Ethereum virtual machine (EVM). But there are many other options like ETC, EOS, Cardano, Tron etc.
The dApp front-end is still a traditional front-end application. However, one has the option to host it on a decentralized storage provider such as Swarm or IPFS. There is a JSON RPC communication between the front-end app and one of the nodes hosting the smart contract. The data stored in the blockchain is immutable and we are guaranteed to have access to our application as long as the blockchain system exists. The disadvantage of holding a large amount of data in the blockchain is the high price. The solution is to use a hybrid approach – the traditional way of storing data together with the decentralized one. There are no problems to combine the two approaches. Locktrip – a popular dApp for decentralized hotel and vacations booking uses blockchain technology when storing booking data and a traditional database when storing all the necessary large size data like hotels’ images, etc. Locktrip holds data about one hundred thousand hotels and has a centralized database allowing the users to make queries, searches, etc on the web site. But when they want to book a room, they make a transaction on the blockchain network and pay with tokens for it. So in some cases, we need some traditional back-end in addition to our dApp.
Type of dApps
In general, there are three types of dApps according to the Ethereum white paper. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts.
The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. The dApps can gather information for the real world with oracles and the facts like weather condition or plane schedule can be part of code logic.
Finally, there are applications such as online voting and decentralized governance that are not financial at all. These are the decentralized autonomous organizations (DAO). The general concept of a DAO is that of a virtual entity that has a certain set of members or shareholders which, perhaps with a 67% majority, have the right to spend the entity’s funds and modify its code. The members would collectively decide on how the organization should allocate its funds.
The dApp’s model is using blockchain technologies to create reliable web applications avoiding third party dependency and single point of failure. In some cases the traditional back-end is a good addition to decentralised one. The dApps can be monetized with token mechanics.