This is all you'll need to develop web3 apps (dApps)
Tags: web3, blockchain, dapp, smartcontract
Published: 2022-02-19 00:12:50

If you've been following the tech trends recently, you may now be just getting used to seeing and hearing these words - NFTs, blockchain, web3, cyberpunk, smart contracts, decentralisation, solidity, (add your own word).

Posts housing these terms have been thrown all over the web, I even bet some people would be mentioning NFTs in their morning prayers 😅😄.

However, there's still one term missing from the list that's now common especially among developers, the almighty "**dapp**" or "**decentralised app**".

In this post I'll try to explain what it is and the technologies you'll need when developing one.

### What is WEB 3.0
Web 3.0 is an idea for a new iteration of the world wide web based on blockchain technology.

It's an idea for a new way of information communication on the web based on blockchain.

### Web3 App (dApp)
A web3 app or dapp(decentralised app) for short, is a software in the form of websites, desktop apps, mobile apps, etc that has its backend code running on a blockchain network.

A web3 app has a backend that's deployed on a blockchain network from where it serves the frontend which can be written with any programming languge and deployed anywhere.

### Web3 Developer stack
A developer stack is a bag of technologies that a developer possesses. An example is MERN Stack which is short for MongoDB, Express, React, and Node. 

Similarly, web3 developer stack is a bag of web3 technologies that a web3 developer possesses. They are tools and technologies essential for web3 app development.

The tech stack of a web3 developer are:
1. Web3 libraries
2. Smart contracts
3. Nodes or Web3 providers
4. Wallet

#### 1. Web3 libraries
Web3 libraries are packages that we would usually use on our frontend which helps us interact with our backend which is running on a blockchain network, through a node (computer) on the blockchain network.

Web3 libraries are like regular web2 libraries like axios, react, graphql, etc; They are basically installed and used on the frontend side of our apps much like other libraries, except that web3 libraries help us interact with our backend servers which are made up of smart contracts deployed on blockchain network(s).

Web3 libraries simply creates an interface between our frontend app hosted on a cloud service like aws, and our backend smart contracts hosted on a blockchain network like Ethereum blockchain network.

Through this interface we can execute our contracts and make transactions on the blockchain network.

**Note:** The frontend of our apps or dApps can also be hosted on a blockchain network.

#### 2. Smart contracts
Smart contracts are pieces of codes or programs that reside on a blockchain network. They are like functions hosted and executed (on-call), on the blockchain. 

Smart contracts can be thought of as **open APIs**; they are public on the blockchain and as such can be invoked from anywhere e.g from terminals, web apps, web browser consoles, mobile apps, desktop apps, even from other smart contracts on the same blockchain network; with the help of web3 libraries.

Blockchain networks have specified programming languages which it's smart contracts should be written in. 

For example, if you want to write smart contracts that will run on Ethereum blockchain network, you have to write it in a programming language called [**Solidity**](https://en.m.wikipedia.org/wiki/Solidity).

Other blockchain networks have their own required programming languages and there are tools that will help you create and deploy the contracts from within one place e.g [Remix](https://remix.ethereum.org) for Ethereum blockchain.

#### 3. Nodes/Web3 Providers
Smart contracts on blockchain networks are decentralised, which means every computer connected to the blockchain network as a participant, has a copy of every smart contract deployed on the blockchain.

The computers on a blockchain network are also called "nodes" or "web3 providers", and it's in one of these nodes that the smart contract youdeploy to a blockchain network wll be executed when invoked. 

**Without a node there won't be any blockchain** because the nodes are the participants that form the blockchain network. Because of this, the only criteria for invoking a smart contract is that you must be connected to one of these nodes that houses and can execute it. 

You must connect to a node on a blockchain to be able to execute a smart contract deployed on that blockchain network.

This connection is what web3 libraries help you to setup and without access to a node, it can't really do anything.

#### 4. Digital Wallet
Each transaction run on a blockchain is run by the nodes on the network, some examples of transactions are: Transferring 1 Ethereum crypto currency from Bob to Alice, deploying your smart contract to the network, invoking your smart contract, etc.

Each of these transactions takes **computing power** from the node that it will be run in, therefore you have to pay a fee to that node; these are called "gas fees", and they are basically paid in native cryptocurrencies of the blockchain e.g ETH for Ethereum blockchain.

**Note:** For deploying contracts, the deployer has to pay. For executing contracts the user of the contract usually pays and the fee goes to the miner(node) that runs the transaction.

A Digital wallet is much like a physical wallet used to store currencies, except that digital blockchain wallets are used to store cryptocurrencies instead of fiat currencies like dollars, etc.

You will need a wallet for developing web3 apps because it is what will facilitate payments for the fees you have to pay for your transactions that will be run on the blockchain. Some example of crypto currency wallets are Metamask, Coinbase, etc.

#### That's all 🤷🤷...
So that's it folks!!. Those are pretty much the technologies and tools you'll be needing when developing a dapp.

Thanks for reading 🥕🥕... See you on the other side of the web 😅😅