本文档深入分析 DeFi 主要协议的技术实现,包括 Swap(Uniswap V2/V3、Curve、Balancer)、Lending(Compound、Aave)、Vault(Lido、Yearn)等。
DeFi 主要协议分类(能够产生收益的协议):
| 类型 | 代表协议 |
|---|---|
| Swap | Uniswap, Curve, Balancer |
| Lending | Aave, Compound |
| Vault | Lido, Yearn |
Uniswap 本质是自动化做市商(AMM),使用恒定乘积公式确定交易汇率。
核心公式:x * y = k
流动性:
LP = √(amount0 × amount1) - MINIMUM_LIQUIDITYLP = min(amount0 × totalSupply / reserve0, amount1 × totalSupply / reserve1)
MINIMUM_LIQUIDITY的作用:防止早期流动性参与者刻意抬高流动性单价(首次铸币攻击)。
优缺点:
V3 核心改进:集中流动性,提高资金利用率。
Tick 和 TickSpacing:
price = 1.0001^tickx * y = k手续费等级:0.05%、0.30%、1%
| 特性 | V2 | V3 |
|---|---|---|
| 流动性分布 | 均匀分散在 (0, ∞) | 集中在指定区间 |
| 资金利用率 | 较低 | 较高 |
| 价格操纵难度 | 高(需大量资金) | 低(流动性集中) |
| 手续费计算 | 简单直观 | 与区间位置相关 |
V2 操纵价格 X 倍需要
√X - 1倍的 Token;V3 由于流动性分布不均,操纵成本低得多。
Curve 采用混合 AMM,结合恒定和与恒定乘积:
| 曲线 | 特性 |
|---|---|
| 恒定积(紫色) | 任何价格都有流动性,但滑点高 |
| 恒定和(红色) | 低滑点,但容易被抽干流动性 |
| Curve(蓝色) | 介于两者之间,在宽范围内低滑点 |
Balancer 的可定制性更强:
| 特性 | Uniswap | Balancer |
|---|---|---|
| 资产数量 | 2 | 最多 8 |
| 资产占比 | 50/50 | 可配置任意比例 |
| 手续费率 | 固定 0.3% | 可设置 |
| 管理权限 | 无 | 有管理员权限 |
引入协议金库和资产管理器,降低 Gas 消耗。
cToken 模型:用户存入 Token 获得 cToken,cToken:Token 的兑换率持续增长。
exchangeRate = totalToken / totalShare
// exchangeRate 持续增加 → 用户赎回时获得更多 Token利率模型:带拐点的可变利率模型
CompV3 新特性:
COMP 治理:
aToken 模型:与底层资产 1:1 锚定。
function balanceOf(address user) public view returns (uint256) {
return super.balanceOf(user).rayMul(
_pool.getReserveNormalizedIncome(_underlyingAsset)
);
}内部通过 记账数量 × 兑换比例 计算实际余额。
借款模式:
Aave V3 新特性:
| 特性 | 说明 |
|---|---|
| E-Mode | 相同类型资产分组,提高抵押系数至 98% |
| 隔离模式 | 新资产隔离使用,限制债务上限 |
| 风险管理 | 存款/借款设置限额 |
流动性质押解决方案(LST):存入 ETH,1:1 获得 stETH。
graph LR
A["用户存入 ETH"] --> B["质押池 Vault"]
B --> C["Operator Node<br/>按 32 ETH 分配"]
C --> D["ETH POS 质押"]
E["Oracle 更新"] --> B
用户存入资产获取 yvToken,项目方通过众多策略合约投资其他平台。
| 类型 | 特点 | 风险 |
|---|---|---|
| Swap | 最广泛,无流动性问题 | 无常损失、滑点 |
| Lending | 收益稳定,相对安全 | 资金利用率不高,流动性枯竭 |
| Vault | 收益更高,降低操作门槛 | 完全托管,信任项目方 |
graph LR
subgraph "收益与风险"
A["Lending<br/>低收益 低风险"] --> B["Vault<br/>中收益 中风险"]
B --> C["Swap LP<br/>高收益 高风险"]
end