当前位置: 首页 > news >正文

ethers.js基础(学习路线清单)

以下把 ethers.js 从 0 到 1 的全部知识点拆成 「基础 → 进阶 → 高级 → 实战」 4 个阶段,一张清单学完即可独立开发 DApp。

✅ 阶段 1:基础必会(入门 1 天)

任务关键代码/要点
安装npm install ethers 或浏览器 <script src=".../ethers.umd.min.js">
连接节点const provider = new ethers.JsonRpcProvider('http://127.0.0.1:8545') 
连接钱包const provider = new ethers.BrowserProvider(window.ethereum) 
助记词→钱包const wallet = ethers.Wallet.fromPhrase(mnemonic, provider)
查 ETH 余额const bal = await provider.getBalance(address) 
发送 ETHawait signer.sendTransaction({to, value: ethers.parseEther("1")}) 
读 ERC20const dai = new ethers.Contract(addr, ERC20_ABI, provider) 
单位换算ethers.parseUnits("1.5", 18) / ethers.formatUnits(balance, 18) 

✅ 阶段 2:进阶必备(2-3 天)

任务关键代码/要点
事件监听contract.on("Transfer", (from, to, value) => {...}) 
历史事件查询contract.queryFilter("Transfer", fromBlock, toBlock) 
签名消息const sig = await signer.signMessage("Hello") 
离线签名await wallet.signTransaction(tx)
批量调用Promise.all([...]) 或 Multicall
EIP-1559 交易maxFeePerGasmaxPriorityPerGas 参数
HD 钱包const hdNode = ethers.HDNodeWallet.fromSeed(seed) 

✅ 阶段 3:高级技巧(1 周)

任务关键代码/要点
自定义 Providernew ethers.WebSocketProvider('wss://...') 
EIP-712 结构化签名await signer.signTypedData(domain, types, value)
EIP-7702 委托交易设置 authorizationList 发送 0x04 类型交易 
离线构造 + 广播const raw = await wallet.signTransaction(tx); provider.broadcastTransaction(raw)
合约工厂部署const factory = new ethers.ContractFactory(abi, bytecode, signer) 
代理合约升级结合 @openzeppelin/hardhat-upgrades 部署透明代理

✅ 阶段 4:实战项目(边学边做)

项目目标涉及 ethers.js 要点
ETH 批量转账一次交易转多笔构造数组 + 离线签名 
ERC20 批量转账节省 gas调用合约批量函数
区块链推文系统发布/读取推文监听事件 + React 前端 
前端 DAppReact + MetaMaskBrowserProvideruseContractuseSigner 
钱包浏览器插件生成 HD 钱包HDNodeWalletmnemonicToEntropy, 导出私钥

🎯 学习顺序建议

  1. 先跑通「查余额 + 发 ETH」(基础)

  2. 再跑通「读 ERC20 + 转账」(进阶)

  3. 做一个小批量转账脚本(实战)

  4. 升级到 React + 事件监听 DApp(高级)

BinSchool Web3开发者社区

http://www.lryc.cn/news/603001.html

相关文章:

  • 正向代理和反向代理的理解
  • 从“PPT动画”到“丝滑如德芙”——uni-app x 动画性能的“终极奥义”
  • AI 驱动、设施扩展、验证器强化、上线 EVM 测试网,Injective 近期动态全更新!
  • clock_getres系统调用及示例
  • PyTorch中flatten()函数详解以及与view()和 reshape()的对比和实战代码示例
  • 【代码解读】通义万相最新视频生成模型 Wan 2.2 实现解析
  • AR技术赋能工业设备维护:效率与智能的飞跃
  • 一个典型的微控制器MCU包含哪些模块?
  • 安宝特方案丨AI算法能力开放平台:适用于人工装配质检、点检、实操培训
  • Java学习-----如何创建线程
  • 基于黑马教程——微服务架构解析(二):雪崩防护+分布式事务
  • Qt:盒子模型的理解
  • 2025.7.28总结
  • 嵌入式分享合集186
  • JavaScript 回调函数讲解_callback
  • 关于xshell的一些基本内容讲解
  • tsc命令深入全面讲解
  • jQuery 最新语法大全详解(2025版)
  • python对象的__dict__属性详解
  • 防水医用无人机市场报告:现状、趋势与洞察
  • Java 笔记 serialVersionUID
  • 分布式IO详解:2025年分布式无线远程IO采集控制方案选型指南
  • 生物信息学数据技能-学习系列001
  • 秒级构建消息驱动架构:描述事件流程,生成 Spring Cloud Stream+RabbitMQ 代码
  • Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与误报率降低策略(369)
  • 分布式高可用架构核心:复制、冗余与生死陷阱——从主从灾难到无主冲突的避坑指南
  • redis getshell的三种方法
  • 从释永信事件看“积善“与“积恶“的人生辩证法
  • CMake、CMakeLists.txt 基础语法
  • CTF-Web学习笔记:信息泄露篇