Roadmap to Blockchain Development: 2024
Tags: blockchain, hardhat, solidity, web3
Published: 2024-05-04 08:32:58

Blockchain technology has emerged as a disruptive force, offering decentralized solutions to traditional centralized systems. Blockchain technology, initially popularized by cryptocurrencies like Bitcoin, has evolved far beyond its origins to become a revolutionary force across industries. At its core, blockchain is a decentralized and immutable ledger that enables secure and transparent transactions without the need for intermediaries. This groundbreaking technology has the power to reshape various sectors, including finance, supply chain, healthcare, and beyond.

Blockchain development encompasses a wide range of opportunities, from building decentralized applications (dApps) and smart contracts to creating custom blockchain solutions tailored to specific business needs. Whether you're interested in finance, supply chain management, healthcare, or any other industry, blockchain offers innovative solutions to complex challenges.

In other terms, blockchain development can only refer to two things: blockchain core development and blockchain app development (also known as Web3 development).
Blockchain core development is the creation of software that runs blockchain networks, such as the Bitcoin client or the guest client on Ethereum, whereas blockchain app development is the creation of applications on top of the blockchain, also known as a decentralized application or dApp.

Because blockchain clients must be very performant, we must employ low-level programming languages such as C, C++, Golang, Rust, and others. These languages are significantly more difficult to learn than other high-level languages like Python and Javascript, which are suitable for developing blockchain apps.

Interestingly, the majority of blockchain developers do not work on core development. Most blockchain developers specialize in blockchain app development, which means they create apps on top of the blockchain.
For the rest of this post, we will concentrate on blockchain application development.


## Decentralized Application (dApp)

This is the type of application you may create as a Web3 developer; a decentralized application (dApp) is one that you create on top of the blockchain. Although there are pros and cons to developing blockchain-based applications, Web3 projects are mostly divided into two types.

1. Decentralized Finance: This is basically finance reinvented on the blockchain.
2. Non-Fungible Tokens (NFTs) are a mechanism to establish digital assets on the blockchain network.


## Architecture of a dApp


- Ethereum: The blockchain at the bottom, though not directly part of a dApp, serves as an underlying structure for the dApp's development.

- Smart Contract: A small program that exists on the blockchain. A key component of a dApp. This is where you place your most crucial data; everything regarding ownership and what needs to be decentralized.

- Web/mobile frontend: Allows users to access and modify the data of the smart contract.

- Wallet: Reading data is simple, but modifying data is complex. Users must send a signed data packet known as a transaction, which requires the usage of a wallet. A wallet is client-side software. It stores the user's private key, which is analogous to a password in the Web3 environment.The private key is naturally paired with the user address, similar to a username.


## The Blockchain

Blockchain is a distributed data storage technology that cannot be controlled or manipulated by a single entity. There are several blockchains, including [Ethereum](https://ethereum.org/en/), [Avalanche](https://www.avax.network/), and [Solana](https://solana.com/), and each has a committed following. This assumption begs the question: do you have to learn all these blockchains? The answer is **No**! There is only one blockchain that actually matters: [Ethereum](https://ethereum.org/en/).
A large portion of the employment market is for Ethereum. Ethereum was able to build a vast community of users, developers, and investors. And now there's a massive network effect.
Another key fact is that many blockchains are built on Ethereum technology. We also claim they're EVM-based. This allows them to tap into a pool of developers who are already familiar with Ethereum, as well as a pool of consumers who are already using Ethereum tools such as [Metamask](https://metamask.io/).


## What do you have to know about Ethereum?


- Cryptography: Cryptography can be quite complex, but you only need to understand a little portion known as cryptographic hashes.
Hashes are fundamental building blocks that are utilized throughout blockchain; it is critical to understand them.

- Blockchain fundamentals: You can learn about the Bitcoin blockchain because Bitcoin pioneered the technology. You need to understand the concepts of private keys and addresses, wallets, data structure, and the Proof Of Work (POW) algorithm. 

- Ethereum fundamentals: Understand the fundamentals of [Ethereum](https://ethereum.org/en/), including private keys and addresses, transactions and wallets, data structure, and the Proof of Stake (POS) mechanism. Similarly, it is crucial to understand what makes Ethereum so special, which is the Ethereum Virtual Machine and the smart contracts.


## Smart contract development

Another item on the roadmap is smart contracts. There are several languages for constructing smart contracts, but the most common is Solidity.
To build smart contracts, you will need to learn Solidity, which appears similar to Javascript but is different since it is a typed language.
However, there are a few additional techniques involved in establishing a smart contract that will be addressed further below.


- Remix IDE: Using [Remix](https://remix.ethereum.org/) (an online Integrated Development Environment) for Solidity is an excellent method to experiment with the language. You do not need to install anything when using Remix. You just launch the website and you may begin developing and executing Solidity smart contracts straight away.

- Hardhat: After you've learned how to utilize Remix, the next step is to understand how to use smart contract frameworks. There are other frameworks for developing smart contracts; I recommend focusing on [Hardhat](https://hardhat.org), which is the most popular. Most Web3 projects utilize Hardhat, and most employers require that you understand it. Hardhat allows you to create, deploy, and test your Solidity smart contracts; it includes a ton of plugins, making it quite powerful.
It also has a built-in development blockchain that is ideal for testing. You may also add a frontend folder to your Hardhat project with ease.
Hardhat is developed in [Node.js](https://nodejs.org) and is accessible as an NPM package, making it simple to install and configure.
Other notable frameworks include: [Truffle](https://archive.trufflesuite.com/), [Brownie](https://eth-brownie.readthedocs.io/en/stable/), [Foundry](https://github.com/foundry-rs/foundry), [Cobra](https://github.com/cobraframework/cobra) and more.

- Testing: When learning how to create using Hardhat, it's important to understand how to test smart contracts. Testing is really crucial! We cannot update the code of a smart contract once it has been deployed.
As a result, if a feature does not work correctly or if there is a security issue, it is extremely difficult, if not impossible, to repair a smart contract that has already been deployed, and we require a thorough test suite to develop tests.
To develop a test with Hardhat, you may write it in Node.js or Javascript and utilize [Mocha](https://mochajs.org/) and [Chai](https://www.chaijs.com/), two Node.js testing packages.

- Tokens: Tokens are digital assets stored on the blockchain and are used for the majority of DeFi and NFT applications. ERC20 and ERC721 are the most popular tokens on the Ethereum network. ERC20 is the most widely used token standard on the Ethereum blockchain, and it is used for fungible tokens, such as cryptocurrencies, utility tokens, and other digital assets, in which each token is equivalent to another token of the same type. Meanwhile, ERC721 is a token standard for non-fungible tokens (NFTs), which represent unique, non-interchangeable assets. Each token has different attributes and metadata, making it unique and recognizable from other tokens of the same type. Tokens enable the production of digital collectibles, unique in-game assets, digital art, real estate and more.

- OpenZeppelin: It is typical for smart contract developers to generate or modify ERC20 and ERC721 tokens. This is why engineers built the Solidity library known as [OpenZeppelin](https://docs.openzeppelin.com/).
The main advantage of utilizing OpenZeppelin is that its code has been thoroughly inspected and has gotten attention from numerous engineers. As a result, you may be certain that it is completely secure and bug-free.
OpenZeppelin is a must-know for any Web3 developer. Aside from the conventional implementations of ERC20 and ERC721, OpenZeppelin also includes a number of utilities that are quite helpful for smart contracts.

- Public testnets: Public testnets are alternate blockchains that developers use to test smart contracts. There are various public testnets, the most popular of which is now Goerli. Public testnets are totally independent from Ethereum's real network, known as the mainnet, allowing you to test your smart contracts without any real-world effects.
In contrast to the local development of Hardhat, public testnets run on public networks. They are not local to your computer, and thus it is a more realistic testing environment.
So, typically, the workflow is that you start deploying to your local development blockchain, then you do the same on a public network.


- Faucets: Faucets are an essential tool when working with testnets. Faucets will offer you some free testnet ether. Every public testnet has its own faucet.


- Etherscan: When you deploy to a public testnet, you'll also require a piece of software called [Etherscan](https://etherscan.io/). Etherscan is a blockchain explorer, which allows you to check that a transaction was mined on the Ethereum blockchain. Etherscan can potentially be used on both the mainnet and the public testnet.

- Infura: Infura is another service you'll most likely utilize. When connecting to a public testnet or mainnet, you must run your own Ethereum node, which is not straightforward.
You'll need a strong machine and some knowledge of how to host an Ethereum node, but it's much easier to utilize Infura, which runs Ethereum nodes and exposes them through an API.
Simply create a free account to have access to the API.
Aside from Infura, there are a few more services, such as [Quicknode](https://www.quicknode.com/), [Alchemy](https://www.alchemy.com/), [Moralis](https://moralis.io/), and [Thirdweb](https://thirdweb.com/).


- Frontend: The next step on the road plan is to learn how to construct the frontend. So, if you have a smart contract on the blockchain, the only method to communicate with it is via the command line.That is why you need to create a frontend that allows users to interact with the smart contract.
Decentralized applications are created by combining a smart contract and a frontend.
The frontend can be either a mobile app or a web app, however the latter is more common. A dApp's frontend is 90% identical to that of a web app, using HTML, CSS, Javascript, and, optionally, a frontend framework such as [React](https://react.dev/).
Additionally, there are two blockchain-specific problems to consider. The first is the integration process and secondly the integration with the wallet.


- Ethers/Web3.js: [Ether.js](https://docs.ethers.org/v5/getting-started/) is the most popular library for integrating with blockchain and wallet. The most particular goal with Ether.js will be to communicate with smart contracts, which includes both reading and writing data through transactions. It is a Javascript library that can be used on both frontends and backends.
[Web3.js](https://web3js.org/) has comparable functionality, however Ethers.js is now growing in popularity.


- Wallet: It is up to you to determine which wallet to offer in your dApp, but you should at the very least support [Metamask](https://metamask.io), the most popular wallet for Ethereum and other Ethereum-based blockchains. Metamask supports both Ethers.js and Web3.js.
Metamask is a Google Chrome extension that injects itself into your Javascript code whenever the web browser runs your dApp's frontend. Thus, in your dApp, you will interact with the Javascript object that was injected.


**CONGRATULATIONS! YOU ARE NOW A WEB3 DEVELOPER** 🚀


## Specialization in Web3

If you want to be more competitive in the job market, you should specialize. There are three ways to specialize in Web3.

1. Security
2. DeFi
3. NFT

You may become a smart contract security expert. This is what generates the highest pay. To be really proficient in smart contract security, you must have a thorough understanding of Solidity, especially Assembly, a low-level language within Solidity. Generally, you will need to understand the Ethereum Virtual Machine (EVM). You will also need to understand gas optimization.
Of course, you'll need to understand all of the security vulnerabilities in smart contracts and how to rectify them.

Another approach to specialize is through DeFi. DeFi, or decentralized finance, is a typical use case for Web3 apps. DeFi represents a fundamental shift in the way financial services are delivered and accessed, bringing greater inclusion, efficiency, and innovation to the global financial ecosystem.
Lastly, to become an NFT specialist, you must learn how to create an NFT collection, manage Metadata, and mint new NFTs. You may also learn how to establish an NFT marketplace, such as [Opensea](https://opensea.io/).

Finally, as someone who is deeply engaged in blockchain development, I believe in the value of continuous learning, experimentation, and collaboration. Whether you're a seasoned developer trying to broaden your skill set or a beginner to blockchain development, there are plenty of resources, courses, and communities to help you get started.

If you're interested in exploring blockchain development further or discussing potential collaboration opportunities, I would be delighted to connect and exchange ideas.