在学习和使用 Solidity 时,很多人第一次接触 library 的时候,都会遇到这样的报错信息:
Engineering Notes
孟斌的小站
技术博客与学习记录
1、学习目标
- 理解借贷平台中 抵押物、借款、清算 的核心关系
- 掌握 健康因子(Health Factor) 的计算方式
- 结合 价格预言机 获取资产价值
- 编写一个简化的 清算合约,实现低抵押率下的清算流程
- 使用 Foundry 测试完整流程:存款 → 抵押 → 借款 → 价格下跌 → 清算
2、知识点梳理
2.1 抵押与借款
- 借款人必须先存入 抵押资产(如 ETH),再借出稳定币(如 USDC)。
- 平台通过 抵押率(Collateral Factor) 来控制借款额度。
例如:ETH 的抵押率 75%,存入 100 美元 ETH → 最多借 75 USDC。
2.2 健康因子(Health Factor)
$$ HF = \frac{抵押物价值 \times 抵押率}{借款价值} $$
1、学习目标
- 理解借贷平台的 资金池机制
- 掌握 Aave / Compound 等平台的 动态利率模型
- 编写一个简化的 带利率的借贷池合约
- 使用 Foundry 编写测试,验证利率随资金利用率变化
2、知识点梳理
- 资金池(Lending Pool)
- 所有存款用户的资产进入一个共享池子
- 借款人从池子中提取资金
- 池子内资金利用率决定利率水平
- 资金利用率(Utilization Rate, U)
[ U = \frac{总借款}{总存款} ]- U 越高,说明池子资金越紧张,借款利率越高
- U 越低,说明资金富余,借款利率越低
- 利率模型(Interest Rate Model)
- 基础利率(Base Rate):当利用率接近 0 时的最低借款利率
- 斜率(Slope):利用率上升时,利率增加的速度
- 最优利用率(Optimal Utilization):一个转折点,超过该点后利率会陡增,防止资金池被借空
- 存款利率(Supply Rate)
存款利率来自借款利息分配:
[ 存款利率 = 借款利率 \times \frac{总借款}{总存款} \times (1 - 协议费率) ]
3、资金池合约实现
LendingPoolWithRate.sol
6. 前端
前端要点:
1. 学习目标
完成本课后你将能:
4. 前端交互(React + ethers.js)——精确且可直接运行的示例
前端要能完成以下流程:
课程目标
学完本课你将能:
在 Solidity 开发中,event 是智能合约与链下系统交互的重要桥梁。在单元测试中验证事件的触发和参数正确性,是保证合约逻辑正确的关键环节。本文将结合 Foundry,全面讲解事件的测试方法,包括严格顺序匹配、顺序忽略,以及解码非 indexed 参数。
学习目标
通过本课学习,你将掌握:
1. 什么是多签(Multi-Signature Wallet)
多签钱包(Multisig) 就是需要多个签名(多个私钥持有者)共同批准,交易才能执行的钱包。