返回 SC 笔记
SC Day 89

全栈: 90天作品集整理

### 一、作品集战略定位

2026-07-06
第四阶段:综合实战
作品集求职GitHub项目展示部署面试准备

日期: 2026-07-06 方向: 总结 阶段: 第四阶段:综合实战 标签: #作品集 #求职 #GitHub #项目展示 #部署 #面试准备


今日目标

90天即将收官。今天的任务是将所有学习成果组织成一个可展示的作品集(Portfolio)——这是求职过程中最重要的资产。一个好的作品集不只是代码仓库,而是一份证明你"能做事"的证据链。

具体目标:

  1. 整理 GitHub 仓库结构
  2. 为每个项目编写清晰的说明
  3. 列出所有已部署的合约(测试网)
  4. 准备面试中如何展示这些项目
  5. 完成 90 天所有合约/程序的清单

核心概念

一、作品集战略定位

1.1 目标受众分析

受众关注点展示重点
技术面试官代码质量、安全意识测试覆盖率、Gas优化、审计报告
产品面试官产品思维、架构能力设计文档、决策推理、用户体验考虑
HR/猎头技术广度、项目完成度GitHub Stars/活跃度、部署链接
潜在同事协作能力、代码风格commit 质量、文档清晰度

1.2 差异化定位

传统 Web3 开发者:      你的差异化:
├── 只会 Solidity       ├── Solidity + Rust/Anchor + Move
├── 只做过 NFT 项目     ├── 完整 DeFi 协议 (Mini Lending)
├── 没有安全意识        ├── 有审计报告和安全挑战经验
├── 没有产品思维        ├── 10年 PM 经验 + 技术能力
└── 单链开发            └── 多链对比 + 链选择框架

关键信息: "我不只是会写代码的 PM,我是理解代码的 PM"

二、GitHub 仓库结构

2.1 推荐目录结构

solidity-rust-move-90days/
├── README.md                          # 项目总览 (最重要!)
├── LICENSE
│
├── contracts/                         # 所有智能合约
│   ├── solidity/
│   │   ├── 01-basics/                # Week 1-2: 基础合约
│   │   │   ├── SimpleStorage.sol
│   │   │   ├── EtherWallet.sol
│   │   │   └── MultiSig.sol
│   │   ├── 02-tokens/                # Week 3-4: 代币标准
│   │   │   ├── MyERC20.sol
│   │   │   ├── MyERC721.sol
│   │   │   └── MyERC1155.sol
│   │   ├── 03-defi/                  # Week 5-8: DeFi 协议
│   │   │   ├── SimpleAMM.sol
│   │   │   ├── StakingVault.sol
│   │   │   ├── FlashLoan.sol
│   │   │   └── YieldStrategy.sol
│   │   ├── 04-mini-lending/          # Week 9-14: 完整借贷协议
│   │   │   ├── src/
│   │   │   │   ├── MiniLending.sol
│   │   │   │   ├── InterestRateModel.sol
│   │   │   │   └── interfaces/
│   │   │   ├── test/
│   │   │   │   ├── MiniLending.t.sol      # 24个测试
│   │   │   │   └── MiniLending.fuzz.t.sol # Fuzz测试
│   │   │   ├── script/
│   │   │   │   └── Deploy.s.sol
│   │   │   ├── audit/
│   │   │   │   ├── AUDIT_REPORT.md        # 自我审计报告
│   │   │   │   └── slither-output.json
│   │   │   └── README.md
│   │   └── 05-security/             # DVDF 挑战解答
│   │       ├── Selfie.sol
│   │       ├── Compromised.sol
│   │       └── PuppetV2.sol
│   │
│   ├── anchor/                       # Solana 程序
│   │   ├── counter/
│   │   ├── token-vault/
│   │   └── README.md
│   │
│   └── move/                         # Sui Move 模块
│       ├── coin-flip/
│       ├── simple-nft/
│       └── README.md
│
├── docs/                             # 文档和笔记
│   ├── architecture/                 # 架构设计文档
│   │   ├── mini-lending-design.md
│   │   └── multi-chain-comparison.md
│   ├── security/                     # 安全分析
│   │   ├── audit-report.md
│   │   └── attack-taxonomy.md
│   └── notes/                        # 90天学习笔记
│       ├── SC-DAY01.md
│       ├── ...
│       └── SC-DAY90.md
│
├── deployments/                      # 部署记录
│   ├── sepolia.json                  # Sepolia 部署地址
│   ├── solana-devnet.json           # Solana Devnet
│   └── sui-devnet.json              # Sui Devnet
│
└── scripts/                          # 工具脚本
    ├── deploy-all.sh
    └── verify-all.sh

2.2 README.md 模板

# Solidity + Rust/Move 90-Day Smart Contract Portfolio

> 90天智能合约学习之旅: 从零到可审计的 DeFi 协议

## 关于作者
10年金融零售产品经理 + 架构师,通过90天系统学习掌握智能合约开发。
目标不是成为全职开发者,而是成为**能和开发团队用代码沟通的产品经理**。

## 核心项目

### 1. Mini Lending Protocol (旗舰项目)
完整的去中心化借贷协议,覆盖 DeFi 借贷的核心功能。

| 指标 | 数据 |
|------|------|
| 代码量 | ~450 LOC (核心合约) |
| 测试覆盖 | 24个测试 (含 Fuzz) |
| 安全审计 | Slither + Aderyn + 自我审计 |
| Gas优化 | Slot Packing, immutable, CEI |
| 部署 | Sepolia Testnet |

**核心功能**: 存款 / 借款 / 还款 / 清算 / 利率计算 / 预言机集成

[查看合约](./contracts/solidity/04-mini-lending/) |
[审计报告](./docs/security/audit-report.md) |
[Etherscan](https://sepolia.etherscan.io/address/0x...)

### 2. DeFi 安全挑战 (DVDF)
完成了 Damn Vulnerable DeFi 的多个挑战:
- #6 Selfie: 治理 + 闪电贷攻击
- #7 Compromised: 预言机操纵
- #9 Puppet V2: 价格操纵

### 3. Solana 程序 (Anchor)
- Counter: 基础状态管理
- Token Vault: SPL Token 交互

### 4. Sui Move 模块
- Coin Flip: 随机数和对象模型
- Simple NFT: Sui 原生 NFT

## 技术栈
- **语言**: Solidity, Rust, Move
- **框架**: Foundry, Anchor, Sui CLI
- **测试**: Forge Test, Fuzz Testing
- **安全**: Slither, Aderyn
- **前端**: ethers.js, @solana/web3.js, @mysten/sui.js

## 90天学习路径
| 阶段 | 周数 | 主题 | 核心产出 |
|------|------|------|---------|
| 一 | 1-4 | Solidity 基础 | 8个基础合约 |
| 二 | 5-8 | DeFi + 安全 | AMM/Staking/FlashLoan |
| 三 | 9-12 | Solana + Move | 4个跨链程序 |
| 四 | 13-14 | Mini Lending + 多链 | 完整DeFi协议 |
| 四 | 15 | 优化 + 安全 + 总结 | Gas优化/DVDF/作品集 |

## 部署合约

### Ethereum Sepolia
| 合约 | 地址 | Etherscan |
|------|------|-----------|
| MiniLending | 0x... | [链接] |
| MockOracle | 0x... | [链接] |
| SimpleAMM | 0x... | [链接] |

### Solana Devnet
| 程序 | Program ID |
|------|-----------|
| Counter | xxx...xxx |
| TokenVault | xxx...xxx |

### Sui Devnet
| 模块 | Package ID |
|------|-----------|
| CoinFlip | 0x... |
| SimpleNFT | 0x... |

三、已构建的合约/程序完整清单

3.1 Solidity 合约 (18个)

#合约名类型关键学习
1SimpleStorage基础W1状态变量、函数
2EtherWallet基础W1receive/fallback、提款
3MultiSigWallet基础W2多签、权限控制
4TimeLock基础W2时间锁、队列执行
5MyERC20代币W3ERC20 标准、mint/burn
6MyERC721代币W3NFT 标准、元数据
7MyERC1155代币W4多代币标准、批量
8SimpleAMMDeFiW5恒定乘积、流动性
9StakingVaultDeFiW6ERC4626、收益计算
10FlashLoanDeFiW7ERC3156、回调模式
11YieldStrategyDeFiW7策略模式、组合
12SimpleGovernor治理W8投票、提案、执行
13MiniLendingDeFi核心W9-14完整借贷协议
14InterestRateModelDeFi组件W10分段利率模型
15MockPriceOracle测试工具W10预言机模拟
16SelfieAttacker安全W15治理+闪电贷攻击
17CompromisedAttacker安全W15预言机操纵
18PuppetV2Attacker安全W15DEX价格操纵

3.2 Solana/Anchor 程序 (3个)

#程序名类型关键学习
19Counter基础Account模型、PDA
20TokenVaultDeFiSPL Token、CPI
21NFTMinterNFTMetaplex、元数据

3.3 Sui/Move 模块 (2个)

#模块名类型关键学习
22CoinFlip游戏Object模型、随机数
23SimpleNFTNFT线性类型、所有权

总计: 23个合约/程序

四、面试项目展示策略

4.1 STAR 框架展示 Mini Lending

Situation (背景):
"作为一个有10年金融零售经验的 PM,我想证明自己不只是'了解技术',
而是能真正理解 DeFi 协议的底层实现,从而做出更好的产品决策。"

Task (任务):
"我设定的目标是从零开始构建一个完整的借贷协议——不是 toy project,
而是覆盖存款、借款、还款、清算、利率、预言机的生产级代码。"

Action (行动):
"1. 研究了 Aave V3 和 Compound V2 的架构设计
 2. 用 Foundry 从头构建,遵循 CEI 安全模式
 3. 编写了24个测试(含 Fuzz),覆盖正常流程+攻击场景
 4. 用 Slither 和 Aderyn 做自动化审计,发现并修复7个问题
 5. 对 Gas 进行系统优化,Slot Packing 节省了50%存储成本
 6. 部署到 Sepolia 测试网并验证"

Result (结果):
"通过这个项目:
 - 深刻理解了 DeFi 借贷的每一个环节
 - 能准确评估协议的安全风险(发现了2个 High 级问题)
 - 能用代码级别的理解和开发团队沟通
 - 建立了从设计→开发→测试→审计→部署的完整流程认知"

4.2 常见面试问题准备

问题回答要点
"你为什么要学智能合约?"为了用代码语言和开发团队沟通,做出更好的产品决策
"Mini Lending 最难的部分?"清算机制的边界条件——坏账场景需要动态调整清算金额
"你发现了什么安全问题?"2个High(重入+预言机过时),展示审计报告
"为什么选 Foundry 而非 Hardhat?"Foundry 用 Solidity 写测试(同一语言),Fuzz 测试内置,速度快10倍
"你对多链怎么看?"有五维评估框架,展示 Day 85 的决策树
"EVM vs Solana 你更推荐哪个?"取决于产品需求,展示 Day 81/83/85 的对比分析

4.3 展示加分项

在面试中可以主动提到:

1. "我的审计报告在这里" → 展示专业的安全意识
2. "这是 Gas 优化前后的对比数据" → 展示数据驱动的优化能力
3. "我做了3道 DVDF 安全挑战" → 展示攻击者思维
4. "这是我的多链选择决策框架" → 展示产品思维和架构能力
5. "所有合约都部署在测试网" → 展示完整的交付能力

五、部署记录模板

// deployments/sepolia.json
{
  "network": "sepolia",
  "chainId": 11155111,
  "deployer": "0x...",
  "deployDate": "2026-07-06",
  "contracts": {
    "MiniLending": {
      "address": "0x...",
      "etherscan": "https://sepolia.etherscan.io/address/0x...",
      "verified": true,
      "constructorArgs": ["0x...oracle"],
      "txHash": "0x..."
    },
    "MockPriceOracle": {
      "address": "0x...",
      "etherscan": "https://sepolia.etherscan.io/address/0x...",
      "verified": true
    },
    "SimpleAMM": {
      "address": "0x...",
      "etherscan": "https://sepolia.etherscan.io/address/0x...",
      "verified": true
    }
  }
}

关键要点总结

  1. 作品集是最有力的求职证据: 比简历上写"熟悉 Solidity"有力1000倍的是一个可验证的、部署在测试网上的、有审计报告的 DeFi 协议。

  2. README 是第一印象: 面试官/HR 看你 GitHub 的前30秒决定了是否继续看下去。README 必须清晰、专业、有重点。

  3. 质量 > 数量: 23个合约不需要每个都完美,但 Mini Lending 必须是高质量的旗舰项目——代码整洁、测试充分、有审计报告。

  4. 展示思考过程比展示代码更重要: 面试官更想看到你为什么这样设计,而不只是如何实现。设计文档、审计报告、多链对比文档是展示思考的载体。

  5. 部署 = 完成: 只存在本地的代码不算"项目"。部署到测试网 + Etherscan 验证 = 可以当场演示的成品。


常见误区

  1. 误区: 代码越多越好 — 面试官看不了23个合约。把精力花在让1-2个项目做到极致。

  2. 误区: 不需要文档 — 没有文档的代码仓库看起来像"学习笔记"而非"专业项目"。README、设计文档、审计报告让你从学生变成专业人士。

  3. 误区: 只展示技术能力 — 作为 PM 求职者,技术能力是加分项而非核心。核心是展示"我理解技术所以能做更好的产品决策"。

  4. 误区: 等项目完美了再展示 — 完成 > 完美。有一个部署的不完美项目远好于一个"还在做"的完美计划。


面试关联

Q: "展示一下你的智能合约项目"

回答模板:

这是我的 Mini Lending 协议 (打开 GitHub 和 Etherscan)。

产品设计: 参考 Aave V3 的架构,支持多资产存借、自动清算、利率模型。 技术亮点: 24个测试包含 Fuzz Testing;Gas 优化通过 Slot Packing 节省50%存储成本。 安全实践: Slither 扫描 + 手动审计发现7个问题(2个 High 级),全部修复。审计报告在这里。 部署: 在 Sepolia 测试网,合约已在 Etherscan 验证,可以现场演示。

做这个项目最大的收获是: 理解了为什么 Aave 的清算机制要那样设计——因为我在自己的协议中遇到了坏账场景,必须设计动态调整机制。这种第一手经验是读文档无法获得的。


参考资源

  1. GitHub Profile README Guide — GitHub 个人主页优化
  2. How to Present Projects in Interviews — 面试项目展示技巧
  3. Foundry Deployment Guide — 部署脚本教程
  4. Etherscan Verification — 合约验证