SC Day 86
复习: Week 14总结 (Mini Lending完成 + 多链对比整合)
### 一、Mini Lending 项目完整架构回顾
2026-07-03
第四阶段:综合实战周复习MiniLending多链技能评估部署清单
日期: 2026-07-03 方向: 总结 阶段: 第四阶段:综合实战 标签: #周复习 #MiniLending #多链 #技能评估 #部署清单
今日目标
Week 14 是整个90天计划中承上启下的关键一周: Mini Lending 项目从开发→测试→审计全流程走完,同时完成了三大智能合约平台的系统对比。今天进行全面的回顾、整合和部署准备。
核心概念
一、Mini Lending 项目完整架构回顾
1.1 架构总览
┌─────────────────────────────────────────────────────┐
│ Mini Lending Protocol │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ MiniLending │ │ PriceOracle │ │ InterestR │ │
│ │ (Core) │←─│ (Interface) │ │ ateModel │ │
│ └──────┬───────┘ └──────────────┘ └───────────┘ │
│ │ │
│ Core Functions: │
│ ├── deposit(token, amount) │
│ ├── withdraw(token, amount) │
│ ├── borrow(token, amount) │
│ ├── repay(token, amount) │
│ ├── liquidate(borrower, token, amount) │
│ └── getHealthFactor(user) → uint256 │
│ │
│ Security Features: │
│ ├── ReentrancyGuard (nonReentrant) │
│ ├── CEI Pattern (Check-Effects-Interactions) │
│ ├── SafeERC20 (处理非标代币) │
│ ├── Oracle Staleness Check (价格过时检查) │
│ └── Pausable (紧急暂停) │
│ │
│ Admin Functions: │
│ ├── addMarket(token, collateralFactor, bonus) │
│ ├── setCollateralFactor(token, factor) │
│ └── pause() / unpause() │
└─────────────────────────────────────────────────────┘
1.2 项目开发进度回顾
| 阶段 | 天数 | 完成内容 | 关键学习 |
|---|---|---|---|
| 设计 | Day 75-76 | 架构设计、接口定义 | DeFi 借贷机制、清算数学 |
| 核心开发 | Day 77-79 | deposit/borrow/repay/liquidate | Solidity 存储布局、预言机集成 |
| 测试 | Day 82 | 24个测试用例(含 Fuzz) | Foundry 测试框架、DeFi 测试方法论 |
| Gas优化 | Day 82 | Slot Packing/immutable/unchecked | Gas 测量与优化权衡 |
| 审计 | Day 84 | Slither/Aderyn + 自我审计 | 安全思维、审计报告写作 |
| 修复 | Day 84 | 7个问题全部修复 | CEI模式、SafeERC20、价格验证 |
1.3 发现的问题清单
| # | 严重度 | 问题 | 修复方案 | 教训 |
|---|---|---|---|---|
| H-01 | High | 重入漏洞(withdraw) | nonReentrant + CEI | 永远先更新状态再做外部调用 |
| H-02 | High | 预言机无过时检查 | 时间戳检查 + 零值检查 | 不要信任外部数据源 |
| M-01 | Medium | 不安全的ERC20操作 | SafeERC20 | 不假设代币标准实现 |
| M-02 | Medium | 清算坏账风险 | 部分清算 + 动态调整 | 极端场景必须有预案 |
| M-03 | Medium | 利率精度损失 | 先乘后除 | 数学运算顺序影响精度 |
| L-01 | Low | 缺少零地址检查 | constructor中添加 | 防御性编程 |
| I-01 | Info | 缺少事件 | 添加事件 + 参数检查 | 链下监控依赖事件 |
二、多链对比知识整合
2.1 三链核心差异速查表
| 维度 | EVM | Solana | Move(Sui) |
|---|---|---|---|
| 一句话总结 | "全球共享计算机" | "高速交易引擎" | "安全资产管理系统" |
| 账户模型 | 全局状态树 | 程序-数据分离 | 对象模型 |
| 并行 | 顺序执行 | 声明式并行 | 所有权自动并行 |
| 安全特色 | 靠开发者+审计 | 靠Account约束 | 靠线性类型系统 |
| 典型漏洞 | 重入、闪电贷 | 签名验证缺失 | 逻辑错误(少资源漏洞) |
| 开发者体验 | 最好(工具多) | 中等(Rust难) | 新语言(生态少) |
| 适合场景 | 金融、可组合DeFi | 高频交易、支付 | 游戏、NFT、安全优先 |
| 代表协议 | Aave, Uniswap | Raydium, Jupiter | Cetus, Scallop |
2.2 知识图谱
多链知识体系
├── 底层架构 (Day 81)
│ ├── 账户模型: 全局状态 vs 分离账户 vs 对象
│ ├── 执行模型: 顺序 vs 并行
│ ├── 存储模型: 永久 vs 租金 vs 存储基金
│ ├── Gas模型: EIP-1559 vs 固定费 vs Gas Units
│ └── 编程范式: OOP vs 系统编程 vs 资源导向
│
├── 应用层 (Day 83)
│ ├── DeFi: AMM/借贷/Staking 跨链实现差异
│ ├── NFT: ERC721 vs Metaplex vs Object
│ ├── 安全: 各链特有漏洞类型
│ └── 生态: 开发者/工具链/TVL/DAU
│
└── PM决策 (Day 85)
├── 五维评估框架
├── 决策树
├── 真实案例分析
├── 多链 vs 跨链战略
└── 桥风险评估
三、部署清单
3.1 Mini Lending 部署到 Sepolia
# 1. 环境检查
forge --version # 确认 Foundry 安装
echo $SEPOLIA_RPC_URL # 确认 RPC URL
echo $DEPLOYER_PRIVATE_KEY # 确认私钥(测试网!)
# 2. 编译
forge build
# 3. 运行所有测试
forge test -vvv
# 4. Gas报告
forge test --gas-report
# 5. 部署脚本
forge script script/Deploy.s.sol:DeployMiniLending \
--rpc-url $SEPOLIA_RPC_URL \
--broadcast \
--verify \
--etherscan-api-key $ETHERSCAN_API_KEY \
-vvvv
# 6. 验证合约
forge verify-contract <CONTRACT_ADDRESS> \
src/MiniLending.sol:MiniLending \
--chain sepolia \
--etherscan-api-key $ETHERSCAN_API_KEY
部署脚本示例:
// script/Deploy.s.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "forge-std/Script.sol";
import "../src/MiniLending.sol";
import "../src/MockPriceOracle.sol";
contract DeployMiniLending is Script {
function run() external {
uint256 deployerKey = vm.envUint("DEPLOYER_PRIVATE_KEY");
vm.startBroadcast(deployerKey);
// 1. 部署 Mock 预言机 (测试网)
MockPriceOracle oracle = new MockPriceOracle();
oracle.setPrice(
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, // WETH
2000e8
);
// 2. 部署 Lending 核心合约
MiniLending lending = new MiniLending(address(oracle));
// 3. 添加市场
lending.addMarket(
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, // WETH
7500, // 75% collateral factor
500 // 5% liquidation bonus
);
vm.stopBroadcast();
console.log("Oracle deployed at:", address(oracle));
console.log("MiniLending deployed at:", address(lending));
}
}
3.2 部署前检查清单
Mini Lending Sepolia 部署检查清单:
代码准备:
□ 所有测试通过 (forge test)
□ 无 Slither High/Medium 未修复项
□ Gas 报告在合理范围
□ 所有外部调用使用 SafeERC20
□ 所有关键函数有 nonReentrant
□ 事件覆盖所有状态变更
部署参数:
□ 预言机地址确认
□ 抵押率设置合理 (50%-85%)
□ 清算奖励设置合理 (5%-15%)
□ 利率模型参数设置
安全配置:
□ Owner 地址使用多签 (测试网可用EOA)
□ 紧急暂停机制已实现
□ 参数修改上限已设置
验证:
□ 合约在 Etherscan 已验证
□ 部署后执行基本操作测试
□ 前端能正确连接
3.3 Solana/Sui Devnet 部署参考
# Solana (如果有 Anchor 程序)
solana config set --url devnet
anchor build
anchor deploy --provider.cluster devnet
# 记录 Program ID
# Sui (如果有 Move 模块)
sui client switch --env devnet
sui client publish --gas-budget 50000000
# 记录 Package ID
四、技能差距分析
4.1 当前能力评估 (Day 86)
| 技能领域 | 掌握度 | 薄弱点 | 后续计划 |
|---|---|---|---|
| Solidity 语法 | 85% | 高级 Assembly | Day 87 Gas优化专题 |
| DeFi 机制理解 | 80% | 复杂衍生品 | 持续学习 |
| 安全审计 | 70% | 形式化验证 | Day 88 DVDF |
| 测试方法论 | 80% | Invariant Testing | 补充 |
| Gas 优化 | 65% | Assembly 优化 | Day 87 |
| Solana/Anchor | 50% | 复杂 CPI、PDA | 需要更多实战 |
| Move/Sui | 40% | 实际项目经验 | 需要写完整项目 |
| 多链战略 | 75% | 实际决策经验 | 案例积累 |
| 前端集成 | 60% | wagmi v2、viem | 需要补强 |
4.2 与求职目标的差距
目标: Web3 产品经理 / 架构师
已具备:
✅ Solidity 读写能力 (超越大多数PM)
✅ DeFi 协议机制理解 (从底层到应用)
✅ 安全审计基础 (能读审计报告、使用工具)
✅ 多链架构理解 (EVM/Solana/Move)
✅ 测试方法论 (Foundry全套)
✅ Gas优化基础
还需补强:
⚠️ 真实项目部署经验 (Day 86-89 完成)
⚠️ 更多安全挑战练习 (Day 88 DVDF)
⚠️ 前端集成展示 (Day 89 作品集)
⚠️ 高级Gas优化/Assembly (Day 87)
竞争优势:
🌟 10年金融零售PM经验 + 智能合约能力 = 极稀缺
🌟 能和开发团队用代码语言沟通
🌟 理解安全风险和审计流程
🌟 多链视角(不只是以太坊)
五、Week 14 学习时间统计
| 日期 | 主题 | 时长 | 产出 |
|---|---|---|---|
| Day 81 | 多链架构对比(上) | 6h | 技术对比文档 |
| Day 82 | Mini Lending 测试+Gas优化 | 6h | 24个测试用例 |
| Day 83 | 多链应用层对比(下) | 6h | 应用层对比文档 |
| Day 84 | 自我审计+Slither+修复 | 6h | 审计报告+7个修复 |
| Day 85 | PM视角多链选择指南 | 6h | 决策框架+案例分析 |
| Day 86 | 周总结 | 4h | 本文档 |
| 总计 | 34h |
六、下周预告 (Week 15: Day 87-90)
| Day | 主题 | 目标 |
|---|---|---|
| 87 | Gas优化专题 | Storage布局/Assembly/高级优化 |
| 88 | DVDF冲刺 | 2-3道挑战题,巩固安全能力 |
| 89 | 作品集整理 | 90天所有项目整理成可展示状态 |
| 90 | 90天总结 | 完整复盘+知识图谱+下一步 |
关键要点总结
-
Mini Lending 是一个完整的 DeFi 开发周期缩影: 从设计→开发→测试→审计→修复→部署,每个环节都有不可跳过的关键步骤。最大的收获不是代码本身,而是这个流程的肌肉记忆。
-
多链知识的价值在于决策能力: 不是要精通每条链的所有细节,而是能根据产品需求做出有理有据的链选择。PM需要的是"知道什么时候用什么"而非"所有都会写"。
-
安全不是附加功能: Mini Lending 的7个审计发现说明,即使是一个简单的借贷协议也有多个安全风险点。安全意识必须贯穿整个开发周期,而不是"写完了再检查"。
-
测试是信心的来源: 24个测试用例让我们在做Gas优化和修复漏洞时有信心——每次修改都有测试验证。没有测试的代码修改等于赌博。
-
技能差距是清晰的: 通过自我评估,明确知道还需要补强 Gas优化、安全挑战和前端集成。最后4天正好覆盖这些。
面试关联
Q: "描述你从零到一开发一个 DeFi 协议的完整流程"
回答:
以我开发的 Mini Lending 为例,完整流程是:
- 需求分析(1天): 确定核心功能——存款、借款、还款、清算。参考 Aave/Compound 的机制设计。
- 架构设计(1天): 定义接口、存储结构、预言机集成方案、利率模型。
- 核心开发(3天): 实现5个核心函数,关注 CEI 模式和存储优化。
- 测试(1天): 24个测试用例覆盖 happy path、边界条件、攻击场景、Fuzz 测试。
- Gas优化(0.5天): Slot Packing、immutable、unchecked,每次优化用 snapshot 量化。
- 审计(1天): Slither + Aderyn 自动扫描 + 手动审计清单。发现7个问题。
- 修复验证(0.5天): 修复每个问题并添加对应测试。
- 部署(0.5天): Sepolia 测试网部署 + Etherscan 验证。
整个流程最大的教训是: 安全审计发现了2个 High 级别问题,说明即使是有经验的开发者也需要多层防护(工具+人工+测试)。
参考资源
- Foundry Book — 完整参考手册
- Aave V3 Architecture — 生产级借贷协议参考
- DeFiLlama — 多链数据对比
- Smart Contract Security Field Guide — 安全实践指南