W5-2 Compound协议
W5-2 Compound协议
业务模型
超额抵押贷款
- 由抵押率控制,不同资产有不同的抵押率,最⾼ 82%,最低 0%
- ETH 抵押率 82%,USDC 抵押率 80%,USDT 抵押率 0%
- 需⽤户主动选择哪些资产作为抵押品
- ⽤户的可借额度由其所有抵押品汇总
- 抵押品价值读取⾃价格预⾔机
- 贷款资产价值超过抵押资产的抵押率时(即可借额度),则可被清算
cToken 存款凭证
- ⽤户存款后会得到 cToken,作为存款凭证,也称为⽣息代币
- 每种标的资产 Token 对应⼀种 cToken,如:ETH-cETH 、DAI-cDAI
- Token - cToken 的兑换率:
exchangeRate = (totalCash + totalBorrows - totalReserves) / totalSupply
- totalCash,池子剩余资金总量
- totalBorrows,已经借出去的总量,包括利息
- totalReserves,储备金
- totalSupply,cToken的总供应量
- ⼀般情况下,兑换率会随着时间不断增⻓
- 还款时,归还 cToken,返回 Token,包括本⾦+利息, cToken 被销毁
利率模型
供求关系
- 根据单个资产的供求关系,实现有效的利率均衡
- ⽤资产利⽤率来衡量供求关系:
utilizationRate = borrows / (cash + borrows - reserves)
- ⽬前主要有两种利率模型
- 直线型
- 拐点型
直线利率模型
- 借款利率曲线为⼀条直线
- 借款利率:
y(borrowRate) = k * x + baseRatePerYear
- k,直线的斜率
- x,资金利用率
- baseRatePerYear,利率起点
- 存款利率:
supplyRate = x * borrowRate * (1 - reserveFactor)
- reserveFactor,储备金系数
拐点利率模型
- 借款利率曲线为两段直线
- 第⼀段的借款利率:
- y1 = k1 * x + baseRatePerYear
- 第⼆段的借款利率:
- y2 = k2 * (x - p) + (k1 * p + baseRatePerYear)
- p,拐点的值
- y2 = k2 * (x - p) + (k1 * p + baseRatePerYear)
- 存款利率:
- supplyRate = x * borrowRate * (1 - reserveFactor)
利率机制
区块利率
- 随时间推移,利率会随供求关系变化⽽调整
- 将年利率转为区块利率来计算
- 通过利率指数( Interest Rate Index)掌握每次利率变化
index(a,n) = index(a,n-1) * (1+borrowRate*blockDelta)
- 也存储每个⽤户最后⼀次计息时的余额和利率指数
代码解析
- WhitePaperInterestRateModel
- BaseJumpRateModelV2
- CToken
- Comptroller
This post is licensed under CC BY 4.0 by the author.