Web2 开发者,如何进入 Web3 - 入门必看

  • Tiny熊
  • 更新于 2小时前
  • 阅读 4111

Web2 的开发者,如何进入 Web3,学习路线图解读

Web3 经过 10 多年的发展,内容越来越广,很多内容还相互依赖,想入门 Web3 不知道从何处下手:从哪里开始学、应该学什么。

网络上资料太多,选择不看什么尤为重要,我自己 2017 年进入 Web3 行业 ,也一直和开发者打交道,根据我对 Web3 的理解,整理出以下学习路线图,相信这个图一定会对你所有帮助。

路线图是可交互式的点击术语右上角小箭头在右侧查看 相关解释、文章可课程。

Web2 开发者要进入 Web3,大致可以分为三阶段:

  1. 区块链入门 第一个阶段是初步了解区块链的概念,区块链有什么用,为什么需要区块链。

  2. 区块链探索与感受 如果认可区块链价值,接下来应该打湿鞋、弄脏手,真实使用一下区块链及原生应用,感受自我托管的自由、 透明无许可的参与、感受社区与 DAO 氛围。

  3. 选择方向、持续精进 不同的生态,就像不同的城市,在参与之后,自己被哪一个生态氛围感染了、 结合自己的兴趣,往深处扎根。

刚进入 Web3 开发的同学,切记浅尝辄止,不停换方向。

让我们分阶段继续深入吧。

区块链入门

区块链技术,是传统计算机技术(下图左侧)的延伸(下图左侧),对于开发者,还是比较好理解区块链的运行机制的。

image.png

推荐学习材料:

  1. 视频 北大肖臻《区块链技术与应用》MIT 课程《区块链与货币》区块链 101

视频不需要全部看完,理解什么是区块链、区块链是如何工作的,就够了。

  1. 文章及书籍 比特币白皮书区块链基础教程精通比特币第三版

精通比特币很全面,有一些涉及交易脚本相关的内容可跳过。

入门阶段,最重要的是理解区块链的去中心化运行方式,这里需要做一些思想的转变,因为之前我们写的程序是都是单点的,程序的运行是我们控制的,现在程序的运行是由去中心化网络共识决定。

区块链带来的是信任、公平、透明、隐私,对区块链社会价值、 加密思想,推荐课外读物:《加密朋克宣言 英文原版 - 中英双语版》 、 《可读可写可拥有 - 原版电子书摘要》。

区块链探索与感受

了解区块链有认识之后,接下来应该进入这个加密世界,体验真实的区块链,感受区块链的开放透明、自我托管的自由、免中介的信任。

image.png

持有一些数字货币,是最好的体验方式,当持有一些数字货币之后,你会更关注它的价值波动,它的发展动态、这个是很好的融入社区的方式。

你可以从交易所或朋友那里购买一些加密货币。

例如使用钱包软件创建自己的账号,有条件的也可以持有一点加密货币(会有一点门槛,虽然也可以用测试币体验。但真金白银的体验会不太一样)。

感受发起交易时的签名,查看区块链浏览器,交易打包出块的过程。

在使用时,会感受到不同链的交易速度,可以借此了解不同的共识机制、尝试理解不同共识在去中心、安全及效率上的权衡。

如果觉得有趣,可以感受一下 DEX 资产兑换、 NFT 交易、DAO 治理。

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

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

选择方向

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

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

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

链开发

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

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

  1. 开发新链,通常指 Layer1, 需要了解这些内容:

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

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

  1. Layer2 扩容或 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 提供支持多语言编程的执行层扩展。

想做链开发,模块化区块链也需要了解一下,模块化的思想是将之前一个整体的区块链分成多个层,不同的层解决不同的问题,甚至由不同的链来承担, 4 个层分别是:

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

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

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

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

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

应用开发

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

例如想开发社交或游戏类应用,对底层链的性能较高,而开发高价值的 DEFI 类型应用,对去中心化可能有更多的要求。

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

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

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

选择适合自己的生态

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

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

比特币交易与脚本开发

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

Solana: 过去一年发展很强劲,生态体量上是老二,比 EVM 生态差距依旧比较大,Solana 的优势是吞吐量大,交易块,Solana 合约使用 Rust 开发,入门门槛较高。

TON:背靠有大量用户的 Telegram ,近期热度很不错, TON 同样具备高性能特点,智能合约主要使用 Func,但 TON 生态发展时间较短、工具库不完善,开发资源较少。

还有一些其他的区块链生态,如:Move 生态(包括 Sui / Aptos)、Starknet 生态、ICP生态、AO/AR 生态等,都有各自的优点,但目前关注度更小。

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

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

合约开发

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

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

EVM 生态开发合约最常见的以太坊智能合约语言是 Solidity,一定要学习,Yul 是开发合约的汇编语言,如学有余力,可以研究一下。

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

Solidity 开发 IDE,入门推荐使用在线 Remix IDE, 一般在项目开发中是使用 VS Code + 开发框架, 开发框架帮助我们编译、部署及测试智能合约,开发框架首选 Foundry ,测试更方便,其次是 Hardhat 。

开发智能合约时,需要理解常见的 Token / NFT 标准并会使用,如 ERC20 、ERC2612、ERC721、ERC1155 , 使用轮子也是一个很好的习惯,OpenZeppelin 是一个智能合约库,实现了各种标准,使用库可以减少自己的工作量,提升程序安全性。

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

合约开发进阶

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

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

Web3 应用的前后端

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

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

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

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

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

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

正确心态、保持学习

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

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

如果你想快速进入到 Web3 行业,参加登链社区的 区块链线下集训营 是不错的选择。

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

点赞 21
收藏 12
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

3 条评论

请先 登录 后评论
Tiny熊
Tiny熊
0xD682...E8AB
登链社区发起人 通过区块链技术让世界变得更好而尽一份力。