Decentralized applications or DApps are a piece of software that communicates with the blockchain, which manages the state of all network actors. The interface of the decentralized applications does not look any different than any website or mobile app today. The smart contract represents the core logic of a decentralized application. Smart contracts are integral building blocks of blockchains, that process information from external sensors or events and help the blockchain manage the state of all network actors.
DApps are not something native to Ethereum only. Several blockchains like EOS, Tron, etc. have a multitude of interesting DApps built on top of them. Here is an article for you to know more about different DApps on all these platforms.
However, this article focuses on DApp Development on Etheruem using Solidity (for smart contracts), Web3 (communicate between the interface and the smart contract on the Ethereum) & some front-end framework(s) (To build the interface).
- Some familiarity with writing & deploying smart contracts using Solidity is needed. If you are new to Solidity, check out our Ethereum Smart Contracts Tutorial. You can also learn Solidity from this amazing tutorial.
- Familiarity with some frontend-development framework. Though not a hard prerequisite, it is better to have some working knowledge of frontend development. For resources, you can have a look at our wiki articles on React & Angular.
Web3 - The Start of a Decentralized Internet
Web 3.0 or simply Web3 is an inclusive set of protocols to provide building blocks for application makers. These building blocks take the place of traditional web technologies, but present a whole new way of creating applications.
To develop DApps, we must use some form of Web3 to interact with our smart contracts. In Web DApps, Web3 can be injected into the browser by tools like Metamask (a crypto wallet) or Mist browser. By injecting Web3, it means that they act as a provider for the
web3 object needed to interact with Ethereum.
web3.js is a collection of libraries which allow you to interact with a local or remote ethereum node, using a HTTP or IPC connection. The
- Here is a brilliant tutorial (with embedded videos) to get you started with using the
- Official Web3.js documentation
web3.py: Web3 for Python Developers
Web3.py, as mentioned in the official GitHub repository, is a python implementation of the web3.js API.For Python developer, Web3.py is the go-to library for interacting with the Ethereum Blockchain.
- This tutorial (with embedded videos) will introduce you to
web3library in Python & how to use it to interact with Ethereum.
- Official web3.py documentation
Ethereum DApp Development Tutorials
Following is a curated list of tutorials that will help you develop a DApp from scratch using Solidity & Web3, while integrating it seamlessly with your frontend interface:
- Create your own cryptocurrency on Ethereum: This tutorial focuses on how to code your own cryptocurrency on the Ethereum blockchain and sell it. It intends to first explain what are ERC20 Tokens on Ethereum & ICOs (Initial Coin Offerings), followed by a step-by-step guide to create your own ERC-20 token & build an ICO website deployed to the web. For interested readers, here is an article that talks about the specifics of ERC20 Token Standard.
- How to Code a Crypto Collectible: This video tutorial introduces the concept of Non-Fungible Tokens (NFTs), which can be created on Ethereum using the ERC721 Token Standard. Here, we create our very own customized crypto-collectible smart contract & build an interface to mint & display such NFTs. For interested readers, here is an article that talks about the specifics of the ERC721 Token Standard.
- Simple DApp with Ethereum & IPFS: This tutorial introduces the concept of decentralized file storage using something known as the Interplanetary File System (IPFS). Here is an interesting post that talks about IPFS, its components, need & utility. In this tutorial, we will create a DApp to upload a file to IPFS & then store its IPFS hash on the Ethereum blockchain using an interface created through React.