What was the last time you used a dApp? I bet many of us will answer never. Even a tech-savvy person can’t always tell a decentralized application from traditional software. So why does that matter at all?
Thanks to Bitcoin and other crypto reaching new all-time highs, developing dApps — apps that live on blockchains — is quickly becoming a hot topic. We’re here to help you separate hype from useful applications of this remarkable, though not-entirely-brand-new, technology.
Keep reading to learn how to develop dApps. It’s not that big of a deal.
- Decentralized apps run on multiple platforms at once — on a blockchain (in the form of a smart contract) and in mobile or web applications. Therefore, when you make a dApp, you rarely end up with a single application.
- The major hurdle with dApps is new user onboarding, as they need to be educated and provided with appealing user experiences.
- Before you develop a dApp, you need to choose a blockchain, decide if you want to go beyond transactions, and identify the solution’s architecture, among quite a few other things.
Table of Contents:
- Difference Between a dApp and App
- dApp Market Overview
- Pros and Cons of dApps
- Examples of Decentralized Apps
- Key Features of a Decentralized Application
- Architecture of a dApp
- Tech Stack for Building a dApp
- Create a Decentralized Application in 5 Steps
- How Much Does It Cost to Develop dApps
- How Topflight Apps Can Help in Building Decentralized Applications
Difference Between a dApp and App
We use traditional apps every day, whether to write an email in a web browser interface or check the weather on our mobiles. Such applications have one thing in common — they rely on working with servers to sync data.
Can you spot the difference between these apps?
Decentralized apps, on the contrary, run on peer-to-peer networks called blockchains, with no central servers. Their functioning depends on the consensus among blockchain participants, and there’s no need for a central authority.
|Quick note: a blockchain is a massive, distributed database where participants ensure its integrity by solving complex math problems and encrypting data.|
Some tech pundits argue that dApps are driving the web 3.0 revolution that seeks to replace centralized architecture with the decentralized, blockchain-based approach.
Also check out our article about the difference between web 2.0 and web 3.0.
You’ve probably come across this truism that “you’re the product” if you’re using software without paying for it. Well, dApps strive to return the power to the user by removing intermediaries and establishing trust through automated distributed cryptography.
What’s interesting about dApps vs. apps is that they often look the same to users on the surface. The only giveaway is dApps always have some crypto token and an economic model (tokenomics) built-in, but then again, there are plenty of centralized apps like CoinBase that deal with crypto and still depend on private servers.
|Quick note: if an app asks you to connect a crypto wallet, 99% of the time, it’s a dApp.|
So you can never tell whether you’re working with a dApp or a regular app based solely on its looks because they can look identical. However, advanced users can always work with dApps even without a graphical user interface. It’s the back-end stuff that matters when dealing with dApps.
We’ll talk about what’s so interesting about the back end of dApps shortly, but first, let’s briefly review what’s happening in the dApp market today.
dApp Market Overview
If you plan to create a decentralized app, it helps to know your competition and trends ushering the new wave of dApps.
I’d like to start by reminding you that peer-to-peer apps are not an entirely new concept. You’ve probably downloaded a couple of movies on services like BitTorrent. This software has been around since the early 2010s and also works off a decentralized protocol.
What makes modern blockchain protocols stand out is the new shared trust mechanisms that are cryptographically secured. This secure, immune nature of distributed ledger technology (DLT) expands over dApps and other intrinsic benefits they inherit from the blockchain.
|Quick note: DLT, or distributed ledger technology, is just another clever word for blockchain.|
We’ll look at the benefits that dApps bring to the table in a bit, but first, let’s see what decentralized apps exist today.
DappRadar lists close to 8,000 dApps tracked across 25 different blockchains:
The first thing you’ll notice when exploring the world of dApps is how many of them revolve around finances and games. That’s because these applications operate on blockchains, and blockchains live and breathe transactions: that’s their core function.
So if every action in a decentralized solution is a transaction on a chain, no wonder games and DeFi (decentralized finance) apps dominate the space.
Other notable categories of decentralized software include:
- marketplaces (took off with the NFT craze)
- identity management
As you can see, everything that has to do with digital assets gets a lot of users. At the same time, categories like Healthcare have little to show off:
The main premise is that dApps are perfect for financial apps, and health software needs to take into account HIPAA and patient data management. Companies are still figuring out how to approach that, and I’ll share a few ideas when we get to the steps for building a decentralized app on blockchain.
For now, let’s just appreciate that there’s a lot of momentum going in this space, presenting many opportunities for pioneers.
In terms of blockchains, most dApps live on Ethereum — the first blockchain to introduce smart contracts, making decentralized applications possible. Some other popular chains with dApps include EOS, Binance Smart Chain, TRON, and Neo.
Choosing a blockchain (or chains) to make a dApp is pretty significant, and we’ll cover it when discussing the steps for building a dApp.
Pros and Cons of dApps
Why do we even need decentralized software? After all, we already have a myriad of apps for pretty much everything. There have to be some advantages to switching to dApps.
Benefits of dApps
- no central authority
No central authority means there are no intermediaries, and users can transact directly with each other. This, in turn, implies fewer fees as users should only pay transaction fees, which generally are very low.
Another benefit is that a truly decentralized application can have multiple front ends. Virtually anybody interested in a product can create a user-facing interface working with an open-source, decentralized app since its code is stored transparently on a chain.
- impressive uptime
Smart contracts powering dApps operate 24/7, and as long as a blockchain housing the contract lives, they will continue to function flawlessly.
- ability to take part in the decentralized economy
Users working with decentralized applications typically do so due to financial gain incentives. They can earn tokens or cryptocurrency that can be traded or exchanged for fiat later on.
- security and data integrity
The major appeal of blockchain technology is its security because there’s no central point of failure. In other words, it’s next to impossible to hack a chain and take over a decentralized application.
All transactions can be traced on the blockchain; yet, they are completely anonymous.
Drawbacks of dApps
Since all transactions are publicly available on a chain, there’s an issue with storing customer data. How do you store their information without disclosing it to other users? There are workarounds, and I’ll touch on that in the development section below. However, remember that as a database, blockchain is the last technology you should consider for storing large amounts of data.
A dApp is more challenging to manage than a regular application because you need to account for blockchain specifics when designing a decentralized solution. For example, once such an application has been deployed to a decentralized network, it’s very difficult to update. Traditional mobile apps get updates on average within two weeks.
How well your dApp scales will largely depend on the network congestion. There’s a proverbial example of CryptoKitties that brought all transactions on the Ethereum blockchain to a screeching halt when thousands of people decided to try a crypto tamagotchi.
- user-friendly interface
A large proportion of dApps is built by developers who don’t necessarily have much UI/UX design expertise. As a result, an average Joe may find interfaces of many dApps quite intimidating.
Fortunately, these disadvantages are easily overthrown by the benefits of using decentralized software. Plus, certain workarounds may help you avoid most of these issues (more on that later).
Examples of Decentralized Apps
UniSwap is one of the leading decentralized exchanges. This dApp allows for seamless exchange of ERC20 tokens on Ethereum.
Rarenote provides personalized information on medicines under development and clinical trials for rare disease patients.
OpenSea is the largest peer-to-peer marketplace for NFTs, including gaming items, digital art, and other blockchain-based assets.
Key Features of a Decentralized Application
A dApp can have absolutely any feature that regular apps have had for years. Let’s think about a decentralized Uber app for a moment? Is it possible? Theoretically, yes. The app wouldn’t be as snappy, and we’d have to settle any issues with drivers ourselves, but in general — yes, that’s doable. This decentralized Uber would have all the features of the standard Uber app, including payments, search, messaging, notifications, etc.
All I’m trying to say is it’s hard to describe features of a “typical” dApp because it can be anything, right? Still, there are specific traits that all dApps must have to get any traction. What are these?
Since user onboarding to any decentralized app starts by connecting a crypto wallet, this becomes an essential part of any software working on a blockchain.
Your customers will need a wallet to receive bonuses and awards either in the form of virtual money, currency, or non-fungible tokens.
You can learn more about how to develop a crypto wallet in a separate blog.
A dApp always has the primary token that users need to access different software options. The token fuels any transactions that happen in the app’s background. We talk about how to create a crypto token in a separate blog.
Like any regular application, you’d expect a dApp to perform specific actions. The only difference with “normal” apps is that decentralized ones require transactions to function.
As already mentioned, other than these fundamental features, decentralized software can have absolutely any features we often find in other applications. That’s because, on the surface, we typically interact with traditional website-based and mobile apps while using dApps.
I can almost hear your, “Wait, whaaat?” Let’s go down the rabbit hole.
Architecture of a dApp
It’s time we take a look at a typical architecture of a dApp. Don’t worry, we won’t go too technical. There are just a couple of things you need to grasp, really.
Purely transactional dApps
We already know that dApps live on blockchains. To be more precise, the specific part that lives on a blockchain is a smart contract — a piece of software that automatically executes, e.g., to pay out a user’s bonus, transfer an NFT, or perform any on-chain action inside the app.
Users interact with a smart contract through the web, desktop, mobile, or any other type of software with familiar user interfaces. The only thing that often puzzles customers is they need to connect (or create and connect) a crypto wallet to work with a dApp.
Take any typical user interface, connect it with a smart contract so that user actions make the smart contract do different things — and you already have a decentralized application. That’s already enough for purely transactional dApps.
dApps and centralized servers
There’s one caveat, though. If you’re looking to build a decentralized app that allows users to do more than merely carry out transactions, you still need a server-based back end.
That’s where you will keep user data, such as their profile information, etc., because you simply can’t fit it onto a chain. That’s where you will be able to get reports and analytics on your dApp performance. In short, it’s going to be the other half of your decentralized dApp — and it’s going to be centralized.
Finally, if your smart contract relies on some external data, you will need to add decentralized oracles to the equation. Decentralized oracles work like nodes on a chain. They must come to an agreement about any piece of information before sending it to a smart contract.
We should also mention that your dApp doesn’t have to rely on a single smart contract. In fact, it’s common for complex decentralized solutions to run on multiple interconnected smart contracts that execute and can launch subsequent actions on other contracts.
Tech Stack for Building a dApp
To tell you the truth, the technology stack for creating a decentralized app can be completely different based on:
- blockchain you target
- front ends you envision (mobile/web)
- features your dApp offers
The standard kit for developing a dApp on Ethereum includes the Truffle suite of software along with Ganache, programming language Solidity, and development environment Remix.
You can use any appropriate technologies on the front-end side, e.g., React.js, Node.js, and Web3.js for web and Swift/Kotlin or React Native for mobile. For more detail on choosing a tech stack, check out this blog on how to develop a blockchain application.
Create a Decentralized Application in 5 Steps
As discussed in the architecture section, when you create a decentralized application with blockchain, you need to work on a smart contract and front ends.
The smart contract is a code that lives on a chain and executes automatically when certain conditions are met. Think of it as a sort of back end of your dApp.
Front ends are necessary for users to interact with the contract. These are traditional web and mobile applications, preferably with an appealing and intuitive interface.
In addition, you may have to develop a back-end system aggregating analytics and allowing you to run reports and manage some aspects of the dApp. Put simply, it’s a web application connected to the smart contract via oracles and APIs.
There are quite a few pieces to juggle, as you can see. A competent app development team skilled in building dApps will help you sort out all these technical intricacies. At Topflight, we’ve recently introduced a Pre-flight Workshop to help business owners approach this kind of technically challenging projects.
Here’s the 10,000-foot view of the steps you need to take when creating dApps.
Step 1: Build a smart contract
A smart contract or combination of smart contracts is where you’d put the decentralized logic of your dApp. What actions do you want the dApp to perform automatically, relying on the chain consensus?
Whether it’s going to be simple transactions, a chain of algorithm computations, or something else, all of these automatically executing features will need to reside in smart contracts.
Since smart contracts function on a blockchain, you’ll need to pick one or a few blockchains if you envision a cross-chain dApp. Typically, founders choose to create a dApp on Ethereum, but other chains support smart contracts too.
The Ethereum network is an easy pick because it has many users who already have crypto wallets and can onboard faster. However, if you plan to introduce your own crypto wallet, the users don’t even need to know which blockchain your dApp works on.
Related: Smart Contract App Development Guide
At the end of the day, if you are actually looking to onboard a massive, disparate audience unfamiliar with blockchain technology, it doesn’t matter what blockchain to onboard them on.
Step 2: Build front ends
Of course, you can’t make a decentralized app without developing “normal” user-facing mobile and/or web apps. By normal, I mean they shouldn’t look drastically different from other apps we use every day.
The fact that user actions trigger some smart contract functions on a blockchain instead of connecting with a central server should have a minimal effect on the UI.
Therefore, to create a captivating user experience, plan on starting with a prototype:
- low-fidelity UI
- high-fidelity UI
- user testing
- reinforce the UI/UX based on the feedback
Take into account that calling a smart contract function from a user-facing UI takes some time as transactions are not executed immediately on a blockchain. It’s a good idea to have some sort of animation built-in on the front end to show users their action is still in progress until it gets verified on the chain. Here’s how UniSwap handles that:
Another great idea is to simplify onboarding for users with existing wallets by integrating with WalletConnect and similar services that make it easy for users to connect their wallets.
You should also keep in mind that users might want to explore your solution before connecting their crypto wallets. So hiding all features until they do is probably not the best tactic.
Step 3: Create centralized back end
If you’re building Ethereum dApps that require massive data storage or plan on running reports or envision any other functionality that’s out of the scope of on-chain transactions, you will need a web solution on a private server.
Such an admin portal will connect to smart contracts and front-end applications for customers to offer additional features to you as a business owner (to control your dApp) and users.
Step 4: Test rigorously
Like with any other app development project, you should start testing your dApp as early as possible during development. Every new build has to go through a thorough QA process.
While testing front end apps is a more or less standardized procedure, smart contract testing is a little unique in that you have to use a testnet to verify its functionality.
Otherwise, once you’ve deployed a smart contract to the mainnet, such as Ethereum, you can’t longer modify it. This means any lurking bugs that made it to the mainnet will remain intact.
Step 5: Deploy and maintain
As a final step, you need to deploy your dApp. This involves uploading mobile apps to the App Store and Google Play, switching your back-end portal to a live production environment, and adding a smart contract to the blockchain. Services like Infura will help you lessen the DevOps efforts required for deploying a decentralized app.
As for maintenance, it’s more of an ongoing process. Even though the smart contract will remain the same as a blockchain app immune to changes, you’ll still need to update things on the front end.
How Much Does It Cost to Develop dApps
A prototype of a decentralized application may cost between $60,000 and $80,000, depending on its feature set, and the price for developing a full-fledged solution will depend on how many front ends you need, etc.
How Topflight Apps Can Help in Building Decentralized Applications
At Topflight Apps, we strive to balance at the cutting edge of technology, making sure it makes a real impact on your customers’ lives. Right now, we are in the process of polishing several dApps, focused around fintech and crypto.
Hopefully, this blog has helped you get a better picture of how to build decentralized applications. Feel free to schedule a meeting if you have more questions.
Frequently Asked Questions
How long will it take to create a dApp?
From four to six months for a prototype and around six-nine months for a complete solution.
Should I build a dApp on Ethereum or some other chain?
Ethereum is an excellent choice for simple transaction-based dApp. Otherwise, you can pick absolutely any blockchain that supports smart contracts and fits your use case.
What's the main difference between a decentralized app and other applications?
dApps connect to blockchains on the back end while regular apps work in tandem with centralized servers.
Can I use cross-platform mobile frameworks like React Native to make a decentralized app?
Yes, you can also use Flutter or any other similar tool as well as native programming languages.
How do I simplify onboarding for my customers?
Include integration with WalletConnect and similar services to allow customers to easily connect their crypto wallets.