Polkadot Solidity开发-课程笔记13
✏️ 第五课 Task5 任务:
1⃣️选择题:https://wj.qq.com/s2/25601943/323u/
2⃣️实践题:https://github.com/papermoonio/2026-h1-building-production-grade-dApps/blob/main/homework/lesson-5/README.md
题目
Ethers 特点
A 体积小、运行快
B 类型安全/TS支持
C 钱包与签名管理
D 不需要密码
多选1分
04
Viem 特点
A 模块化和高性能
B 多链天然支持
C 强类型
D 对WASM合约支持
单选1分
05
Polkadot Hub testnet chain ID
A 420420417
B 420420420
C 42
D 0
多选1分
06
zero 到 hero 项目使用了哪些技术和工具
A Next
B Ethers
C Viem
D Hardhat
单选1分
07
zero 到 hero 项目的dapp使用哪个端口
A 80
B 8080
C 3000
D 9944
答案
以下是针对这些题目的参考答案及解析。这些题目主要围绕 Polkadot EVM 开发(特别是基于 Polkadot Hub / Asset Hub 的 “Zero to Hero” 教程)以及现代以太坊开发栈(Viem, Hardhat)的对比。
Ethers 特点
答案:A, B, C
- 解析:
- A (体积小、运行快): 虽然相比新一代的 Viem 略显臃肿,但 Ethers 长期以来的卖点之一就是比 Web3.js 更轻量(Compact)。
- B (类型安全/TS支持): Ethers v5/v6 对 TypeScript 有很好的支持(尽管 Viem 是 TS-first,Ethers 依然被视为强类型库)。
- C (钱包与签名管理): 这是 Ethers 的核心架构(Wallet, Signer, Provider 分离),也是它最显著的功能模块。
- D (不需要密码): 这是干扰项,加密钱包(JSON)肯定需要密码,Signer 管理私钥也涉及安全凭证。
04 Viem 特点
正确答案:A (模块化和高性能) B 多链天然支持 C 强类型
- 解析:
- 虽然 B (多链) 和 C (强类型) 也是 Viem 的特点,但 A (模块化和高性能) 是 Viem 诞生并区别于 Ethers 的核心价值主张(Tree-shaking 友好,体积极小,执行速度快)。题目为单选,A 是最具代表性的特点。
05 Polkadot Hub testnet chain ID
答案:A, B
- 解析:
- A (420420417): 这是 Polkadot Hub Testnet (即 Paseo Asset Hub) 的官方 Chain ID。
- B (420420420): 在 Polkadot 官方的 “Zero to Hero” Hardhat 教程(Beta Docs)中,配置的测试网 Chain ID 通常被指定为
420420420。 - 注意: 由于题目标注为多选,且教程与实际网络参数可能存在版本差异,A 和 B 均为相关上下文中的正确数值。
06 zero 到 hero 项目使用了哪些技术和工具
答案:A, C, D
解析:
根据 Polkadot “Zero to Hero Smart Contract DApp” 官方教程,该项目的技术栈包括:
A (Next.js): 用于构建 DApp 前端界面。
C (Viem): 用于替代 Ethers.js 进行区块链交互(教程重点)。
D (Hardhat): 用于编写、测试和部署 Solidity 智能合约。
注: 题目若强制单选,可能意在考察该教程引入的“新技术” Viem (C),或者核心开发环境 Hardhat (D),但从技术事实来看,A/C/D 均被使用。
07 zero 到 hero 项目的dapp使用哪个端口
答案:C (3000)
- 解析:
- 该项目前端基于 Next.js 构建,Next.js 的默认开发服务器端口是 3000。
- 干扰项排除: 80/8080 是常规 Web 端口,9944 是 Polkadot 节点的 RPC 端口。
这个题目里面提到的Ethers是什么Viem又是什么?
这道题目中提到的 Ethers (通常指 ethers.js) 和 Viem 都是JavaScript/TypeScript 库。
简单来说,它们是连接你的代码(前端网页或后端脚本)与区块链(以太坊及兼容链)之间的“桥梁”。开发者使用它们来查询余额、发送交易或与智能合约交互。
以下是两者的详细介绍和对比:
1. Ethers (ethers.js)
地位: 老牌王者,长期以来的行业标准。
什么是 Ethers?
它是以太坊生态中最著名的开发库之一。它的设计理念是“大而全”,提供了一套完整的工具箱。核心概念:
Provider (提供者): 用来连接区块链节点(只读)。
Signer (签名者): 用来发送交易(需要私钥)。
Contract (合约): 将代码中的对象直接映射为链上的智能合约。
特点:
面向对象 (OOP): 代码写起来像操作对象,例如
wallet.sendTransaction(...)。生态成熟: 几乎所有的老教程、StackOverflow 问答都是基于 Ethers 的。
兼容性好: 很多工具(如 Hardhat)默认内置支持它。
2. Viem
地位: 新晋黑马,追求极致性能和开发者体验。
什么是 Viem?
它是近年来为了解决 Ethers 的一些痛点(如体积大、TypeScript 支持不够完美)而诞生的新库。它通常是Wagmi(流行的 React Hooks 库)的底层引擎。核心概念:
它不使用 Provider/Signer 的分类,而是使用 Client (客户端) 的概念。
Public Client: 读取数据。
Wallet Client: 发送交易。
特点:
模块化 (Modular): 它是“按需加载”的。如果你只用到了查询余额的功能,打包代码时就不会把发送交易的代码包进去,这让你的网页加载速度更快。
函数式编程: 代码风格更偏向函数组合。
TypeScript 原生: 它的类型推断非常强大,写代码时智能提示极其精准,能大幅减少低级错误。
总结对比
| 特性 | Ethers (ethers.js) | Viem |
|---|---|---|
| 资历 | 老牌,资料极其丰富 | 新锐,增长极快 |
| 设计风格 | 面向对象 (类和实例) | 函数式 (小模块组合) |
| 体积与性能 | 较重,功能全 | 极轻,速度快 (Tree-shaking 友好) |
| 主要用途 | 后端脚本、传统 DApp 开发 | 现代前端 DApp (尤其是 Next.js/React 项目) |
| 一句话比喻 | 瑞士军刀: 拿起来就能用,功能都在上面,但稍微有点沉。 | 手术刀套装: 你需要挑选具体的刀片组装,但极其精准且轻便。 |
在题目中的语境:
那个 “Zero to Hero” 教程之所以选择 Viem (配合 Next.js),是因为现代的前端开发越来越看重页面加载速度和 TypeScript 的类型安全性,Viem 在这方面目前优于 Ethers。
Relevant video: VIEM vs Ethers | Best Web3 Javascript Framework
This video provides a direct visual and technical comparison between Ethers and Viem, explaining why many developers are switching to Viem for newer projects.
这是波卡的文档
https://docs.polkadot.com/smart-contracts/cookbook/dapps/zero-to-hero/
这是作业: https://github.com/papermoonio/2026-h1-building-production-grade-dApps/blob/main/homework/lesson-5/README.md
Homework 5
根据波卡文档从 zero 到 hero 到步骤,完成整个应用的开发,提交代码到本目录。
要参加黑客松了,没时间学习实践题。等香港黑客松结束以后再学。
✏️ 第六课 Task6 任务:
1⃣️选择题:https://wj.qq.com/s2/25655497/0x28/
2⃣️实践题:https://github.com/papermoonio/2026-h1-building-production-grade-dApps/blob/main/homework/lesson-6/README.md