Web2 的开发者,如何进入 Web3

UpchainDAO · 2024-9-12 16:00:13 · 86 次点击
> 本文作者:[Tiny 熊 ]( https://learnblockchain.cn/tiny)
>
> 原文链接:[learnblockchain.cn/article/9257]( https://learnblockchain.cn/article/9257?fshex)

AI 和 Web3 是当前为数不多认为有巨大潜力的两个方向,Web3 薪资相对较高、有很多远程岗位、可全球就业,因此很多 Web2 开发者想进入 Web3 。

学习 Web3 开发最难的估计是不知道从何处下手,Web3 经过 10 多年的发展,内容越来越广,很多内容还相互依赖,给想进入 Web3 的开发同学带来了困惑:从哪里开始学、应该学什么。

我自己 2017 年进入 Web3 ,从事合约开发、技术布道、并一直跟踪区块链技术的发展,根据我对整个 Web3 的理解,整理下面这个学习路线图,希望可以帮助大家在学习的时候有更清晰的路线。

![]( https://img.learnblockchain.cn/attachments/2024/09/fTGnqD3X66d95d5c2bf10.png)

本文算是对这个学习路线图的解读,[路线图是可交互式的]( https://learnblockchain.cn/maps/Roadmap?fshex),遇到不理解的术语,可以点击术语右上角小箭头查看右侧说明。

在学习路线图中,我将[学习 Web3]( https://learnblockchain.cn/openspace/1?zhihu=?invite_code=56100824B?fshex) 分为几个阶段:了解区块链基础、区块链使用探索、然后根据自己的兴趣选择一个方向精进。

刚进入 Web3 开发的同学,在选择方向上不能贪多,而是应该做一些取舍,聚焦一个点往深处扎根,这样不容易迷失方向,也更容易看到自己的成长。



## 了解区块链基础

区块链背后的技术,依旧是传统计算机技术的延伸,在 Web3 从事开发,掌握数据库、数据结构、计算机网络、编程语言依旧是必须的。

但区块链的[去中心化]( https://learnblockchain.cn/article/2115?fshex)运行方式,刚开始的时候不好理解,是因为它不单单是技术问题,还包含了一个社会化的思想。

纯从技术角度想,容易想不明白为什么 BTC 的数量会限制在 2100 万个?心想:程序不都是可以修改的么?

如果能回答这个问题,[区块链基础]( https://learnblockchain.cn/article/5546?fshex)(什么是区块链、是如何工作的)其实理解的差不多了。



区块链有什么用,为什么有用、什么场景需要区块链技术,是一个随着时间推移不断加深理解的过程。

当下区块链技术依旧有不少的问题,但总体上来讲,区块链是一个强化**个人主权**、同时让**群体协作更透明**的技术。



我遇到不少同学总是拿 Web2  的优点与 Web3 的不足比较,我们在学习一个新技术时,要尽量**保持开放的心态**、这样才能吸收更多。

区块链带来的改变没有 AI 那么直接,因此我们容易低估他的价值。



## 区块链使用探索

在对区块链有了基础的认识之后,可以上手体验真实的区块链应用,例如使用[钱包]( https://learnblockchain.cn/tags/钱包?map=Roadmap?fshex)软件创建自己的账号,有条件的也可以持有一点[加密货币]( https://learnblockchain.cn/article/854?fshex)(会有一点门槛,虽然也可以用测试币体验。但真金白银的体验会不太一样)。

感受发起交易时的签名,查看[区块链浏览器]( https://learnblockchain.cn/tags/区块链浏览器?map=Roadmap?fshex),交易打包出块的过程。

在使用时,会感受到不同链的交易速度,可以借此了解不同的[共识机制]( https://learnblockchain.cn/article/293?fshex)、尝试理解不同共识在去中心、安全及效率上的权衡。

如果觉得有趣,可以感受一下 [DEX]( https://learnblockchain.cn/article/4176?fshex)资产兑换、 [NFT]( https://learnblockchain.cn/article/3010?fshex)交易、[DAO]( https://learnblockchain.cn/article/742?fshex) 治理。



对比 Web2 ,Web3 应用的关键不同是:你的资产只属于你(任何信息都可以看作是一种资产),只有自己[私钥]( https://learnblockchain.cn/article/2308?fshex)签名后才能支配资产,任何人都无法剥夺你的资产。 另一个不同是:Web3 应用通常都是开源的,所有人都是平等的参与一个透明的规则。

如果你认可 Web3 的价值和意义,可以尝试加入 Web3 建设。



## 选择方向

这个文章主要以技术的角度讨论,大家可以选择研究方向和开发方向( Web3 项目里还有社区运营的事情也很有意思,这里不讨论)。

如果有比较好的理论或学术背景,或者更喜欢探索新事物,想走研究方向,比如研究密码学、共识算法、扩容方案、代币经济学等,通常需要阅读大量的英文论文。

**开发方向分两大类:链开发和应用开发**

### 链开发

[链]( https://learnblockchain.cn/article/7537?fshex)开发对开发者的技能要求会高一些,薪资也会高一些,不过市场需求比应用开发会少。随着时间推移,应用逐步拓圈,应用开发需求会越来越多,链开发会逐步稳定,新链的机会并不多,链开发比较适合喜欢钻研底层的同学。



从事链开发,可以选择开发新链、或者是做二层、三层扩容链:

1. **开发新链,通常指 Layer1**, 需要了解这些内容:
   - **Geth**:是 Go 语言实现的以太坊节点软件,广泛用于 EVM 兼容链的开发与定制。
   - **Reth**:Rust 语言的以太坊实现,提供了一种高性能的以太坊客户端选择。
   - **Substrate**:Rust 语言实现,用于构建定制区块链的框架,由 Parity 开发,除在 Polkadot 生态大量采用外,也有很多独立链基于 Substrate 进行定制。
   - **Cosmos SDK**:Go 语言开发的,模块化区块链开发框架,Cosmos 网络兼容的新链基本都是基于 Cosmos SDK 开发。

另外还有部分使用 Move 虚拟机和 Solana VM 虚拟机开发的链。



2. **[Layer2 扩容]( https://learnblockchain.cn/2018/06/30/intro-eth-layer2?fshex)或 layer3 应用链**

由主链的交易容量有限,尤其是以太坊及比特币,无法承载大规模的用户使用,Layer2 的思路是,将部分交易转移到主链外( Layer2 )执行,Layer1 仅负责验证 Layer2 的执行,三层则通常是针对特定应用场景进行定制的区块链。 链开发者需要了解的内容有:

   - **OP Stack**:Optimism 开发的 Layer2 框架,实在以太坊 Layer2 链中使用最多的框架。
   - **Polygon CDK**:是 Polygon 开发的链开发工具包,支持更灵活的扩展:如 Validium 、zkRollup 等。
   - **StarkEx**:StarkWare 开发的利用 ZKStark 技术来实现二层扩展的方案。类似的 ZK 方案还有 Matter Labs ( zkSync 背后的团队) 的 ZK Stack 。
   - **Arbitrum Stylus ( Arbitrum Nitro 的迭代)** 和 **Arbitrum Orbit**:Arbitrum 团队开发的 Layer2 及 Layer3 扩容方案,Stylus 提供支持多语言编程的执行层扩展。


想做链开发,[模块化区块链]( https://learnblockchain.cn/article/5301?fshex)也需要了解一下,模块化的思想是将之前一个整体的区块链分成多个层,不同的层解决不同的问题,甚至由不同的链来承担,4 个层分别是:

   - **执行层**:负责处理智能合约的执行,类似于以太坊的 EVM 模块,Layer2 在一定程度上就是一个执行层。
   - **结算层**:用于结算交易,确保链上的资产安全和交易的有效性。
   - **共识层**:保证节点之间对交易达成共识的模块。
   - **数据可用性**( DA ):确保链上数据能够被正确存储和访问的层,二层扩展方案中用来验证二层交易的有效性。不同的 DA 方案有:[EIP4844]( https://learnblockchain.cn/article/8006?fshex) 用 Blob 作为 DA ,AnyTrust 、EigenDA 、Avail DA 、Celestia 、NearDA 等。



还有一个趋势是,区块链上逐步集成 **[零知识证明( ZKP )]( https://learnblockchain.cn/maps/ZKP?fshex)** 能力,例如使用 ZKP 来做交易执行的证明( zkRollup 也在 Layer2 层的应用,在 Layer1 层上也可以采用),用 ZKP 做存储状态的证明,实现轻客户端、无状态客户端来实现更好的去中心化。还有链通过 ZKP 来实现隐私交易。



如果你选择链开发,给**初学者**的建议是学习 **Go** ,探究 **Geth** 和 **Op Stack**,其他的框架根据需要和兴趣研究。



上面 Layer2 扩容更多是以太坊的视角,最近比特币上扩容方案也有不少团队在做,关注度挺大,大体上有(状态)通道类扩容和侧链类扩容方式,前者继承比特币安全性较高,但在编程能力扩展上较差。典型的代表有[闪电网络]( https://learnblockchain.cn/article/8814?fshex)、以及与 [RGB]( https://learnblockchain.cn/article/7121?fshex)、[RGB++]( https://learnblockchain.cn/article/7447?fshex) 客户端验证方案的组合。 后者继承比特币安全性较差,例如采用 [MPC]( https://learnblockchain.cn/tags/MPC?map=ZKP?fshex) 的方式跨链,但可以做到更好的编程能力扩展。也有一些结合两者的方案。

目前比特币上扩容方案行业依旧处在探索阶段,如果你是比特币信仰者,可以多多关注。



### 应用开发

如果想做**应用开发**,**链的底层实现并不需要很深的理解**,但我们需要了解各链的特点,如区块链性能、去中心化程度。

例如想开发社交或游戏类应用,对底层链的性能较高,而开发高价值的 [DEFI]( https://learnblockchain.cn/article/8032?fshex) 类型应用,对去中心化可能有更多的要求。

另外,底层链支持的开发语言以及生态的活跃度及对应用扶持力度等,也要考量的,这些关系到应用实现的工作量以及获取的用户的成本。

对于找工作的朋友也是类似,生态活跃度越高,工作机会越多,竞争也会大一些。



选择一个适合的底层链对应用的成功相当重要,多数通常是选择基于一个或一类链开发,也有一些应用需要支持很多的链,尤其是基础设施类应用, 例如,钱包、跨链桥、喂价预言机等,通常要支持很多个链。



####  选择适合自己的生态

简单对比一下各个生态,供大家参考:

**[比特币]( https://learnblockchain.cn/tags/比特币?map=Roadmap?fshex)** :有最大的共识与资金体量,但是脚本能力有限,基于比特币链上能做的应用较少,很多应用需要结合索引器或者客户端验证方案来实现,生态还不够成熟,不过从发展的角度看,可能有更多的机会。

**[EVM 生态]( https://learnblockchain.cn/tags/EVM?map=Roadmap?fshex)**:包含了以太坊、以及众多的 EVM 兼容链(包括波场 Tron 也算 ),一部分 BTC Layer2 也是 EVM 兼容链,这些兼容链编程模型相同,都使用 Solidity 开发智能合约(及链上运行的程序),应用生态丰富,开发工具完善、开发资源比较丰富。

**[Solana]( https://learnblockchain.cn/tags/Solana?map=Solana?fshex)**: 过去一年发展很强劲,生态体量上是老二,比 EVM 生态差距依旧比较大,Solana 的优势是吞吐量大,交易块,Solana 合约使用 Rust 开发,入门门槛较高。

**[TON]( https://learnblockchain.cn/tags/TON?map=Roadmap?fshex)**:背靠有大量用户的 Telegram ,近期热度很不错,TON 同样具备高性能特点,智能合约主要使用 Func ,但 TON 生态发展时间较短、工具库不完善,开发资源较少。

还有一些其他的区块链生态,如:[Move]( https://learnblockchain.cn/maps/Move?fshex) 生态(包括 Sui / Aptos )、[Starknet]( https://learnblockchain.cn/article/5792?fshex) 生态、ICP 生态、AO/AR 生态等,都有各自的优点,但目前关注度更小。



这里描述的是当前的生态情况,各个生态的发展都是动态的,不同的生态也有不同的文化特点,大家可以根据自己的偏好选择。

给初学者的建议是从 **EVM 生态**入手,资料丰富、生态也比较稳。



####  合约开发

Web3 应用开发和互联网应用开发相比,很大的变化是大量后端逻辑转为智能合约在链上运行(也有一部分后端逻辑转移到前端,参考下一小节),以此来去除对中心化服务端的依赖。

> 也有很多 Web3 应用不涉及合约开发,例如:钱包、交易所、链上数据服务等,开发这些应用时,需要了解如何与合约交互。参考下一小节。

EVM 生态开发合约最常见的以太坊智能合约语言是 **[Solidity]( https://learnblockchain.cn/tags/Solidity?map=Roadmap?fshex)**,一定要学习,**[Yul]( https://learnblockchain.cn/column/75?fshex)** 是开发合约的汇编语言,如学有余力,可以研究一下。

> Solana 、TON 、Move 等生态链,有各自的开发语言,我们以后有机会单独介绍。

Solidity 开发 IDE ,入门推荐使用在线 [Remix]( https://learnblockchain.cn/article/5725?fshex) IDE , 一般在项目开发中是使用 VS Code + 开发框架, 开发框架帮助我们编译、部署及测试智能合约,开发框架首选 [Foundry]( https://learnblockchain.cn/tags/Foundry?map=Roadmap?fshex) ,测试更方便,其次是 [Hardhat]( https://learnblockchain.cn/tags/Hardhat?map=Roadmap?fshex) 。



开发智能合约时,需要理解常见的 Token / NFT 标准并会使用,如 [ERC20]( https://learnblockchain.cn/article/9085?fshex) 、[ERC2612]( https://learnblockchain.cn/article/1496?fshex)、[ERC721]( https://learnblockchain.cn/2018/03/23/token-erc721?fshex)、[ERC1155]( https://learnblockchain.cn/article/8021?fshex) , 使用轮子也是一个很好的习惯,[OpenZeppelin]( https://learnblockchain.cn/article/727?fshex) 是一个智能合约库,实现了各种标准,使用库可以减少自己的工作量,提升程序安全性。



>  开发合约程序时,要尽量遵循标准。这一点与 Web2 开发也是不同,Web2 程序通常是自己在调用,智能合约通常是公开给任何人调用,而且他人调用越多,程序价值越大。遵循标准可以让他人更方便的调用自己的程序。



**合约开发进阶**

Solidity 的入门简单,但要成为一名优秀的合约工程师有很多东西要学(练)习,例如掌握优化合约技巧来降低 Gas 费用、使用 [Create2]( https://learnblockchain.cn/article/7656?fshex) 创建及预测合约地址、理解底层 Call 调用和委托调用的机制、理解如何对合约进行升级、如何灵活应用离线签名减少用户费用、使用 [Merkel 树]( https://learnblockchain.cn/tags/默克尔树?map=Web3?fshex)降低链上存储成本、熟悉常见的安全漏洞、理解 DAO 治理方式及实现、理解账户抽象、了解如何利用预言机来获取链外数据等等。



另外,DEFI 去中心化金融是目前 Web3 最重要的一个应用场景,了解常见金融概念、熟悉常用 DEFI 的运行、理解闪电贷的运行,会让我们有更多的机会。



####  Web3 应用的前后端

合约扮演的是后端程序的, 一个体验好的 Web3 应用同样需要少不了前端、Web3 应用是由用户自己托管资产的,因此前端需要和钱包链接一起完成交互。

Web3 应用后端更多的是当做一个缓存层,因为链上的数据不是类似数据库的结构化数据,对查询不够友好,加一个后端作为数据缓存层,可以优化用户体验。

> 现在也有很多专门的链上数据服务商,链上有大量开放的数据,是一个数据宝库, 如果你对**大数据**感兴趣,这也是一个很好的方向。



开发 Web3 前端时,需要了解常用的钱包接入方法,如会接入  [MetaMask]( https://learnblockchain.cn/article/844?fshex)、WalletConnect 、Web3 Model 等前端钱包组件,前端与链交互通常是通过 Vim.sh 、Ethers.js 、Web3.js 等交互库来完成,这些交互库其实是链节点提供 RPC 服务的包装。在调用时,前端通过 RPC 节点的 URL 来确定和哪一个链交互,通过 [ABI]( https://learnblockchain.cn/2018/08/09/understand-abi?fshex) 及合约地址来确定和哪个具体的函数交互。



Web3 后端主要处理数据,例如扫码区块,获取指定合约的指定事件的的数据,和链交互使用的方法与前端类似, 但根据后端语言不同,会使用不同的包装库与 Web3 RPC 节点通信,使用比较多的是 Go 后端使用 go-ethereum 库、Node.js 后端使用  Vim.sh 、Ethers.js 等库,这几个库可以多熟悉一下。



*以上每个知识点,需要大家去编码实践来加深理解。*



## 正确心态、保持学习

Web3 发展阶段性起伏很大,也伴随不少行业乱象,平均来讲工作的稳定性没有 Web2 高。

Web3 发展快速,需要我们保持不断的学习,跟踪新的技术进展。

如果你想快速进入到 Web3 行业,参加登链社区的 [区块链线下集训营]( https://learnblockchain.cn/openspace/1?fshex=?invite_code=56100824B) 是不错的选择。

最后祝愿读者都能在 Web3 大展拳脚。

> 本文出自[登链社区 - Web3 开发者社区 ]( https://learnblockchain.cn/?fshex)
举报· 86 次点击
登录 注册 站外分享
11 条回复  
Nami666 小成 2024-9-13 08:50:52
进入 Web3 的开发者发展路线很清晰
ROYWANGDEV 初学 2024-9-13 09:40:58
我以为我穿越了,2024 年了还有 web3 的帖子.....
dwong 小成 2024-9-13 09:44:07
快进到成为区块链大师,哈哈
xilibi2003 小成 2024-9-13 09:57:05
@ROYWANGDEV  怎么说
fj24911 小成 2024-9-13 10:51:05
谢谢 op
lisxour 小成 2024-9-13 11:29:51
web 个卵 web ,web3 的尽头就是发币割韭菜跑路,别提有的没的。🐶
cutchop 小成 2024-9-13 12:06:46
web3 的泡沫快破了
siweipancc 初学 2024-9-13 12:15:22
还以为有人发垃圾广告来了
ixoy 小成 2024-9-13 15:05:50
web3 已是昨日黄花,什么去中心化只是噱头而已。
12下一页
返回顶部