返回知识库
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交易与GasEIP-1559、Base Fee、Priority FeeGas优化
4EVM原理Stack/Memory/Storage、操作码函数选择器
5Solidity基础数据类型、可见性、ERC20approve机制
6UniswapRouter/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
SolidityCryptoZombies
Uniswap官方文档
合约阅读Etherscan

开发工具

工具用途
wagmiReact Hooks for Ethereum
viemTypeScript Ethereum库
RainbowKit钱包连接UI
CoinGecko API价格数据

本周心得

学习方法

1. 理论+实操结合: 每学一个概念立刻链上操作

2. 输出倒逼输入: 写笔记整理思路

3. 面试导向: 每个知识点准备30秒答案

关键收获

  • 理解了以太坊的账户模型和交易结构
  • 能读懂ERC20合约和Uniswap Router
  • 掌握了wagmi进行多链开发
  • 建立了Web3产品经理的知识框架

下周目标

  • 深入理解DeFi核心机制
  • 开始Dune数据分析
  • 准备更多面试题答案