1. 首页
  2. 链圈头条

从EOS用户视角看以太坊DeFi之Compound

如何分析Compound

  • 本系列文章将默认你是一个EOS社区成熟用户,理解EOS基本逻辑和使用

  • 同时默认你是一个DeFi小白,完全不懂DeFi概念,从0开始学习DeFi知识

  • 系列文章将会对当前的以太坊主流DeFi项目进行评述,同时对比EOS生态的DeFi项目(如果有的话)

  • 此系列文章不构成任何投资建议


滴水成河,聚沙成塔


lazy - 从EOS用户视角看以太坊DeFi之Compound

1. 一句话理解Compound

Compound是一个区块链银行,它通过借贷双方需求来依据算法自动调节存款和贷款利率的借贷工具,它能够按一个区块(约15秒)为一次计息,能够避免P2P借款撮合下匹配难、体验差、门槛高、市场流动性不足等各类问题,减少借贷双方的摩擦成本,同时让用户数字资产真正展现其应有的时间价值。

Compound本身是复合的意思,Compound项目取名为Compound有一个原因就是它们借用了Compound Interest(复利)这层意思。有传言说,爱因斯坦曾经说过,复利是世界的第八大奇迹。本文主要包括以下几个方面对Compound协议进行总结:Compound专业术语、Compound主要内容、Compound核心逻辑、预言机、系统治理、清算逻辑、团队盈利等几个方面内容,主要来自官方白皮书、FAQ、Discord内的Resource等官方公告或支持的信息。

2. 专业术语解释

底层资产(Underlying Asset):用户提供到Compound的资产如ETH/BAT/DAI/ZRX等为底层资产。

cToken:用户抵押底层资产后,系统会根据一个兑换率来给用户返还一定数量的cToken,如用户存入ETH则给cETH。而底层资产的提取也需要用到cToken去兑换。

兑换率(Exchange Rate):cToken和底层资产的兑换比例,当没有任何人存入资产生息时,会有一个initial Exchange rate,兑换率会随着时间的推移会不断增加。对于token a,其计算公式如下:

lazy - 从EOS用户视角看以太坊DeFi之Compound
  • underlyingBalance是资产a在Compound中的数量,totalBorrowBalance_a是Compound中借出资产a的数量,reseves_a是a当前的准备金。

使用率(Utilization Rate):资产a的使用率如下:

lazy - 从EOS用户视角看以太坊DeFi之Compound

即借**项占a在协议内剩余量加上借出量之和的占比。supply+reserve-borrow = cash。

存款利率(Supply Rate): 存款利率的计算需先得到借款利率,和借款利率一样,都是每个区块计算一次,同一个区块的房贷人对于相同的资产获得相同的放贷利率。计算如下:

lazy - 从EOS用户视角看以太坊DeFi之Compound

借款利率(Borrow Rate):借款利率收到使用率影响,根据白皮书,借款利率的决定由类似下式的公式决定(针对不同的token参数数值不同,具体数值应该在cToken合约的InterestrateModel内可以查到,我看了Github里面没找到。)

lazy - 从EOS用户视角看以太坊DeFi之Compound

抵押率/抵押因子(Collateral Factor):针对不同的资产,Compound内有着不同的抵押因子,抵押因子范围是0-1,代表用户抵押的资产价值对应可得到的借款的比率,为零时表示该类资产不能作为抵押品去借贷其他资产。小市值资产由低抵押因子,相对与大市值资产,同样的抵押资产,能借的资金更少。最新抵押因子如下:

      抵押因子        
类型 cETH cSAI cDAI cUSDC cBAT cREP cZRX cWBTC USDT
抵押因子 0.75 0.35 0.75 0.75 0.6 0.4 0.6 0.0 0.0

准备金(Reverse): Compound协议利息收入的一部分将会被留存成为该币种的准备金,者个留存部分由准备金因子Reserve Factor(留存准备金决定),准备金因子在0~1之间,根据官方FQA,目前除了cSAI是100%,其他都是10%。而准备金的累计公式如下:

lazy - 从EOS用户视角看以太坊DeFi之Compound

清算(Liquidation):Compound中的清算是指当用户抵押资产价值小于借款价值时,清算人可以代替被清算人还款一部分,目前可以最多一次帮还50%,同时清算人可以得到被清算人抵押物(cToken)的一定百分比奖励。

关闭因子(Close Factor):在清算过程中,清算人可以帮助贷款人还掉的债务最大比例,在0~1之间,目前是50%。这个因子可以被连续调用,直到用户借款订单处于安全状态。

清算激励(Liquidation Incentive):目前清算人得到有8%奖励(2020年3月17号从5%升级到8%)。

2. 主要内容

Compound白皮书指出,对于当下区块链资产存在两个主要问题:

  1. 借贷机制极为有限,导致资产错误定价,例如空气币不能借到,没法对其做空,导致价格虚高。

  2. 因为存储成本和波动风险的存在,无论是存在交易所还是自己钱包,都无一个自然利率来消除这个成本。

Compound协议是建立在以太坊上,存款和借款供需双方关系通过算法来计算利率的资金池模式。存款者直接向资金池存款,获取浮动的利息收益,而无需和对手方协商到期日、利息率抵押物等。

lazy - 从EOS用户视角看以太坊DeFi之Compound

图1    Compound的核心架构

3. Compound核心逻辑

  • 放贷人(Suppliers)/借款人(Borrowers,当需要借款时,选择存入的资产为可抵押的)存入资产到Compound 智能合约的货币市场(Money Market)。放贷人/借款人存入的资产为底层资产(underlying asset)。Compound目前支持USDC/REP/SAI/WBTC/BAT/ZRX/USDT。

  • 智能合约按照兑换率发放对应底层资产的Compound代币cTokens到用户账户。这里的cTokens可以为cDAI/cETH/cUSDC/cREP/cSAI/cWBTC/cBAT/cZRX/cUSDT。计算公式为cToken数额 = 存入底层资产的数额/兑换率。

  • 放贷人存入的资产,可享受放贷利息,也可以随时提取。

  • 借款人存入cTokens作为抵押资产后,可以从Compound借款,借款上限为抵押资产价值*抵押因子【借款上限=SUM(抵押因子*cToken_i 余额*兑换率*价格),SUM表示对所有抵押资产从1到N的求和,这里抵押因子提到外面也是一样。】,用户借出的是底层资产。借款人可以先作为放贷人存入抵押资产,然后选择将资产作为抵押物,这样,以后,借款人实际上可以享受自己提供抵押物进入资金池的利息,可以一定程度减轻贷款的利息支付。借款利率由Compound智能合约根据市场对资金的供需关系实时确定,同一个区块内,所有借款人的借款利率相同。

  • Compound 按照区块数为单位累积借款人利息(Accrue Interest)。

  • Compound对于每一笔借款都会从其利息中的10%计提准备金(Reserves)

  • 借款人可以随时偿还贷款。

  • 如果借款人抵押资产价值【抵押资产价值=SUM(抵押因子*cToken_i 余额*兑换率*价格),SUM表示对所有抵押资产从1到N的求和,再将其转换为ETH。这里抵押资产价值要乘抵押因子】,低于借款价值【借款价值=SUM(借款数额*价格),转换为ETH】,这个比例被称为健康度,当健康度小于1时,则发生清算。清算人得到有8%奖励(2020年3月17号从5%升级到8%)加成的cToken。清算人地址不能是对应借款地址,即自己不能为自己清算。

4. 价格预言机Price Oracle

根据官方在Discord上的回复,2018年8月于Medium发表的FAQ中Oracle内容并未发生变更,一下内容将根据FAQ进行整理。

BAT,REP,ZRX和WBTC的喂价将来自于Coinbase Pro, Bittrex, Poloniex和Binance的中位数。同时Compound协议中为了系统安全,设置了每小时最大10%价格变化的限定,除非能得到人工的批准,否则每个小时只能最大变化10%。DAI,SAI和USDC价格来自Maker的ETH/USD价格喂价。

5. 系统治理

当前Compound协议治理已经通过部署在以太坊上的COMP代币进行治理,从官网可以看到,当前参与治理投票的地址达240个,逐步实现治理链上化,相对于MKR少数地址控制了大多数的投票权重的情况,COMP代币治理的投票权重相对分散,第一名也仅占3.45%的权重。COMP代币市值超越最大的MakerDAO代币MKR市值近段时间也是抢足了风头。

根据白皮书,当前管理员可以有以下权限:

  • 上架新的cToken市场

  • 对每个代币市场的利率模型进行升级

  • 更新Oracle地址

  • 可以提取cToken准备金

  • 选择新的管理员、或者一个DAO组织来管理社区

随着代币的发放,后面这些管理权限将慢慢完全交给社区。

6. Compound清算逻辑

整个Compound协议有几类参与者,包括放贷人、借款人、清算者、社区成员、开发者。

如果借款人抵押资产价值【抵押资产价值=SUM(cToken_i 余额*兑换率*价格),SUM表示对所有抵押资产从1到N的求和,再将其转换为ETH】,低于借款价值【借款价值=SUM(借款数额*价格),转换为ETH】,这个比例被称为健康度,当健康度小于1时,则发生清算。

Compound中的清算是指当用户抵押资产价值小于借款价值时,清算人可以代替被清算人还款一部分,目前可以最多一次帮还50%,同时清算人可以得到被清算人抵押物(Compound只允许用cToken进行抵押,因此清算人也是拿到cToken)的一定百分比奖励。为了激励用户参与Compound不良债务清算,2020年3月17日,Compound管理员已将清算奖励从5%提高到8%,并且暗示如果有必要的话会将其提升到15%。

8%是一个什么概念呢?我们来看看由ZenGo(zengo.com)提供的Compound协议在2019年5月~2019年12月期间,清算因子为5%时的数据:

  • 清算人总共参与了10375064美元的市场清算,拿到了518752美元的利润(不含交易费用)。

  • 这期间总共进行了1800次清算事件。

  • 清算事件利润的中位数为6.35美元,平均利润为288美元。

  • 前20位清算获利者拿到了总利润份额的50%。

  • 最大利润获利者这期间拿到了120066美元利润。

  • 几乎绝大部分清算都在一小时内完成,大部分都是程序化清算。

6.1 清算程序

首先要找到抵押不足账户,也就是健康度小于1的账户。如果借款人抵押资产价值【抵押资产价值=SUM(抵押因子*cToken_i 余额*兑换率*价格),SUM表示对所有抵押资产从1到N的求和,再将其转换为ETH】,低于借款价值【借款价值=SUM(借款数额*价格),转换为ETH】,这个比例被称为健康度,当健康度小于1时,则发生清算。

几个情况会导致清算的发生:

  • 接入资金的利息高于抵押品的利息,随着时间的推移不断累计,导致借入债务增加,导致达到清算线。

  • 抵押物价格极速下跌。

    • 借出资产价格极速上升。

虽然,Compound协议限制了资产价格在1小时内波动不超过10%,给足用户补抵押物或者还掉部分借款的时间,但是借款仍有可能存在清算的可能。

Compound协议提供了API来查看清算信息,通过调用合约进行过滤,也可以通过借款健康度查看。

6.2 调用合约进行清算

一旦找到了可清算的借款,则可以调用liquidateBorrow()合约进行清算,例如(0xb7ba825294f757f8b8b6303b2aef542bcaebc9cc0217ddfaf822200a00594ed9),需要以下参数:

  • 被清算账户地址

  • 清算人代偿付金额

  • compound内关于该笔借款抵押物的合约地址(cToken),这些cToken智能合约地址可在官方FAQ找到。

下面提供ZenGo研究文章内给的实例,让读者进一步了解清算过程,首先通过工具网站找到当前可以被清算的借款,

lazy - 从EOS用户视角看以太坊DeFi之Compound

图2    查看账户健康度

当Health<1时,即可被清算,选择第三条进行清算,点开Inspect查看:

lazy - 从EOS用户视角看以太坊DeFi之Compound

图3    健康度小于1的账户细节

可以看到该用户抵押了2.46个cDAI,借出了0.00684个ETH,

之后选择帮忙偿还ETH,并拿到cDAI作为奖励,将偿还额度拉到最大,即50%。

偿还这一单偿还肯定时亏钱的,因为还要支付Gas费用。正常市面上不亏钱的单子会很快就被消灭,轮不到用户手动清算。

根据Compound官方推荐的由欧洲着名量化机构对Compound市场风险评估的模拟得知,清算人如果选择得到奖励后立即卖出,则会面临交易滑点,而滑点成本在波动大的时候会占到清算成本(合约调用Gas费/转账Gas费/滑点成本)的30%,即使不在大幅波动,也是要占10%的成本。

同时认为在5%的清算激励时,当一天内波动率小于35%时,系统不存在风险;当波动率大于45%时,可能部分放贷人将无法拿回自己的资产(即意味着协议可能存在亏空)。可能是因为受到之前312大跌经历,现在这个激励已经提升到8%。

7. Compound团队盈利模式

Compound团队实际上并未从Compound协议中盈利,即使是保留利息的10%作为留存准备金,虽然这部分属于团队管理,但这部分也没有声明属于团队,从目前来看,其已发行COMP代币,如果后期依靠治理代币COMP的发型进行盈利的话,将会和MakerDao盈利模式类似。

8. 风险与不足

Compound用户应当场份认识到由去中心化借贷带来的风险。包括:

  • 智能合约安全性风险

  • 管理/协议风险(包括管理员密钥泄露)

  • 流动性风险/挤兑风险

  • 信用风险

Compound智能合约已经得到OpenZeppelin、Trail of Bits、Certora等知名合约安全审计公司审计,同时Compound还为严重漏洞提供了25万美元的悬赏(赏金为被盗资金的1%或者是冻结资金的10%),目前还没由独立安全研究人员获得过赏金。目前Compound的大量资金存放和长时间运行侧面证明了合约的安全性。

管理/协议风险,OpenZeppelin在他们的审计报告中,有提到,恶意管理员或者被窃取私钥的管理员手中拥有冻结市场、审查交易甚至从系统中窃取安全资产的能力。类似地,控制资产价格预言机即便不能窃取安全系统全部资产,也能窃取大部分,因为所有实时市场的管理员都是同一个外部账户。当然Compound会激励维护管理密钥安全,并且从目前来看,他们也有足够的资金去购买最好的托管服务。

关于流动性风险(挤兑风险),由Bogdan Gheorghe等人写的(Illiquidity and Bank Run Risk in Defi)中有写到,Compound的资金提供方可以在任意时刻将投入的本金和利息提现——即Compound将为存款方留出足够多的流动性,让他们可以随时使用他们的资金。

然而,正如贷款方受制于流动性池子的规模一样,资金方也会受限。每笔借款都会缩小这个资金池的规模,也就是用户可提现收缩。一旦超出流动性上限的提现操作及贷款操作都会失败,本身而言这不是无法兑付,只是会出现暂时无法兑付,需要等待用户还款后,资金池内才有足够资金付给提现人。

虽然Compound设置了根据借贷双方需求来调节利率以保证流动性,但在去中心化市场上,当存款方对市场稳定性感到焦虑时,会试图快速从平台提现,但多次的失败会引发严重的市场对于协议系统的不信任,导致更多的提现操作,最后资金池被挤兑,协议反馈机制失效。

流动性枯竭在Compound内也有发生过,实际提现失败的情况再早期也发生过,但实际上并未产生很大影响,后面提高存款利率之后立即被解决了。目前来讲Compound流动性问题和挤兑的可能性非常低。

9. 给EOS启示

EOS上是没有借贷DApp的,一个原因可能跟EOS上市值大的资产少有关,还有一个原因和USDT在EOS上发行没有那么给力有关。现在EOS上的借贷市场是一片空白,从COMP目前市值来看,也许对于新团队而言是一个好的切入点,可以考虑结合投票挖矿的无风险收益加成,但是抵押赎回的期限导致一个流动性问题需要优雅地得到处理。

而EOS用户,特别是代码能力强的人,即使没有本金,也可以考虑参与以太坊DeFi的清算,真的是一门好生意。因为现在有了Aave闪电贷,每笔只需付出0.09%资金成本,就能拿到5%~8%的清算奖励,算是无本万利、空手套白狼。


附录 实用链接


Compound运营在Discord上对各类信息的整理,是我见过最好的一个DeFi,一个项目的成功跟运营真的有很大关系。很多链接都很长,大家可以直接点文字获得链接。

WhitePape:https://compound.finance/documents/Compound.Whitepaper.pdf

FAQ:https://medium.com/compound-finance/faq-1a2636713b69

Github:https://github.com/compound-finance/compound-protocol

Market Risk Assessment:https://gauntlet.network/reports/CompoundMarketRiskAssessment.pdf

Compound协议规范:https://github.com/compound-finance/compound-protocol/blob/master/docs/CompoundProtocol.pdf

Zengo— Understanding Compound Liquidator:
https://zengo.com/defi-research-understanding-compound-liquidators/

官方Discord:https://compound.finance/discord

Liquidation Dashboard:https://chiragkhatri.me/compound-liquidator/

免责申明:本站所发布文章仅代表个人观点,与链圈网官方立场无关,版权归原作者所有。

联系我们

微信:lianquancn    或扫码

邮件:mt@lianquan.cn

工作时间:周一至周五,9:30-18:30,节假日休息

QR code