How to learn Web3
Hi, I am Francesco, and I share daily content about Web3 (mainly on X and YouTube)
In this article, I will summarize the steps you can take in order to learn Web3.
If you prefer a video version (it currently has 10000+ views) you can find it here:
How to learn web3 - Francesco on the right
Where to Start?
When we want to start something new, we need some direction just to don't get stuck at the very beginning.
But we all are different and we have different ways of learning.
This article is based on my very personal experience in learning Web3.
Roadmap
I don't like Roadmaps! But reading at least one can help us to have an idea of what we are expecting and to check if we are missing something.
Don't get a Roadmap as a bible to trust and to follow blindly 100%, but as a reminder if you are on the right track.
There are many roadmaps, and I am working on one.
For now, I feel recommending the following:
Blockchain Developer Roadmap - The Full Guide
Intro Article
What about the very first piece of content? I don't suggest jumping straight into code but hold our hands for a while and start by getting a general idea of what Web3 is.
This article by Nader Dabit on freecodecamp is a good one to start.
Blockchain Fundamentals
Starting with the basics concepts you can't really be wrong.
I will link specific resources for each of them but don't take this as the only one you have to watch to understand the concepts. Take your time because all the time spent here ios time saved later!
Just remember that the Fundamentals are fundamental, so don't skip this part.
- Web1, Web2, Web3: A good article about the differences between web1, Web2, and Web3
- What is a Blockchain: an enlightening video to understand the basic of the Blockchain.
- Distributed Ledger: It's the consensus of replicated, shared, and synchronized digital data that is geographically spread across many sites, countries, or institutions.
- Cryptocurrencies basics: An intro for an introduction to cryptocurrencies.
- Smart Contracts: Smart Contracts explained simply, in a 4-minutes video.
- Crypto-Wallets: An introduction to crypto wallets, connected to the concept of authentication in Web3.
- Block Explorers: A block explorer is an online tool that enables you to search for real-time and historical information about a blockchain, including data related to blocks, transactions, addresses, and more.
- Blockchain Oracles: A blockchain oracle is a service that connects smart contracts with the outside world, to feed information from (but also to) the world.
- NFT Intro: NFTs explained in 4 minutes.
- DAO Intro: A DAO, or a Decentralized Autonomous Organization, is a company set up to run by code on the blockchain.
- Dapp Intro: dApps, or Decentralized Applications are apps that run using blockchain technology.
Choose a Blockchain
Each Blockchain is an ecosystem, with pros/cons.
Choose a Blockchain to understand concepts and apply them, like deciding to use Node.js to build some API.
I suggest choosing Ethereum for many reasons, the main one is that there is more material about it online.
Ethereum Concepts
Once you choose the Blockchain you can start learning the fundamentals of the specific Blockchain. Some concepts overlap among the blockchains, but they can be slightly different for each of them.
For Ethereum:
- Accounts: An account is an entity with an ether (ETH) balance that can send transactions on Ethereum. Accounts can be user-controlled or deployed as smart contracts.
- Transactions: Transactions are cryptographically signed instructions from accounts.
- Blocks: Blocks are batches of transactions with a hash of the previous block in the chain.
- Ethereum Virtual Machine (EVM): The EVM allows developers to create Ethereum smart contracts.
- Gas: Gas is essential to the Ethereum network. It is the fuel that allows it to operate, in the same way that a car needs gasoline to run.
- Nodes & Clients: Ethereum is a distributed network of computers (known as nodes) running software that can verify blocks and transaction data. The software application, known as a client, must be run on your computer to turn it into an Ethereum node.
- Networks: Networks are different Ethereum environments you can access for development, testing, or production use cases.
- Consensus algorithms: Consensus mechanisms allow distributed systems to work together and stay secure.
Ethereum Concepts (Advanced)
If you want to dive a bit deeper, here are some articles and concepts you can look for:
- Ethereum Whitepaper: An introductory paper to Ethereum, published in 2013 before its launch.
- Ethereum Trilemma:
- EndGame (Vitalik Buterin): Vitalik Buterin's vision for a plausible roadmap for Ethereum.
- Ethereum Yellowpaper: A formal definition of the Ethereum protocol.
- Beacon Chain: The Beacon Chain is a ledger of accounts that conducts and coordinates the network of stakers.
- Sidechains: A sidechain is a separate blockchain that runs independently of Ethereum and is connected to Ethereum Mainnet by a two-way bridge.
- The Merge: The Merge is the most significant upgrade in the history of Ethereum. Extensive testing and bug bounties were undertaken to ensure a safe transition to proof-of-stake.
These are optional!
Choose a Language
- Solidity: good for JavaScript/C++/Python Developers.
- Vyper: good for Python Developers.
- Rust: good choice if you chose Solana as blockchain.
I suggest Solidity because it's the most popular one.
Solidity (a blazing-fast intro)
- It's an object-oriented, high-level language for implementing Smart Contracts.
- It's statically typed.
- It's a curly-bracket language designed to target the Ethereum Virtual Machine.
- It supports inheritance, libraries, and complex user-defined types.
This is how a Solidity file (extension: .sol) looks like
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract HelloWorld {
string public greet = "Hello World!";
}
In the next sections, some free resources you can use to learn and start using the solidity programming language.
Solidity Videos
Some good YouTube channels to know more about Solidity:
- Learn Solidity, Blockchain Development, & Smart Contracts | Powered By AI - Full Course: Patrick Collins Foundry Version
- Learn Blockchain, Solidity, and Full Stack Web3 Development with JavaScript – 32-Hour Course: Patrick Collins Javascript Version on freeCodecamp
- Solidity, Blockchain, and Smart Contract Course – Beginner to Expert Python Tutorial: Patrick Collins Python version
- Dapp University: Gregory (Dapp University)
- Smart Contract Programmer: A good channel with videos straight to the point.
Solidity tools
- Remix IDE: A very good to get started without setting up a local environment)
- Solidity Docs: Solidity Official documentation
- Solidity Cheatsheet
- Cryptozombies: a nice online tutorial to get started.
- Solidity by Example: A compilation of examples illustrating different solidity concepts for both beginners and advanced.
Use a framework
Once you get the basics, you can dive deep using these tools and working in a local environment.
- Metamask: MetaMask is a software cryptocurrency wallet used to interact with the Ethereum blockchain.
- Vs Code Solidity Extension: VS Code extensions that integrate with the Nethereum code generator to create Contract integration definitions.
- Truffle: Truffle is a development environment, asset pipeline, and testing framework for developing smart contracts.
- Hardhat: Hardhat is an Ethereum development environment. Compile your contracts and run them on a development network.
- Brownie: Brownie is a Python-based development and testing framework for smart contracts.
- Foundry: Foundry is a fast, portable and modular toolkit for Ethereum application development written in Rust.
Connect the Dapp to Frontend
Are you a front-end developer? GOOD!
For once, you don't have to learn a new framework, just use a library to interact with the blockchain!
You can use any frontend Framework (React, Vue, Angular, Svelte...)
Use:
- Web3.js: web3.js is a collection of libraries that allow you to interact with a local or remote ethereum node using HTTP, IPC or WebSocket.
- Ether.js: The ethers.js library aims to be a complete and compact library for interacting with the Ethereum Blockchain and its ecosystem.
Decentralized storage
Here are some examples of storage you can use to store your data on the blockchain (something similar to databases).
- IPFS: The InterPlanetary File System is a protocol, hypermedia, and file sharing peer-to-peer network for storing and sharing data in a distributed file system.
- Arweave: Arweave is a data storage protocol. It's built on a technology called "blockweave".
- FileCoin: Filecoin is an open-source, public cryptocurrency and digital payment system intended to be a blockchain-based cooperative digital storage and data retrieval method. It builds on top of IPFS, and it allows you to rent unused hard drive space.
They are a p2p network of user-operators who hold a portion of the overall data.
Mid-level tools
Most of them are not complicated. To be honest, they simplify the process, but it's better to discover them after understanding the basics.
- Testing Tools: Waffle, Ganache
- OpenZeppelin
- WalletConnect: WalletConnect is an open-source protocol for connecting decentralized applications to mobile wallets with QR code scanning or deep linking.
- Chainlink: Chainlink is a decentralized oracle network that provides tamper-proof inputs, outputs, and computations to support advanced smart contracts on any blockchain.
- TheGraph: The Graph is an indexing protocol for organizing blockchain data and making it easily accessible with GraphQL.
SDKs
After getting an Idea of what a Dapp is and making some examples, you can decide you want some support and don't write everything on your own.
Here are 3 good ones you can check:
- Alchemy SDK: to connect your Dapp to the blockchain.
import { Alchemy } from 'alchemy-sdk';
// Using default settings - pass in a settings object to specify your API key and network
const alchemy = new Alchemy();
// Access standard Ethers.js JSON-RPC node request
alchemy.core.getBlockNumber().then(console.log);
// Access Alchemy Enhanced API requests
alchemy.core
.getTokenBalances('0x3f5CE5FBFe3E9af3971dD833D26bA9b5C936f0bE')
.then(console.log);
// Access the Alchemy NFT API
alchemy.nft.getNftsForOwner('vitalik.eth').then(console.log);
// Access WebSockets and Alchemy-specific WS methods
alchemy.ws.on(
{
method: 'alchemy_pendingTransactions'
},
res => console.log(res)
);
- thirdweb TypeScript SDK: a support SDK to write Smart Contracts. This is the Typescript version
// my_script.js
import { ThirdwebSDK } from "@thirdweb-dev/sdk";
// instantiate the SDK in read-only mode (our example is running on `polygon` here)
// all major chains and testnets are supported (e.g. `mainnet`, `rinkeby`, `goerli`, 'polygon', 'mumbai', etc.)
const sdk = new ThirdwebSDK("polygon");
// access your deployed contracts
const nftDrop = sdk.getNFTDrop("0x...");
const marketplace = sdk.getMarketplace("0x...");
// Read from your contracts
const claimedNFTs = await nftDrop.getAllClaimed();
const listings = await marketplace.getActiveListings();
- Moralis SDK: How to connect to a Moralis Server using the Moralis SDK guide.
This is how to initialize the Moralis SDK
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById("root")
);
Build projects
Build projects! I leave a couple of places where you can get inspiration for building projects, but there are way more on YouTube
Build in Public
Build in Public!
Not a Web3-specific thing, but if you build in public, there are some benefits for you:
- You get a better understanding of the concepts.
- You get an audience.
- You connect with people with the same interests.
All I do is public: https://github.com/FrancescoXX/free-Web3-resources
Here is a video of me following a tutorial on LearnWeb3 DAO
Join a Community!
Last but not least, joining a community can be super useful.
Good examples:
If you are a Content Creator, You can also join 4C, the Cool Community of Content Creators, the community I founded.
We have a specific section for Web3.
If you are still reading, just leave feedback.
Thank you!
Thanks for reading! You can find Francesco here