# 聊一聊Web3是什么，Web3从入门到精通开发学习路线

By [Blue](https://paragraph.com/@blue-9) · 2023-12-27

---

> 最近发现`Web3`这一块非常有意思，概念什么也很新颖超前，这篇文章主要是给大家讲讲关于`Web3`我的理解，以及如何入门去做这一块的开发。

### 一、介绍 Web3

`Web3`区别于传统的`Web2`的地方是后端这一块，以前我们传统的`Web2`应用，需要服务器来跑对应的后端服务，数据也需要放到数据库里(`MySQL`、`Redis`等)，`Web3`应用是把我们的后端服务(一般称链端)放到链上运行，数据等也是存到链上。

传统的`Web2`服务一般使用`Java`、`Go`等来写后端服务，`Web3`一般使用`Solidity`(最常用)或`Rust`等来编写智能合约部署到链上运行。

但`Web3`目前我接触下来发现一些优点和缺点。

优点：因为你整体的服务是放到链上运行的，除非你设置了一个权限很高的账号可以修改数据，或者你写的智能合约本身有安全漏洞（但使用你这个`Web3`应用的人都能看到你的智能合约代码，别人认为你的智能合约有漏洞之类的可以选择不用），否则数据是不容易被修改的。这也是为什么`Web3`中`Defi`项目(去中心化金融)很多。

缺点：也正是因为放到链上运行智能合约，如果你需要修改链上的数据，需要别人对你的数据进行打包确认，数据修改的即时性不是很高会有延时，从我使用`ETH测试链`部署的智能合约来说，修改一个数据，大约有几秒到十几秒延时时间，所以目前我感觉对即时性很高的应用不是很适合。

但`Web3`这块，目前还是一个蓝海，我个人包括有兴趣的小伙伴，下面我也列出一份学习路线。

### 二、了解Web3

学习`Web3`开发，希望各位小伙伴一定一定要会`科学上网`(非常重要)。目前很多的资料或问题都只有`Google`或国外才有。

要从事`Web3`开发，首先就是要了解区块链。

*   推荐一个视频：[北京大学肖臻老师《区块链技术与应用》公开课](https://www.bilibili.com/video/BV1Vt411X7JF/)，非常棒的新手了解区块链课程。
    
*   以太坊官网：[以太坊官网](https://ethereum.org/zh/developers/)，以太坊是我们做Web3开发最重要，也是应用最多的一条区块链。
    

### 三、学习智能合约开发(Solidity)

对区块链有了了解后，就需要进行`Web3开发`的核心，`智能合约(链端)`开发了，他是一个`Web3应用`的核心，当然前端也很重要，如果不会前端的小伙伴，后面也建议去学学前端哦。

*   `MetaMask`钱包：[MetaMask小狐狸钱包新手入门使用教程](https://mirror.xyz/yidakoumi.eth/dov9q_buGX_CeDavQBlPmB6c3p-Ok2QINXTpQhimYSc)，首先你需要先学习`MetaMask`钱包的使用，我们所有跟`Web3`应用的交互都需要通过一个钱包，这块非常重要。
    
*   `Solidity`开发：[WTF Academy(开发者的Web3开源大学)](https://www.wtf.academy/)，推荐至少学习`Solidity 101`、`Solidity 102`课程。
    
*   崔棉大师的视频课程：[Solidity8.0智能合约全面精通](https://www.youtube.com/playlist?list=PLV16oVzL15MS-Zw8a3eEOADwbHhm8GrMp)，如果你喜欢看视频学习的话，推荐崔棉大师的课程。
    
*   理想区块链视频课程：[智能合约solidity教程](https://www.youtube.com/playlist?list=PLfdytmZZ4Yl3hTfeROY-ptgbdcXg9Pybl)，这也是我经常看的。
    
*   `Solidity`官方文档：[Solidity 中文文档](https://learnblockchain.cn/docs/solidity/)
    
*   `Hardhat`框架： [Hardhat中文文档](https://learnblockchain.cn/docs/hardhat/getting-started/)，这是`Solidity`的框架，包含了智能合约开发、测试及部署，实际开发中我们也是使用框架进行开发。
    
*   `OpenZeppelin`智能合约库：[OpenZeppelin中文文档](https://docs.tokensafer.com/openzeppelin/index.html)，对于一些我们在开发中常用的智能合约库进行封装，我们可以直接引用，提高开发效率。
    
*   区块链节点：智能合约正式部署的时候我们一般需要用到节点商 [Infura](https://www.infura.io/zh) 或[Alchemy](https://www.alchemy.com/)
    

学习完上面的部分其实也已经跟着写了一些简单的智能合约项目了，比如如何`发币`或者`发NFT`其实我们已经知道了，我非常建议大家使用 [Remix编辑器](https://remix.learnblockchain.cn/) 试着开发自己的智能合约，如`发币`或`发NFT`等(只完成智能合约部分)，这个编辑器包含了开发、部署、和测试等，建议大家一定要完成全流程哦！

### 四、Web3 对应的前端开发

学习这块之前大家一定要有前端基础哦，没有的话建议先去学习学习！`Web3`对应的前端开发主要是学习前端如何通过钱包与我们的智能合约交互。相应的技术栈如下：

*   `Ether.js`，依然推荐`WTF Academy`的课程[Ethers.js 101 入门](https://www.wtf.academy/ethers-101)、[Ethers.js 102 进阶](https://www.wtf.academy/ethers-102)
    
*   `Ether.js`官网文档：[ethers.js 中文文档](https://learnblockchain.cn/ethers_v5/)
    
*   `wagmi`，一个`React Hook`的集合，包含了一些和智能合约交互的`Hook`：[wagmi](https://wagmi.sh/zh-CN)
    

### 五、实际项目推荐

学习完以上技术其实我们就有开发一个`Web3应用`的能力了。但是我们还需要实际项目来练手，这里附上我之前练手写的两个项目：

*   `Web3`投票项目：[智能合约链端](https://gitee.com/junkaione/web3-vote-server)、[前端](https://gitee.com/junkaione/web3-vote-frontend)
    
*   `Web3 TodoList`项目：[智能合约链端](https://gitee.com/junkaione/web3-todo-server)、[前端](https://gitee.com/junkaione/web3-todo-frontend)
    

进阶的话推荐学习下成熟的Defi项目：[Uniswap](https://app.uniswap.org/#/swap)、[Pancakeswap](https://pancakeswap.finance/)、[Sushiswap](https://app.sushi.com/swap)，可以在[Etherscan](https://etherscan.io/)找对应项目的智能合约源码看。

> 到此我们就有进行大型`Web3`开发的能力，后续还需要大家多多实践、学习、进步哦。有问题的话各位小伙伴也可以下面留言交流哦！

---

*Originally published on [Blue](https://paragraph.com/@blue-9/web3-web3)*
