Engineering Notes

孟斌的小站

技术博客与学习记录

共 612 篇文章 标签与分类索引已启用

《纸上谈兵·solidity》课程小结

课程结构

第一部分:基础入门(第 0-2 课)

  • 第 0 课:搭建开发环境(Remix / Foundry / Hardhat)
  • 第 1 课:部署第一个合约
  • 第 2 课:合约交互(view/pure vs 状态修改)

第二部分:语言核心(第 3-12 课)

  • 第 3-4 课:事件与错误处理
  • 第 5 课:外部调用与重入防护
  • 第 6 课:存储布局(storage/memory/calldata)
  • 第 7-8 课:函数可见性、继承与接口
  • 第 9-12 课:事件日志、fallback、错误处理、ABI 编码

第三部分:高级特性(第 13-22 课)

  • 第 13-14 课:低级调用(call/delegatecall)、代理模式
  • 第 15-18 课:库、支付模式、权限管理、Diamond 标准
  • 第 19-20 课:安全专题(常见攻击与防御)
  • 第 21-22 课:Gas 优化、ERC20 实现

第四部分:实战项目(第 23-35 课)

  • 第 23 课:NFT(ERC721/ERC1155)
  • 第 24 课:众筹合约
  • 第 25-26 课:DEX、借贷合约
  • 第 27 课:DAO 治理
  • 第 28-31 课:安全审计案例(The DAO、Parity、Nomad)
  • 第 32-36 课:DeFi 基础、多签钱包、DEX 实战

第五部分:DeFi 进阶(第 37-48 课)

  • 第 37-39 课:资金池、利率模型、清算机制、aToken
  • 第 40-42 课:风险控制、协议费、多市场支持
  • 第 43-45 课:清算进阶、利率曲线、复利机制
  • 第 46-48 课:跨链借贷、治理代币、前端 DApp 集成

核心知识点

Solidity 基础

  • 数据类型、存储位置、函数类型、可见性、继承、错误处理

安全编程

  • 重入防护、权限控制、CEI 模式、Pull 支付、Gas 优化

设计模式

  • 代理模式(透明代理、UUPS、Diamond)、访问控制、可升级合约

标准协议

  • ERC20、ERC721、ERC1155、ERC165、EIP-2535

DeFi 核心

  • 资金池、利率模型、清算机制、价格预言机、DAO 治理

实战项目

  1. HelloWorld / Counter 合约
  2. ERC20 / ERC721 / ERC1155 代币
  3. 众筹合约 / DEX / 借贷池
  4. 多签钱包 / DAO 治理
  5. 完整 DeFi 协议(借贷、清算、治理)

工具链

  • 开发:Remix IDE、Foundry、Hardhat、VSCode
  • 测试:Foundry Test、Hardhat Test
  • 部署:forge script、hardhat deploy、Anvil
  • 前端:ethers.js、React、MetaMask

学习路径

  • 初学者:第 0-2 课 → 第 3-12 课 → 第 13-16 课 → 第 22-24 课
  • 进阶:第 17-21 课 → 第 25-27 课 → 第 28-31 课 → 第 32-36 课
  • 专业:第 37-48 课(完整 DeFi 协议开发)

安全原则

  1. 最小权限原则
  2. CEI 模式(Check-Effects-Interactions)
  3. Pull 支付模式
  4. 输入验证
  5. 重入防护(ReentrancyGuard)
  6. 避免时间依赖
  7. 外部调用谨慎处理
  8. 重要操作记录事件
  9. 上线前代码审计

常见陷阱

  • 开发:存储槽冲突、函数选择器碰撞、delegatecall 陷阱、Gas 限制
  • 安全:重入攻击、整数溢出、权限绕过、时间依赖
  • 部署:代理合约构造函数、初始化函数、升级兼容性、事件索引限制

推荐资源


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
腾讯云开发者社区:孟斯特

继续阅读

《纸上谈兵·solidity》第 46 课:DeFi 实战(10) -- 跨链借贷与流动性桥接

1、学习目标

  • 理解跨链借贷的几种常见体系结构(lock-mint、liquidity pool、atomic swap、debt-on-destination);
  • 了解主流跨链通信/桥的安全/设计要点(finality、reorg、replay、watchers、relayers、attestation);
  • 掌握跨链借贷带来的关键挑战:延迟、清算、oracle 一致性、双花、流动性碎片化、信任边界;
  • 实现一个教学级别的跨链借贷原型(MockBridge + ChainA 抵押管理 + ChainB 借贷/信用管理),并用 Foundry 测试关键流程(存抵押 → 跨链消息 → mint vToken → 借款 → 价格下跌 → 跨链清算);
  • 学会如何把教学实现替换成生产桥(LayerZero / Axelar / Wormhole)时需要注意的改动。

2、概念与设计详解

跨链借贷把「抵押在链 A、借款在链 B」或「在某链上开仓并在另一链上获得流动性」变为可能,但也带来了复杂性。下面尽量详尽列出设计要点与工程权衡。

继续阅读

《纸上谈兵·solidity》第 45 课:DeFi 实战(9) -- 利息累积与结算机制(可复利)

1、学习目标

  • 清楚区分 利息计算的几种方法(简单利息 / 离散复利 / 指数连续复利)及各自的利弊
  • 理解并掌握 index-based(借款/存款指数) 的利息会计方法(可扩展到多资产)
  • 从零实现:借款指数(borrowIndex)/ 存款指数(supplyIndex)、按秒累积利息、按比例分配协议储备(reserve)
  • 使用 Foundry 测试:模拟时间流逝、验证借款人负债、存款人收益、协议储备累积与还款行为

2、概念介绍

在现实的借贷协议里,利息并不是“每个用户单独按时间往账上写利息”,而是用**公用索引(index)**高效记录利息增长,然后按需用索引换算账户余额。这样做能极大节省 gas 并避免对每个用户频繁写状态。

继续阅读

《纸上谈兵·solidity》第 44 课:DeFi 实战(8) -- 利率曲线与资金池优化(动态利用率模型)

1、学习目标

  • 理解 资金利用率(Utilization Rate, U) 概念
  • 掌握 动态利率模型(线性 / 分段 / 曲线)
  • 通过代码实现利率自动调整机制
  • 编写 完整测试 验证资金利用率、借贷利率、存款收益随资金变化的联动
  • 对比 Compound / Aave 的利率曲线模型

2、资金利用率 (Utilization Rate)

借贷协议的核心指标:

继续阅读

《纸上谈兵·solidity》第 43 课:DeFi 实战(7) -- 清算机制进阶(多资产抵押清算路径、拍卖机制)

1、学习目标

  • 深入理解多资产抵押下的 清算路径 与策略选择(顺序清算 vs 拍卖)
  • 明确 清算参数closeFactorliquidationBonusliquidationThresholdmaxLiquidationSize 等的含义与取值权衡
  • 实现并测试:
    • 支持多资产、可选择性清算(指定要拿走哪种抵押物)
    • 基于折价直接清算(快速清算)
    • 一个简易拍卖(auction)示例,适合处理流动性差或高价值抵押品的场景
  • 掌握清算相关的 安全与经济风险(闪电贷清算、预言机操纵、清算人经济激励)及缓解措施

2、概念梳理

2.1 为什么需要「进阶清算」?

在单一资产、简单系统里,清算可以用“偿还债务 → 扣押抵押物(按折扣)”快速结束。但在多资产系统和真实市场中,会遇到多种复杂情形:

继续阅读

《纸上谈兵·solidity》第 42 课:DeFi 实战(6) -- 跨资产借贷与多市场支持

1. 学习目标

  • 理解为什么借贷协议必须支持多种资产而不是单一代币。
  • 掌握**市场(Market)**的概念:每个资产拥有独立的借贷池、利率模型、抵押参数。
  • 学习 跨资产借贷 的关键逻辑:抵押物与借款资产之间的价值评估。
  • 实现一个多市场借贷平台原型,允许用户用 A 代币抵押,借出 B 代币。

2. 背景与概念

2.1 为什么需要多资产支持?

单资产借贷(例如只能抵押 ETH 借出 ETH)意义不大。现实需求是:

继续阅读

《纸上谈兵·solidity》第 41 课:DeFi 实战(5) -- 协议费与治理

1、学习目标

  • 理解协议费(Protocol Fees)的来源、类型与记账方式
  • 理解协议金库(Treasury)的角色与取款分配模式
  • 掌握去中心化治理(On-chain Governance / DAO)的基本模型、风险与缓解手段
  • 从零实现一个简化版的 费用收集 → Treasury → 治理参数变更 流程(含 timelock)
  • 使用 Foundry 编写测试,验证费用累积与治理变更(例如修改 reserveFactor

2、概念详解(尽可能详细、贴近现实)

2.1 协议费(Protocol Fees)—— 来源与形式

协议费是 DeFi 协议获取收入、支持开发和治理的核心手段。常见来源有:

继续阅读