Post

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,储备金系数

image1

拐点利率模型

  • 借款利率曲线为两段直线
  • 第⼀段的借款利率:
    • y1 = k1 * x + baseRatePerYear
  • 第⼆段的借款利率:
    • y2 = k2 * (x - p) + (k1 * p + baseRatePerYear)
      • p,拐点的值
  • 存款利率:
    • 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.