Introduction to Decentralized Application (dApp)

Introduction to Decentralized Application (dApp) 

A decentralized application (dapp) is an application built on a decentralized network that combines a smart contract and a frontend user interface. On Ethereum, smart contracts are accessible and transparent – like open APIs – so your dapp can even include a smart contract that someone else has written.


Before diving into dapps, brush up on blockchain fundamentals and understand about the Ethereum network's decentralized nature.

What is Blockchain? Click here

What is Ethereum? Click here.

What are Smart Contracts? Click here.

Proof of Work vs Proof of Stake? Click here.


The backend code of a dapp runs on a decentralized peer-to-peer network. In contrast, consider an app whose backend code is hosted on centralized servers.

To make calls to its backend, a dapp can contain frontend code and user interfaces written in any language (much like an app). Its frontend can also be hosted on a decentralized storage system like IPFS.

1. Decentralized - dapps operate on Ethereum, an open public decentralized platform where no one person or group has control

2. Deterministic - dapps perform the same function irrespective of the environment in which they get executed

3. Turing complete - dapps can perform any action given the required resources

4. Isolated - dapps are executed in a virtual environment known as Ethereum Virtual Machine so that if the smart contract has a bug, it won’t hamper the normal functioning of the blockchain network


To introduce dapps, we must first introduce smart contracts, which are, for lack of a better description, the backend of a dapp. Go to our smart contracts area for a more in-depth look.

A smart contract is a piece of code that stays on the Ethereum blockchain and executes precisely as it is written. You can't update smart contracts once they've been distributed on the network. Dapps may be decentralized because the logic built into the contract, not an individual or corporation, controls them. This also implies that you must carefully develop and extensively test your contracts.


1. Zero downtime – Once the smart contract is deployed on the blockchain, the network as a whole will always be able to serve clients looking to interact with the contract. Malicious actors, therefore, cannot launch denial-of-service attacks targeted towards individual dapps.

2. Privacy – You don’t need to provide real-world identity to deploy or interact with a dapp.

3. Resistance to censorship – No single entity on the network can block users from submitting transactions, deploying dapps, or reading data from the blockchain.

4. Complete data integrity – Data stored on the blockchain is immutable and indisputable, thanks to cryptographic primitives. Malicious actors cannot forge transactions or other data that has already been made public.

5. Trustless computation/verifiable behavior – smart contracts can be analyzed and are guaranteed to execute in predictable ways, without the need to trust a central authority. This is not true in traditional models; for example, when we use online banking systems, we must trust that financial institutions will not misuse our financial data, tamper with records, or get hacked.


1. Maintenance - Dapps can be more difficult to manage since the code and data uploaded on the blockchain are more difficult to change. Even if defects or security hazards are discovered in an older version, it's difficult for developers to make modifications to their dapps (or the underlying data held by a dapp) once they've been published.

2. Overhead in performance – There is a significant performance cost, and scaling is difficult. Every node performs and stores every transaction in order to reach the degree of security, integrity, transparency, and reliability that Ethereum strives to. Furthermore, proof-of-work necessitates time. According to a back-of-the-envelope calculation, the overhead is presently 1,000,000x that of ordinary computing.

3. Congestion in the network - When a single dapp consumes too many computing resources, the entire network becomes clogged. The network can now only process roughly 10-15 transactions per second; if transactions are put in at a quicker rate, the pool of unconfirmed transactions would soon grow.

4. User experience — It may be more difficult to design user-friendly experiences since the ordinary end-user may find setting up the tool stack required to engage with the blockchain in a truly safe manner too complicated.

5. Centralization — User- and developer-friendly solutions created on top of Ethereum's foundation layer may appear to be centralized services in the end. For example, such services might hold keys or other sensitive information on the server, use a centralized server to offer a frontend, or conduct crucial business logic before publishing to the blockchain. Many (if not all) of the advantages of blockchain over the previous paradigm are lost due to centralized control.


I write a daily blog post breaking down the Web3 and Useful Resources. It's free, takes less than 5-minutes to read, and you are guaranteed to learn something. Subscribe Now for Weekly Newsletter: