Day 7
Week 1 复习与Portfolio组件优化
第一周知识点全面复盘,完成多链Portfolio组件开发,支持Token余额和USD估值
2025-01-15
复习Portfolio多链wagmiERC20Week1
Week 1 完成!
本周学习路径
Week 1: 区块链与钱包基础
├── Day 1: 区块链原理、共识机制 ✅
├── Day 2: 钱包类型(EOA/合约/MPC) ✅
├── Day 3: 交易结构、Gas机制 ✅
├── Day 4: EVM原理、账户模型 ✅
├── Day 5: Solidity基础(1) - ERC20 ✅
├── Day 6: Solidity基础(2) - Uniswap ✅
└── Day 7: 复习 + Portfolio优化 ✅知识点速查表
| Day | 主题 | 核心概念 | 面试关键词 |
|---|---|---|---|
| 1 | 区块链基础 | 去中心化、不可篡改、PoW/PoS | 共识机制对比 |
| 2 | 钱包类型 | EOA/合约钱包/MPC、nonce | 账户抽象AA |
| 3 | 交易与Gas | EIP-1559、Base Fee、Priority Fee | Gas优化 |
| 4 | EVM原理 | Stack/Memory/Storage、操作码 | 函数选择器 |
| 5 | Solidity基础 | 数据类型、可见性、ERC20 | approve机制 |
| 6 | Uniswap | Router/Pair、AMM、x*y=k | 滑点保护 |
核心概念快速复习
1. 区块链与共识
PoW (工作量证明)
├── 原理: 算力竞争
├── 优点: 安全性验证15年+
├── 缺点: 能耗巨大
└── 代表: Bitcoin
PoS (权益证明)
├── 原理: 质押验证
├── 优点: 能耗低99.95%
├── 缺点: 历史较短
└── 代表: Ethereum (现在)2. 账户模型
EOA (外部账户)
├── 控制: 私钥
├── 功能: 发起交易
├── 代码: 无
└── 代表: MetaMask
合约账户
├── 控制: 代码逻辑
├── 功能: 复杂操作
├── 代码: 有
└── 代表: Safe多签3. Gas 机制 (EIP-1559)
交易费 = (Base Fee + Priority Fee) × Gas Used
┌─────────────────────────────────────┐
│ Base Fee │
│ ├── 协议算法自动调整 │
│ ├── 区块使用>50%则涨,<50%则跌 │
│ └── 被销毁(ETH通缩来源) │
├─────────────────────────────────────┤
│ Priority Fee (小费) │
│ ├── 用户自设 │
│ └── 给验证者 │
└─────────────────────────────────────┘4. EVM 存储层级
存储类型 生命周期 Gas成本
─────────────────────────────────
Stack 单次操作 3 Gas (最低)
Memory 函数调用内 中等
Storage 永久存储 20000 Gas (最高)
优化原则: 尽量用Memory,减少Storage操作5. ERC20 核心流程
直接转账:
用户A ──transfer(B, 100)──→ 用户B
授权转账 (DeFi模式):
Step 1: 用户A ──approve(合约, 100)──→ 授权
Step 2: 合约 ──transferFrom(A, B, 100)──→ 执行
为什么需要两步?
→ 合约不能直接动用户资产
→ 用户主动授权才能操作6. Uniswap 架构
用户
│
▼
Router (路由合约)
│ ├── 处理多跳交换
│ ├── ETH↔WETH转换
│ └── deadline检查
▼
Pair (交易对合约)
│ ├── 持有流动性
│ ├── x * y = k 计算
│ └── 执行实际swap
▼
Factory (工厂合约)
└── 创建和管理所有Pair面试题速答卡
技术理解类
| 问题 | 30秒答案 |
|---|---|
| PoW vs PoS? | PoW靠算力竞争,安全但耗能;PoS靠质押,高效但历史短。ETH在2022年完成转换。 |
| EOA vs 合约钱包? | EOA私钥控制,功能有限;合约钱包代码控制,支持多签、社交恢复等高级功能。 |
| EIP-1559是什么? | Gas费分Base Fee(销毁)和Priority Fee(给验证者),让费用更可预测,同时ETH可能通缩。 |
| Storage vs Memory? | Storage永久存储很贵(20000 Gas),Memory临时存储便宜。优化时减少Storage操作。 |
| 什么是函数选择器? | 函数签名keccak256哈希的前4字节,用于标识调用哪个函数。如transfer是0xa9059cbb。 |
DeFi相关
| 问题 | 30秒答案 |
|---|---|
| 为什么要approve? | 合约不能直接动用户资产,需要先授权才能transferFrom,这是DeFi的安全基础。 |
| 什么是滑点? | 预期价格和实际成交价的差异。用amountOutMin参数保护,低于此值交易回滚。 |
| Router和Pair区别? | Router是用户入口,处理复杂逻辑;Pair持有流动性,执行实际swap。分离设计便于升级。 |
| x*y=k什么意思? | 恒定乘积公式,交易时一种Token增加,另一种减少,自动形成价格发现机制。 |
今日代码实践
Portfolio 组件优化
新增功能:
1. 多链余额显示
- Ethereum 主网
- Arbitrum
- Optimism
- Polygon
- Sepolia 测试网
2. 主流Token余额
- USDC (USD Coin)
- USDT (Tether)
- DAI (Dai Stablecoin)
- WETH (Wrapped ETH)
3. USD估值
- ETH余额美元价值
- 稳定币1:1估值
- WETH实时价格计算
核心代码片段
多链配置:
const SUPPORTED_CHAINS = [
{ chain: mainnet, name: 'Ethereum', icon: '⟠' },
{ chain: arbitrum, name: 'Arbitrum', icon: '🔵' },
{ chain: optimism, name: 'Optimism', icon: '🔴' },
{ chain: polygon, name: 'Polygon', icon: '💜' },
{ chain: sepolia, name: 'Sepolia', icon: '🧪' },
]Token配置:
const POPULAR_TOKENS = [
{ symbol: 'USDC', address: '0xA0b8...', decimals: 6, priceUsd: 1 },
{ symbol: 'USDT', address: '0xdAC1...', decimals: 6, priceUsd: 1 },
{ symbol: 'DAI', address: '0x6B17...', decimals: 18, priceUsd: 1 },
{ symbol: 'WETH', address: '0xC02a...', decimals: 18, priceUsd: null },
]获取余额 (wagmi):
// 原生代币余额
const { data: balance } = useBalance({
address: address,
chainId: chainConfig.chain.id,
})
// ERC20代币余额
const { data: tokenBalance } = useBalance({
address: address,
token: token.address,
chainId: mainnet.id,
})ETH价格Hook:
function useEthPrice() {
const [ethPrice, setEthPrice] = useState<number | null>(null)
useEffect(() => {
fetch('https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd')
.then(res => res.json())
.then(data => setEthPrice(data.ethereum?.usd))
}, [])
return { ethPrice }
}Week 1 成果清单
知识产出
- [x] 6篇学习笔记
- [x] 18+道面试题准备
- [x] 核心概念速查表
代码产出
- [x] Portfolio 多链支持
- [x] Token 余额显示
- [x] USD 估值功能
- [x] GasTracker 优化 (Day 3)
链上实操
- [x] 创建 MetaMask 钱包
- [x] 领取 Sepolia 测试ETH
- [x] 发送测试网交易
- [x] 在 Etherscan 查看交易详情
Week 2 预告
Week 2: DeFi核心机制
├── Day 8: AMM原理(x*y=k)、无常损失
├── Day 9: 订单簿vs AMM对比
├── Day 10: 借贷协议原理(超额抵押/清算)
├── Day 11: 稳定币机制(USDC/DAI/FRAX)
├── Day 12: Dune入门(1) - SQL基础
├── Day 13: Dune入门(2) - 写简单查询
└── Day 14: 复习 + EthPrice多币种支持下周重点
1. DeFi机制深入: AMM、借贷、稳定币
2. 数据分析入门: Dune SQL查询
3. 面试题: AMM vs 订单簿、无常损失
学习资源汇总
Week 1 推荐资源
| 主题 | 资源 |
|---|---|
| 区块链原理 | 3Blue1Brown 视频 |
| EVM详解 | evm.codes |
| Solidity | CryptoZombies |
| Uniswap | 官方文档 |
| 合约阅读 | Etherscan |
开发工具
| 工具 | 用途 |
|---|---|
| wagmi | React Hooks for Ethereum |
| viem | TypeScript Ethereum库 |
| RainbowKit | 钱包连接UI |
| CoinGecko API | 价格数据 |
本周心得
学习方法
1. 理论+实操结合: 每学一个概念立刻链上操作
2. 输出倒逼输入: 写笔记整理思路
3. 面试导向: 每个知识点准备30秒答案
关键收获
- 理解了以太坊的账户模型和交易结构
- 能读懂ERC20合约和Uniswap Router
- 掌握了wagmi进行多链开发
- 建立了Web3产品经理的知识框架
下周目标
- 深入理解DeFi核心机制
- 开始Dune数据分析
- 准备更多面试题答案