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