全面系统的 Web3 学习路线,助你成为 Web3 开发专家

9,407 阅读10分钟

今天学习 Web3 和区块链开发就像昨天以 10 美元购买比特币一样。

区块链行业的薪水是非常可观的,全球范围内从事 Web3 的程序员平均年薪约为 14 万美元,当然国内可能会比这个平均年薪低一些,但仍然高于 Web2.0 的程序员。这可能是作为一个开发人员现在可以做出的最佳投资选择。

但是互联网上缺乏关于 Web3 的高质量资源,你很快就会发现,你虽然想学习 Web3 的开发,但是却不知道从哪儿开始。

我从 12 年跟着同学玩 BTC,后来把 6 个多 BTC 换了一个 LOL 两百多个皮肤的账号。即使现在 BTC 暴跌,6 个多 BTC 也能值 80 万左右人民币,但是我的那个 LOL 账号估计连卖几百块都难。

中间好几年没有怎么继续接触数字货币。

直到 17 年左右才开始重新接触数字货币,刚开始和朋友合伙挖矿,那时候天天跑机房,闲鱼买显卡,隐约记得那阵 RX 460 470 480 显卡性价比极高。后来开始炒币,天天盯盘,各种币都买,也碰到过百倍币。赚过一些钱,也赔过很多钱。

19 年我和朋友合作开发了一个区块链项目,用在本地一家大型的工业园区的建筑工地中,用来对建材进行追踪治理,很大程度上节约了成本,当然也得罪了一些人,因为区块链的可追溯性让一些原本能够在建材上面偷工减料的人没了钱赚,不过这种方式是园区的总经理大力支持的,实施下来虽然有阻力,但控制成本、追踪治理的效果也很显著。

在这个过程中,我也一直关注 Web3 的发展,从只知道概念,到逐渐学会了 solidity 语言、DApp 的开发等。但是从来没有认真细致地系统性归纳自己在 Web3 方面的知识体系。所以趁最近时间充足,多花些时间根据我个人对 Web3 的实际经验,整理一套关于 web3 和 Solidity 的学习路线。

这个学习路线足以让你从一个对 web3 完全零基础的 web2.0 开发人员过渡到 Solidity 语言专家和区块链专家。

区块链基础知识

区块链是 web3 的基础。你首先要了解它是如何工作的,以及它为什么会彻底改变我们交换商品和支付的方式。

区块链技术不仅仅是和加密货币有关,而是已经成为真正的分布式云计算系统,能够运行完整的后端(为了和 web2.0 时代的后端进行区分,我有时也习惯称它为链端)来为前端的去中心化应用程序 (DApp) 提供动力。

在学习完区块链基础知识后,你应该能够准确回答出以下问题:

  • Web1.0、Web2.0 和 Web3 的区别?
  • 什么是区块链?
  • 什么是分布式账本?
  • 什么是加密货币?
  • 什么是加密钱包?
  • 什么是区块链浏览器?

去中心化应用基础知识

当你了解了什么是区块链、Node、共识机制和这些技术的主要组件后,你应该会思考:“我可以使用区块链开发什么样的应用程序?”

建立在区块链之上的应用被称为去中心化应用或者被称为 DApp,它在大的结构上和传统 Web2.0 应用很像,包含两个部分:

  • 使用 JavaScript 或 React、Vue、Svelte 等框架/库构建的标准前端。
  • 使用 Solidity/Solana/Rust 等语言构建的后端,它们建立在区块链之上。

你除了要了解什么是去中心化应用,还要了解 DApp 的前端和后端是如何通信和交换数据的,你需要学习前端开发和后端开发,并且需要掌握 API 的基本原理。

前端开发相关知识

前面我有提到,去中心化应用需要有一个标准的前端项目,这就是为什么在开发你的第一个 DApp 之前,需要去学习前端开发的理由。

前端框架非常多,也非常复杂。我建议你只选择其中一门就可以了,比如当前使用人数最多的 React。

后端开发相关知识

DApp 的后端和传统 Web2.0 的后端有很多不同之处,其中最明显的是 DApp 的后端需要使用区块链作为去中心化数据存储的主要方式,而传统后端通常使用数据库或对象存储来存储数据。但是大多数技术原则仍然保持不变。
这里我建议你去选择一些比较流行的技术,比如学习 Node 和 Express。或者学习基于 React 和 Express 的全栈框架 Next.js。

以太坊概念和原理

以太坊是在计算机网络中运行的一种软件,同时也是一种数字货币。
大多数 DApp 现在都运行在以太坊区块链之上,智能合约概念也是由以太坊联盟首先推出的,然后被其他区块链抄袭。

每个区块链都有自己的生态系统,我们要从其中选择一条。

它们各自有各自的特点和优势,但是我推荐以太坊,原因是互联网上面关于以太坊的资料非常丰富。
要想在 2022 年成为 web3 和 Solidity 开发人员,了解以太坊的概念和原理是关键。

当你学完以太坊的概念和原理有,你应该能够准确回答以下问题:

  • 什么是账户?
  • 什么是交易?
  • 什么是块?
  • 什么是以太坊虚拟机?
  • 什么是 Gas?
  • 什么是节点?
  • 什么是以太坊网络?
  • 什么是共识算法?
  • 什么是以太坊三难困境?
  • 什么是信标链?
  • 什么是侧链?
  • 什么是合并?

智能合约的概念

以太坊和智能合约的关系就像微信和小程序,两者都需要了解。

智能合约是存储在基于区块链的平台上的软件,可以自动执行协议。

可以编写智能合约的语言有 Solidity、Rust 和 Vyper,其中最流行的是 Solidity。它是所有 DApp 的关键组件,运行 DApp 的业务逻辑并允许你在区块链上存储信息。

Solidity&Remix

了解了智能合约,接下来你要学习怎么样编写自己的智能合约,并使用它来支持你自己的 DApp。

虽然有多种语言可以编写智能合约,但我仍然推荐你学习 Solidity。

Solidity 是一种用于编写智能合约的高级、面向合约的编程语言,它允许程序员编写为区块链 DApp 提供动力的自执行代码。

Remix 是一款专门支持 Solidity 编写智能合约的编辑器。它运行在浏览器中,默认情况下,编译部署测试都不需要任何配置。

HardHat

Remix 虽然很强大,但根据我的经验来看,在本地搭建智能合约开发环境会有更好的体验。而 HardHat 就可以帮助我们实现这个目的,让我们在 VSCode 中编写 Solidity 智能合约项目。

HardHat 可以在多条链上创建、测试和部署 DApp,比如 Polygon、Ropsten、Ethereum Mainnet 等。

你还可以用它启动本地以太坊节点来测试你的智能合约,不需要将它们部署到公共区块链上。

Web3.js/Ethers.js

当你能够使用 Solidity 编写智能合约后,你还需要学习如何将你的前端连接到使用 Solidity 开发的后端。虽然和传统的 Web2.0 有些差异,但通讯方式仍然是类似 HTTP 或者 WebSocket 的东西。

在这个点上,有两个库可以选择:Web3.js 和 Ethers.js。

Web3.js 功能更加全面,Ethers.js 更加轻量。在用户数量上相差不多,但是在 npm 上面 Web3.js 的下载量会更高一些,你可以优先学习 Web3.js。

Alchemy

在 Web2.0 中有很多云厂商可以为我们提供部署的基础设施服务,国外的有 AWS,国内有阿里云等。我们可以把 Alchemy 想象成 Web3 中的 AWS,它为部署 DApp 提供了所有需要的基础设施。

Alchemy 还具有更多功能,比如为我们提供了 API 来部署 NFT 集合,而且不需要编写一条行 Solidity 代码;连接到链上事件的通知;以及带有智能套接字和扩展以太坊 API的增强型 Web3 库。

DApp 的类型

在开发我们的 DApp 之前,我们要先学习一些其他 DApp,了解我们可以做哪些 DApp。

常见的类型有加密货币、加密钱包、区块浏览器、NFT 市场、DeFi 应用和基于区块链的游戏。

每一种类型的 DApp 你都应该去了解。

开发第一款 DApp

当你把上面的东西全部学会后,就应该来做一个 DApp 来验证你的学习成果了。

如果你不知道该开发什么样的 DApp,那我给你的建议就是做一个加密货币或者 NFT 市场。

如果你实在不知道自己该做什么 DApp,我可以告诉你一个技巧,你可以去一些招聘网站,看看那些高薪招聘 Web3 开发人员的公司都在做些什么,然后你照着做就可以了。

truffle&ganache&drizzle

Web2.0 的世界里有各种各样的框架,Web3 同样不例外。

truffle 是一款区块链框架,它提供了开发区块链应用中会用到的大多数功能。适用于任何以太坊虚拟机(EVM)区块链的开发环境、测试框架和资产管道。

除了 truffle 自身以外,它还提供了 ganache 和 drizzle。

ganache 用于开发个人区块链,可以部署合约、开发应用和测试。

drizzle 是一组前端库,在编写 DApp 的前端时更加容易和更加可观测。它是基于 Redux 的。

测试智能合约

和传统的 Web2.0 应用不同,区块链的特别之处在于不可逆转性,一旦添加了智能合约,就无法编辑和召回了,而且在部署时也需要花费 Gas 费。

所以测试对 Web3 的 DApp 而言尤其重要。

测试智能合约的方式有:

  • 节点测试
  • 功能测试
  • 性能测试
  • API 测试

Moralis

Moralis 为区块链项目提供托管后端。自动将你的用户余额同步到数据库中,你还可以设置链上警报、观看智能合约事件、构建索引等等。所有功能都通过易于使用的 SDK 实现的。而且 Moralis 提供的所有功能默认都是跨链的。

简单来说,Moralis 可以让你在几秒钟内创建一个成熟的 DApp,利用基于钱包的身份验证系统的强大功能可以直接从区块链获取数据,并把它们保存在 NoSQL 数据库中,这些功能都只需要几行代码就可以轻易实现。

总结

我的思路是概念优先。在真正开发之前,我从来没有让你写代码。我认为如果你连自己要做什么都不知道的话,是没办法直接写代码的。先从基本概念入手,一定不会错。

至今为止,Web3 的变化依然很大,这篇文章也会有时效性,如果有了新的变化我也会同步更新。

学习 Web3 什么时候都不晚,希望你可以早日加入 Web3 世界!