2025年,Web3开发学习路线全指南

简介: 本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。

01

前言

Web3是一个包含了很多领域的概念,不讨论币圈和链圈的划分,Web3包括有Defi、NFT、Game等基于区块链的Dapp应用的开发;也有VR、AR等追求视觉沉浸感的XR相关领域的开发;还有基于区块链底层架构或者协议的开发。

这篇文章给出的学习路线图是第一种类型:针对Dapp应用的开发,也就是基于区块链网络开发的去中心化应用。我将从首先从国内的JD开始,分析国内的区块链企业需要哪些技术栈。再给出基于以太坊的学习路线图。

10.jpg

也许你会问为什么要学习以太坊?我学习用BNB Chain、Solana、Avalanche等区块链构建我的Dapp不行吗?答案当然可以!但是以太坊依然是目前最大的区块链应用开发生态,它的开发者工具最齐全、文档和社区也最丰富。你能找到更多的学习资料,在遇到问题时也能很快找到社区的解答。

毫无疑问,以太坊理应是Dapp的新手开发者第一个学习的区块链生态。

这篇文章不会介绍过多Dapp的前后端开发上,我假设你了解HTML/CSS/JavaScript的相关基础知识,并熟悉一门后端语言(Python、Java、Rush、Go或者Node.js)。

好了,让我们开始吧~



02

企业需要什么样的Web3开发者?


如果了解现在的企业需要Web3开发者拥有什么样的技能组合,能够让我们更加针对性的去学习企业级的开发实践,少踩一些弯路。

需要掌握的区块链技术要点:

区块链基础原理

熟悉Ethereum技术,深入理解EVM

Solidity编程

智能合约设计、开发、测试、上线和维护

智能合约的跨链交易

Truffle开发框架

web3js、ethers.js、OpenZeppelin等库

即使你还从未接触过Web3的开发,但如果你是一位有过Web开发经验的程序员,Dapp的应用开发范式基本是一致的,我相信你大概能从这份JD里面能总结出这么几点:

区块链的基础原理和Ethereum技术是Web3开发的基础知识

智能合约是区块链开发一个很重要的环节

Solidity是编写智能合约的一个重要语言

Truflle是一个主流的区块链开发框架

web3js、ethers.js、OpenZeppelin这几个是区块链开发中经常使用的库

没错,这几个技术点是我们Dapp开发和编写智能合约通常会使用到的。也许你依然对里面的概念和技术完全不了解,没关系,你只需要有个大概的印象。接下来我们在下文的「学习路线指南」中都会提及到这几个技术栈。

我相信你在阅读完全文后再回来看这个JD,应该会有不一样的理解。

BB1mhM0l.jpg


03

区块链基础


在学习应用的开发前,了解一定的区块链基础知识是很有必要的。虽然从技术角度上来说,即使你不了解任何的区块链基础知识,也能开发出Dapp。但这样的开发者基本上就是工具和语言的熟练使用者,在遇见较为深入的问题和技术栈时,很快就会碰见天花板。

推荐资料

对于区块链基础知识的学习,我推荐以下的专栏/课程/书籍,你可以任选一个深入看即可:

《陈浩:深入浅出区块链-极客时间》 (专栏)

国内开源公有区块链项目 Metaverse 元界 CTO陈浩开设的专栏,专栏共 36 期,围绕区块链知识从浅入深,分 5 个模块进行讲解:浅说区块链基础 / 深入区块链技术 / 数字货币与数字资产专题 / 区块链与当下互联网 /如何从业区块链。

《自游:说透区块链-极客时间》  (专栏)

专栏作者是深耕一线的区块链专家,专栏从应用和技术两方面出发聊区块链。比起上一个专栏整体文章的设计更加容易理解,有很多丰富的案例和思考,看完这个基本能搭建起区块链知识体系的完整认知。

北京大学肖臻老师《区块链技术与应用》公开课-B站    (视频)

北京大学公开课《区块链技术与应用》由肖臻老师讲授,主要讲解区块链的基本概念和实现原理,面向广大对区块链技术和应用感兴趣的同学。通过这门课的学习,能够掌握比特币、以太坊等区块链技术的设计思路并有效解决实际问题。

《区块链从数字货币到信用社会-中信出版社图书》  (书籍)

本书作者之一是巴比特创始人长铗,这本书较为系统的对区块链的历史和现状做了讲解,并有专门的章节来介绍智能合约和区块链的应用场景。是一本很好的了解区块链基础知识的数据。


基础学习到什么程度?

学习基础知识特别容易刨根问底,区块链同时又是涵盖密码学、计算机科学等领域的技术综合体,如果深入了解下去可能会让学习者失去学习的兴趣。那么作为一名区块链开发者,你需要学习到什么程度呢?我个人认为,在学习完基础知识部分后,你需要能够回到出以下的问题即可:

基础学习到什么程度?

区块链到底是什么?它具有什么特点?

区块链在技术上大致是如何实现的?

区块链的共识机制是什么?共识机制解决了什么问题?有什么常见的共识机制?

区块链的存储规则和常见的数据库有什么不同?

PoW、PoS、DPoS这几个共识机制的原理、特点是什么?

除了数字货币,常见的区块链的应用类型有哪些?

你可以带着这些问题,结合上面推荐的资料学习,这样效果会更好。



04

了解区块链应用生态


基础知识的学习对于大多数人而言注定是枯燥乏味的,在学习区块链的同时不妨同时了解一下现在国内外有哪些具体的应用。你也许有听过几个应用了,例如:MetaMask(最知名的区块链钱包),Stepn(一个能购买跑鞋,跑步会赚取收益的Dapp)、Axie Infinity(一款神奇宝贝主题的区块链游戏)、NBA TopShot(NBA官方验证的NFT)、OpenSea(全球最大的NFT交易市场)等等。

了解这些基于区块链的Dapp,能够让我们更加直观的认识到区块链的应用场景。还有什么比直接使用到能够交互的应用程序更为直观的呢?在你了解的过程中,你还会发现如今区块链生态的繁荣,目前有很多的Dapp不是在以太坊这一条链上运行的了,还有BNB Chain、SOLONA、TRON等众多公链生态。

这里推荐每位开发者都通过dappradar.com探索一下Dapp生态,这个网站可以类比苹果生态中的Apple Store,DappRadar就是Web3世界Apple Store。而且这个网站的Blog质量极高,有很多优秀的博客文章和专业的区块链调研报告。

微信图片_20241105185138.png


05

以太坊相关技术


了解完区块链的基础知识,这个时候就应该到了技术学习的环节。正如前文中提到的,对于新手开发者而言,学习区块链的最佳方式是从以太坊入手。下面我们就来看一下学习以太坊生态的相关技术栈。

eth.png

以太坊开发者基础

在学习具体的技术前,以太坊的基础知识和概念是需要掌握的。学习这方面的知识,唯一推荐的资料就是以太坊官网。你基本可以在官网上找到太坊生态所有技术的学习资料!

以太坊开发者文档通俗的介绍了以太坊的相关概念:账户、区块、EVM、Gas、智能合约、共识机制等,同时以太坊的国际化做得也很优秀,文档支持46种语言,翻译由社区进行维护。

在官方文档的阅读过程中,EVM、Gas、智能合约等部分是需要重点掌握的。



06

Metamask


在以太坊编写智能合约之前,如果你还没有下载一个区块链钱包并尝试完成一笔交易,你可能无法体会到区块链交易的便利性,也不能直观的感受到Gas费用的无处不在。在这之前你可以尝试下载安装MetaMask这个区块链钱包来完成一笔交易。

metamask.png

你可以直接在浏览器上安装MetaMask插件,并且切换到相应的测试网络。如果你在测试网络上没有任何的ETH,你可以从下面的Facuet网站获取以太币(都是基于rinkeby测试网络的):

●Sepolia Faucet - Get Testnet Tokens(Rinkeby测试网络)

https://www.rinkeby.io/#faucet(Rinkeby测试网络)

https://faucet.metamask.io/ (Facuet测试网络)



07

Solidity语言 + 智能合约


智能合约是Dapp开发的最重要的环节,智能合约本质是开发者发布在 EVM 内存中的可重用代码片段(程序),它同时也是一个以太坊账户。任何人都可以通过“交易”来触发并执行智能合约。

能够编写智能合约的语言不止一种,包括:Solidity、Vyper、Yul等。但Solidity基本是绝大多数开发者和企业用来编写智能合约的唯一语言,所以Solidity是你成为区块链开发者必须学习的一门语言。

你可以从以下资料中学习Solidity:

●Solidity官方文档

●Solidity中文文档-登链社区

●基于以太坊的智能合约开发教程【Solidity】 - 千峰教育

●Solidity-workshop - Github

●#1 Solidity Tutorial & Ethereum Blockchain Programming Course | CryptoZombies(一个在线游戏来学习语言和Dapp)

在学习Solidity和智能合约过程中,你需要一款IED去编写你的代码,这边我推荐Remix。

Remix是一款基于浏览器的IDE,使用Remix可以省去你安装Solidity运行环境的繁琐流程。Remix基本提供了你编写Solidity智能合约的所有功能:

●代码高亮

●代码调试

●代码编译

●日志输出

●钱包连接&发送交易

●合约部署



08

web3.js & ethers.js


web3.js和ethers.js这两个库都是用来和以太坊节点通信的两个JavaScript库。在Dapp的开发中,这两个库都是常会被使用到的。你可以通过这两个库来完成一系列的功能:

●连接钱包

●查询余额

●发送交易

●部署智能合约

●查询区块信息

●调用函数

在Dapp的开发中使用两个库的API功能大部分都是相同的,你可以选择其中的一个即可。相对而言,ethers.js对比使用 web3.js 代码量更少,接口也更简洁,个人推荐优先使用 ethers.js 。

相关文档地址如下:

●web3.js官方文档(https://web3js.readthedocs.io/en/v1.7.3/

●web3.js中文文档-登链社区

●ethers.js官方文档(https://docs.ethers.org/v5/

●ethers.js中文文档-登链社区



09

Truffle框架


正如我们编写前端应用会使用到React、Vue这样的前端框架,编写后端Node.js应用会使用Nest.js或者Egg.js后端框架一样。社区里面编写Dapp框架最常使用的框架就Truffle。

Truffle具有以下功能:

●内置智能合约编译,链接,部署和二进制(文件)管理。

●可快速开发自动化智能合约测试框架。

●可脚本化、可扩展的部署和迁移框架。

●可管理多个不同的以太坊网络,可部署到任意数量的公共主网和私有网络。

●使用 ERC190 标准,使用EthPM 和 NPM 进行包装管理。

●支持通过命令控制台直接与智能合约进行交互。

●可配置的构建管道,支持紧密集成。

●支持在Truffle环境中使用外部脚本运行器执行脚本。

微信图片_20231228195858.png

相关资料如下:

●Truffle官方文档(https://archive.trufflesuite.com/

●Truffle中文文档

Truffle的套件中还提供了一个非常有用的应用:Ganache。通过这个应用你可以一键创建你的区块链网络,方便你在这个区块链网络中开发、部署和测试你的Dapp。

HardHat同样也是以太坊社区里面使用量比较大的框架,就像前端中文社区里面Vue和React之争一样,在以太坊社区HardHard也经常被用来和Truffle做对比。你可以把HardHat当做Truffle的一个替代框架去学习,并选择一个适合你的框架去编写Dapp。

如果你想了解更多的以太坊框架,可以查看:去中心化应用程序开发框架 | ethereum.org



10

ERC-20


如果你的Dapp有创建自己加密货币的需求,那么ERC-20标准就是你必须了解的,ERC-20 使用以太坊上最重要的智能合约标准之一。是用于实现可替换通证的智能合约技术标准。

ERC-20 提供的示例功能:

●将代币从一个账户转移到另一个账户

●获取账户的当前代币余额

●获取网络上可用代币的总供应量

●批准一个账户的一定数量的代币是否可以被第三方账户消费


ERC-20相关资料:

●ERC-20 代币标准(https://eips.ethereum.org/EIPS/eip-20

●以太坊官网-ERC-20 代币标准(https://ethereum.org/zh/developers/docs/standards/tokens/erc-20/

●了解ERC-20通证智能合约

https://ethereum.org/zh/developers/tutorials/understand-the-erc-20-token-smart-contract/

8.png


11

智能合约库


在编写较为复杂的智能合约时,你完全没有必要从0到1编写你的智能合约库,社区里面提供了许多的智能合约库供你使用。你完全可以复用这些库或者继承它们。

使用智能合约库不仅仅能节约的时间,社区里面头部的智能合约库的安全性是有保障的,引入它们能够确保你关键交易的安全性。

相关智能合约库资料:

●OpenZeppelin 合约:安全的智能合约开发库(最广泛使用的库,必学)

●DappSys:智能合约构建模块,能够解决常见的问题,例如:白名单、认证、Upgradable ERC20-token

●HQ20:一个带有合约、库和案例的Solidity 项目,帮助您为现实世界建立功能齐全的分布式应用

●以太坊官网-智能合约库



12

智能合约安全


智能合约的安全性怎么强调都不为过。因为智能合约部署后不能修改的特性,这让智能合约中的漏斗变得极为危险。我相信你已经听过了以太坊分叉的故事,也听到过很多盗窃资产的事件发生。

所以,在你把智能合约部署到以太坊主网之前,确保的智能合约的安全性,对其进行测试和安全性分析是非常重要的。同时,了解一些常见的智能合约攻击手段也是必要的,就像你作为一名web开发者需要了解基本的XSS攻击、CSRF攻击等一样。

相关智能合约安全性资料:

●Slither:用Python 3 编写的 Solidity 静态分析框架

●MythX:以太坊智能合约的安全分析应用程序接口

●Mythril:以太坊虚拟机字节码安全分析工具

●Manticore:在智能合约和二进制文件上使用符号执行工具的命令行界面

●Verifier:于检查合约是否符合ERC20 标准的验证工具

●Slither和Mythril:智能合约分析工具

●智能合约安全清单

●安全性建议和最佳做法合集

联系方式.jpg


13

总结


上面的所有内容学习完成,你就是一名合格的区块链Dapp开发者了。你能够编写安全、规范的智能合约,并且能够将智能合约部署在以太坊网络上,再通过web3.js或ethers.js调用的方式,进行智能合约和Dapp的交互,实现整个Dapp的开发打通。

如果你想在区块链开发上更进一步,此时你需要考虑的就会更多了,例如你可能发现链上交易的Gas费用越来越高,此时你需要考虑优化你的智能合约来降低每笔交易的Gas费用。你可能还需要使用到Layer2、多链或者侧链等扩展方案,学习Optimistic Rollups、ZKRollup等扩容工具。这部分内容就不在这篇文章里面介绍了。


相关文章
|
2月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
263 4
|
6月前
|
缓存 JavaScript 前端开发
鸿蒙5开发宝藏案例分享---Web开发优化案例分享
本文深入解读鸿蒙官方文档中的 `ArkWeb` 性能优化技巧,从预启动进程到预渲染,涵盖预下载、预连接、预取POST等八大优化策略。通过代码示例详解如何提升Web页面加载速度,助你打造流畅的HarmonyOS应用体验。内容实用,按需选用,让H5页面快到飞起!
|
6月前
|
JavaScript 前端开发 API
鸿蒙5开发宝藏案例分享---Web加载时延优化解析
本文深入解析了鸿蒙开发中Web加载完成时延的优化技巧,结合官方案例与实际代码,助你提升性能。核心内容包括:使用DevEco Profiler和DevTools定位瓶颈、四大优化方向(资源合并、接口预取、图片懒加载、任务拆解)及高频手段总结。同时提供性能优化黄金准则,如首屏资源控制在300KB内、关键接口响应≤200ms等,帮助开发者实现丝般流畅体验。
|
前端开发 JavaScript Shell
鸿蒙5开发宝藏案例分享---Web页面内点击响应时延分析
本文为鸿蒙开发者整理了Web性能优化的实战案例解析,结合官方文档深度扩展。内容涵盖点击响应时延核心指标(≤100ms)、性能分析工具链(如DevTools时间线、ArkUI Trace抓取)以及高频优化场景,包括递归函数优化、网络请求阻塞解决方案和setTimeout滥用问题等。同时提供进阶技巧,如首帧加速、透明动画陷阱规避及Web组件初始化加速,并通过优化前后Trace对比展示成果。最后总结了快速定位问题的方法与开发建议,助力开发者提升Web应用性能。
|
6月前
|
JSON 开发框架 自然语言处理
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(三)
本文主要介绍了应用开发中的三大核心内容:生命周期管理、资源限定与访问以及多语言支持。在生命周期部分,详细说明了应用和页面的生命周期函数及其触发时机,帮助开发者更好地掌控应用状态变化。资源限定与访问章节,则聚焦于资源限定词的定义、命名规则及匹配逻辑,并阐述了如何通过 `$r` 引用 JS 模块内的资源。最后,多语言支持部分讲解了如何通过 JSON 文件定义多语言资源,使用 `$t` 和 `$tc` 方法实现简单格式化与单复数格式化,为全球化应用提供便利。
262 104
|
6月前
|
JavaScript 前端开发 API
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(二)
本文介绍了HarmonyOS应用开发中的HML、CSS和JS语法。HML作为标记语言,支持数据绑定、事件处理、列表渲染等功能;CSS用于样式定义,涵盖尺寸单位、样式导入、选择器及伪类等特性;JS实现业务逻辑,包括ES6语法支持、对象属性、数据方法及事件处理。通过具体代码示例,详细解析了页面构建与交互的实现方式,为开发者提供全面的技术指导。
284 104
|
6月前
|
开发框架 编解码 JavaScript
【HarmonyOS Next之旅】基于ArkTS开发(三) -> 兼容JS的类Web开发(一)
该文档详细介绍了一个兼容JS的类Web开发范式的方舟开发框架,涵盖概述、文件组织、js标签配置及app.js等内容。框架采用HML、CSS、JavaScript三段式开发方式,支持单向数据绑定,适合中小型应用开发。文件组织部分说明了目录结构、访问规则和媒体文件格式;js标签配置包括实例名称、页面路由和窗口样式信息;app.js则描述了应用生命周期与对象管理。整体内容旨在帮助开发者快速构建基于方舟框架的应用程序。
283 102
|
7月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
9月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
1959 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
573 67