Roadmap to Web3 and Blockchains
What is Web3?
Web3 is a term used to describe the next generation of the World Wide Web, which aims to bring more interactivity and flexibility to the internet. It is based on the idea of using decentralized, distributed technologies like blockchain and peer-to-peer networks to give users more control over their online experiences.
Why learn Blockchain and Web3?
Blockchains and web3 technologies are emerging as powerful tools for building decentralized, secure, and transparent systems. Learning about these technologies can provide valuable insights into how they work and how they can be used to create innovative solutions for a wide range of industries. Additionally, as the adoption of blockchains and web3 technologies continues to grow, knowledge of these technologies can also be a valuable skill for job seekers in the tech industry.
Note: In case of any doubts while going through this roadmap, You can post your query on the Web3 Channel on the discord server of Programming Club, IIT Kanpur.
Week 1: Introduction
Bitcoin is a remarkable cryptographic achievement, and the ability to create something that is not duplicable in the digital world has enormous value — Eric Schmidt
Blockchain is the tech. Bitcoin is merely the first mainstream manifestation of its potential — Marc Kenigsberg
The above given quotes sound good. You can appreciate it better if you have an idea regarding what BitCoin and Blockchain really are. So, this week we will introduce you to Web3, blockchains, and BitCoin.
Days | Resources |
---|---|
Day 1-2 | You must’ve come across the term Web3. Ever wondered what exactly it is? Web 3.0 generally refers to the next generation of the world wide web. Just like Web 2.0 started from an abstract concept of sending information on an open network, Web 3.0 goes deeper into building a fairer and more transparent internet. For this reason, Web 3.0 is often associated with blockchain technology. To get a better understanding, go through the following video: What is Web 3.0? Another term you surely have heard is blockchain, which is a system of recording information in a way that makes it difficult or impossible to change, hack, or cheat the system. A blockchain is essentially a digital ledger of transactions that is duplicated and distributed across the entire network of computer systems on the blockchain. To get a better idea of how this is achieved you can refer to the following videos: • What is Blockchain? | Technology behind Bitcoin • Cryptography | Blockchain Here are some more details on blockchain and a nice visual demo of blocks in a blockchain. For better understanding, read. |
Day 3 | A question that arises is why we need a blockchain. Refer to the following video to find the answers to your curiosity: Why blockchain? Other than this, in recent times, there has been a lot of buzz about bitcoins and cryptocurrency, with lots of investors investing in it, calling it the future. Let’s go behind the curtains to find out How does bitcoin actually work? |
Day 4 | Extra Reading to increase your understanding: • Fork blockchain -Wikipedia • Merkle tree - Wikipedia |
Day 5-7 | Now, we will explore “Consensus Mechanisms”. Consensus mechanisms are the complete stack of ideas, protocols, and incentives that enable a distributed set of nodes to agree on the state of a blockchain. These are what maintain the “Secure” and “Decentralised” nature of the blockchain. The two most widely known consensus mechanisms are: • Proof of Work | ethereum.org • Proof of Stake | ethereum.org Here are some more resources that we think might help you in exploring the topic more. However, don’t limit yourself to this; there is a lot of literature to explore on the internet. • Proof of Work vs Proof of Stake: Basic Mining Guide - Blockgeeks • Proof-of-stake (PoS) | ethereum.org • 51% Attack: Definition, Who Is At Risk, Example, and Cost • Consensus mechanisms | ethereum.org |
Week 2: Ethereum and Smart Contracts
Although the Ethereum blockchain is a public blockchain, it is great to see private and consortium blockchains using the Ethereum code base actively under development. —Vitalik Buterin
This week, you’ll learn about Ethereum and Smart Contracts.
Day Number | Resources |
---|---|
Day 1-2 | Ethereum is a decentralized, open-source blockchain with smart contract functionality. Smart contracts allow participants to transact with each other without a trusted central authority. A sender must sign transactions and spend Ether, Ethereum’s native cryptocurrency, as a cost of processing transactions on the network. Check this now: Intro to Ethereum | ethereum.org, Vitalik Buterin Describing Ethereum Ethereum was conceived in 2013 by programmer Vitalik Buterin when he released the Ethereum Whitepaper (Ethereum Whitepaper | ethereum.org). In 2014, the development work began and was crowdfunded, and the network went live on 30th July 2015. |
Day 3 | Ethereum currently runs on the Proof of Stake(PoS) consensus mechanism post “The Merge” which shifted Ethereum from Proof of Work(PoW) to Proof of Stake. The Merge was executed on 15th September 2022. Read more about the merge here: The Merge | ethereum.org |
Day 4 | Smart contracts are the fundamental building blocks of Ethereum applications. Nick Szabo coined the term “smart contract”. In 1994, he wrote an introduction to the concept and, in 1996, an exploration of what smart contracts could do. Here is an interesting explanation of Smart Contracts by Vitalik Buterin: Smart Contracts - Vitalik Buterin |
Day 5 | Anyone can write a smart contract and deploy it to the network. You just need to learn how to code in a smart contract language and have enough ETH to deploy your contract. Deploying a smart contract is technically a transaction, so you need to pay Gas in the same way you need to pay gas for a simple ETH transfer. However, gas costs for contract deployment are far higher. Ethereum has developer-friendly languages for writing smart contracts: <ul><li>Solidity</li><li>Vyper</li></ul> |
Day 6 | Here are some resources to explore smart contracts more. Get your hands dirty and try to truly understand the essence of Smart Contracts and how they truly make the barebones of “Decentralised Networks”. • Smart Contracts | ethereum.org • Smart Contracts | Blockgeeks • Smart Contracts | IBM |
Day 7 | Read about the Ethereum Virtual Machine: • Ethereum Virtual Machine (EVM) | ethereum.org • Ethereum Virtual Machine (Solidity Documentation) Oracles provide Ethereum smart contracts with access to real-world data, unlocking more use-cases and greater value for users. Read more about them here: • Oracles - ethereum.org |
Week 3: Solidity
Now, having learnt about what smart contracts are and what they are capable of doing, the next thing that you should know is how do you write a smart contract.
Solidity is an object-oriented, contract-oriented, high-level language for implementing smart contracts. dive
Let’s start learning solidity.
Days | Info & Resources |
---|---|
Day 1 (OOP) |
It is mentioned that solidity is an object-oriented language. No idea what that means? Well, simply speaking, everything around us is an object. The notion that everything is an object is the concept that underlies object-oriented programming, or OOP for short. These objects contain data, which we also refer to as attributes or properties, and methods. Objects can also interact with each other. To learn more about the concepts of OOP, you can refer to this link. |
Day 2 (Solidity Basics) |
Now, we are good to go forward to learn about Solidity. It is influenced by C++, Python, and JavaScript and is designed to work on Ethereum, specifically the Ethereum Virtual Machine (EVM). Solidity is statically typed, and supports inheritance, libraries and complex user-defined types among other features. You will see it is possible to create contracts for voting, crowdfunding, blind auctions, multi-signature wallets and more using solidity. We aim to create and understand the implementations of such complex problems in the real world. Moving on to references and tutorials for solidity, TutorialsPoint is a very nice source for learning the basics of solidity. You can skip the Environment setup part and follow the remaining basic part for a quick review of the syntax of solidity. These 3 are the most important parts of the basic tutorial, though: 1) the different variable types in solidity 2) variable scope in solidity 3) some predefined variables that are very important in solidity for various purposes (you might have seen a few of them in the remix samples) It is always advisable to make modular programs. So, next in line, we have functions. Solidity has different types of functions, such as view functions that do not modify the state (any variable of the smart contract outside the function) and pure functions that do not read AND modify the state. These are mainly for security purposes and to ensure that unauthorized access to the state does not happen when it is not needed. |
Day 3 (Solidity Continued) |
You can read about these Function modifiers which are something new in solidity which isn’t there in any language that I am aware of. It uses the symbol _; to act as a placeholder for another function, and another function gets inserted into that placeholder when some condition is met. Go through further topics in the tutorial. (after functions till error handling) To get familiar with the OOP concepts of solidity, read about Contracts (basically like classes), Inheritance and Constructors in solidity. |
Day 4 (Remix IDE) |
The best way to try out Solidity right now is using Remix. Remix is a web browser-based IDE that allows you to write Solidity smart contracts and then deploy and run the smart contracts. Now, try out whatever you learned from solidity tutorials in Remix. |
Day 5-7 (Assignment) |
Now, you are familiar with solidity and remix. Here is one assignment you should try out to check if you have completely understood the topics. Assignment |
If you prefer to do a step-by-step tutorial and search away on google and docs whenever a new term pops up, then follow this tutorial from Dapp University. However, please have a look at the above pages after you are done with it! Solidity is the official solidity documentation if you like to follow official docs.
Week 4: WebDev
In this week, we will learn about web development which is necessary for developing Decentralized Applications
Also, feel free to take reference from the WebDev Roadmap. (link)
In the first 4 days, we will cover the basic building blocks of front-end web development(HTML, CSS,JS).
Day Number | Info & Resources |
---|---|
Day 1 | HTML Tutorial (w3schools.com) (Read till HTML Forms Section) |
Day 2 | CSS Tutorial (w3schools.com) (No need to go much deep into CSS for now, read till CSS Align) |
Day 3-4 | JavaScript Tutorial (w3schools.com) (Read till JS Modules) |
Day 5-6 | React is a popular front-end Javascript library developed by Facebook. Here are some resources to learn it. Getting Started – React Full Modern React Tutorial - YouTube |
Day 7 | Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine. It is a popular choice for developing backends if you are already familiar with Javascript. Here is a video to get you started: Node.js Tutorial for Beginners: Learn Node in 1 Hour About Rest API: RESTful APIs in 100 Seconds // Build an API from Scratch with Node.js Express |
Week 5: Dapps, NFTs, DeFi and more
After learning about the blockchain, the nodes, the consensus, all the major components of this technology and then frontend development, you’ll start to wonder, “What kind of applications can I develop using all this knowledge?” The applications built on top of Blockchain are called Decentralised Applications, or DApps.
Day Number | Resources | |
---|---|---|
Day 1 | Generally Dapps have: -<ol><li>A standard Front-end built using JavaScript or frameworks/libraries like React, Vue, etc.</li><li>A Solidity/Rust backend, built on top of the blockchain</li></ol>Check this: What is a dApp? Decentralized Application on the Blockchain Now moving on, as you guys know how to create Smart Contracts, you need a way to connect your DApp front-end with your local or remote Solidity backend, using anything from HTTP to Websockets. To do so you can choose between two JavaScript Libraries: 1) Web3.js - web3.js is a collection of libraries that allow you to connect with a local or remote Ethereum node using HTTP, Websockets, and other communication protocols directly from your JavaScript Based front-end. 2) Ethers.js - Ethers.js is a lightweight JavaScript library used as an alternative to Web3.js to connect the JavaScript front-end with Smart Contacts. Check this: Web3.js Intro · Web3.js · #1 Ethereum Blockchain Developer Crash Course |
|
Day 2 | If you don’t like JavaScript we have an alternative Web3.py - A Python library for interacting with Ethereum, inspired by Web3.js, many functions are similar. [Intro to Web3.py · Ethereum For Python Developers |
Dapp University](https://www.dappuniversity.com/articles/web3-py-intro) |
Day 3-4 | Now that you guys know about the whole frontend-backend stuff and how to connect them with your Dapps, we will move on to more advanced tools that are actually used in doing an actual project. First, you need to know about Ganache; it’s like a local blockchain simulator that helps us deploy and test our blockchain/smart contract using its fake addresses and balance tokens. You might be thinking that we get similar things on Remix IDE, so what’s the difference? The difference comes in when we have to deploy big projects where we will use Truffle, and Truffle works with Ganache. Moreover, as you know Solidity is not the only language used in blockchains, there are many other languages that work on Ganache but not on Remix. Hope you got some idea about Ganache, because now we are moving onto Truffle; It basically provides a developing environment for big projects which need integration of frontend and your smart contract. (Don’t mix these with cake types 😅) Advantage of all this is that using Ganache and Truffle will allow you to use your local editor like VS Code. (It’s similar to making an actual app using frontend and backend) It is what you can deploy your contracts to when trying to make the miner’s lives easier. You can plug front ends into back ends through localhost and all that good stuff. Here is a nice tutorial to install and run Truffle frameworks: Truffle Guide |
|
Day 5 | Moving towards the end of this roadmap, let’s explore NFTs short for Non Fungible Tokens; they represent ownership of digitally scarce goods such as pieces of art or collectibles. These tokens can be implemented on any smart contract based blockchains. It’s like the owner of the token owns the information stored under the token, because they store this information (metadata), they can be sold and bought just like any other physical collectible. But does that mean there is a single unique NFT of a type? No, you might have seen or bought multiple copies of the same NFTs, it totally depends on the owner of the NFT on deciding the number of copies to exist, like an artwork which has multiple copies around the world. This is sort of a technical mistake. Technically nothing stops you from creating multiple NFTs pointing to the same metadata, NFTs that contain unauthorized copies of some copyright content etc. Enough about NFTs right? Now let’s move to the most widely used purpose of a blockchain, its Digital Finance or DeFi. Blockchain technology has enabled permissionless networks that can be used by anyone, where built-in economic incentives ensure that network services can be maintained indefinitely without the aid of any individual company or central authority. Isn’t it great? This means that there is no third party lurking around our transaction and we are no longer dependent on them to verify it. But there is a downside to everything; Volatility is one of them and also you have to maintain your own records for tax purposes. Regulations can vary from region to region. NFTs are also used in DeFi, they can be used as collateral while taking a digital loan. Here are some cool blogs to better understand NFTs and DeFi: What is NFT and How Does NFT Work? Everything You Need to Know What Is Decentralized Finance (DeFi) and How Does It Work? |
|
Day 6-7 | Having completed this roadmap, we would recommend testing your newly developed skill using a self project. Some of the fascinating ideas to think about are: <ol><li>A Crowdfunding Platform using smart contracts- this would enable a safe way of funding, nowadays, the fundings get mixed or displaced, goes to someone else. Many problems like these would be tackled by this idea.</li><li>Peer to Peer Ridesharing - think an app like Uber developed on blockchains.</li></ol>For beginners you can also try a To-Do List app powered by Ethereum smart contract. Here is a YouTube link for reference from DApp university. There is also a playlist of other projects by Education Ecosystem (Note these are in Node.js but as you know it’s better to always learn along) |
What’s Next ?
To get a strong grasp on all the topics related to web3, try creating as many projects as you can. Also explore Hardhat and Alchemy.
Technologists and journalists have described Web3 as a possible solution to concerns about the over-centralization of the web in a few “Big Tech” companies. Some have expressed the notion that Web3 could improve data security, scalability, and privacy beyond what is currently possible with Web 2.0 platforms. Some Web 2.0 companies, including Reddit and Discord, have explored incorporating Web3 technologies into their platforms.
Therefore, there are a lot of opportunities in web3 as web3 projects are building infrastructure that matters, making way for traditional companies to join the fray.
We wish you all the best for your journey ahead!
Contributors:-
- Devansh Jain 9464327218
- Mohd Hamza 8795115039
- Geetika Gupta 9817323838
- Pratham Sahu 7619678791
- Divyansh Mittal 8851231264
- Shivam Mishra 8604397668