Engineering Notes

孟斌的小站

技术博客与学习记录

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

《纸上谈兵·solidity》第 38 课:DeFi 实战(2) -- 清算机制与价格预言机

1、学习目标

  • 理解借贷平台中 抵押物、借款、清算 的核心关系
  • 掌握 健康因子(Health Factor) 的计算方式
  • 结合 价格预言机 获取资产价值
  • 编写一个简化的 清算合约,实现低抵押率下的清算流程
  • 使用 Foundry 测试完整流程:存款 → 抵押 → 借款 → 价格下跌 → 清算

2、知识点梳理

2.1 抵押与借款

  • 借款人必须先存入 抵押资产(如 ETH),再借出稳定币(如 USDC)。
  • 平台通过 抵押率(Collateral Factor) 来控制借款额度。
    例如:ETH 的抵押率 75%,存入 100 美元 ETH → 最多借 75 USDC。

2.2 健康因子(Health Factor)

$$ HF = \frac{抵押物价值 \times 抵押率}{借款价值} $$

继续阅读

《纸上谈兵·solidity》第 37 课:DeFi 实战 -- 资金池与利率模型

1、学习目标

  • 理解借贷平台的 资金池机制
  • 掌握 Aave / Compound 等平台的 动态利率模型
  • 编写一个简化的 带利率的借贷池合约
  • 使用 Foundry 编写测试,验证利率随资金利用率变化

2、知识点梳理

  1. 资金池(Lending Pool)
    • 所有存款用户的资产进入一个共享池子
    • 借款人从池子中提取资金
    • 池子内资金利用率决定利率水平
  2. 资金利用率(Utilization Rate, U)
    [ U = \frac{总借款}{总存款} ]
    • U 越高,说明池子资金越紧张,借款利率越高
    • U 越低,说明资金富余,借款利率越低
  3. 利率模型(Interest Rate Model)
    • 基础利率(Base Rate):当利用率接近 0 时的最低借款利率
    • 斜率(Slope):利用率上升时,利率增加的速度
    • 最优利用率(Optimal Utilization):一个转折点,超过该点后利率会陡增,防止资金池被借空
  4. 存款利率(Supply Rate)
    存款利率来自借款利息分配:
    [ 存款利率 = 借款利率 \times \frac{总借款}{总存款} \times (1 - 协议费率) ]

3、资金池合约实现

LendingPoolWithRate.sol

继续阅读

Foundry 实战:智能合约 Event 测试全攻略

在 Solidity 开发中,event 是智能合约与链下系统交互的重要桥梁。在单元测试中验证事件的触发和参数正确性,是保证合约逻辑正确的关键环节。本文将结合 Foundry,全面讲解事件的测试方法,包括严格顺序匹配、顺序忽略,以及解码非 indexed 参数。

继续阅读