巨鲸做空CRV,Aave耗费百万买单?链上借贷协议为什么会产生坏账
11月22日,一巨鲸在Aave抵押USDC借入CRV,卖出后做空。后被社区狙击,从K线上看,CRV当天最高反弹超过80%。可能大家对巨鲸的背景和事情经过已经有所了解,但是链上借贷有抵押品,巨鲸做空CRV为什么会导致Aave出现约170万美元的坏账呢?
Aave的参数设计
在区块链上抵押借贷,能借多少代币、什么时候清算,都是由智能合约中的一系列参数设定好的。
Max LTV:最大贷款价值比,决定借款发生时债务/抵押品价值的最大比例。
Liquidation threshold:清算门槛,是一个清算判定条件,债务/抵押品价值升至这个比例时发生清算。
Liquidation penalty:强平罚款,当清算发生时,以该资产为抵押品需要扣除的罚金比例。
比如,Aave V2中USDC的Max LTV为87%,Liquidation threshold为89%,Liquidation penalty为4.5%,就代表每有1 USDC的抵押品,最高可以借入0.87美元其它代币,当借入的代币升值至0.89美元时发生清算,顺利清算的情况下将被扣除4.5%的罚金。
巨鲸的CRV清算过程
当触发清算条件时,任何人都可以通过调用liquidationCall()偿还部分债务,获得对应的抵押品+清算罚金,清算罚金的存在可以激励大家在市场波动中及时参与清算。
Aave V2规定,每次最高可以清算负债的50%。
比如Bob存入10 ETH借入价值5 ETH的DAI。当触发清算条件时,清算人最多可以一次性偿还借入金额50%。清算人支付2.5 ETH的DAI,获得2.5 ETH +0.125 ETH(罚金为5%)的ETH。
那么为什么巨鲸在Aave中的CRV债务没有被及时清算掉呢?
最主要的原因可能是该巨鲸的头寸过大,市场上并没有足够多的流动性让清算人买入。从下图可以看到,该巨鲸在Aave中存入了5794万USDC,借入了8342万CRV。
而从CoinGecko和区块链浏览器中可以看出,CRV代币的流通量只有6.37亿,巨鲸借出的CRV数量高于所有外部账户持有者。例如,截至11月25日,Aave的合约中只有4212万CRV,持币量第8的Binance 14地址中也只有2021万CRV。
在DEX中,Uniswap V3的相关交易对中流动性最高的ETH/CRV交易对中,流动性共176万美元,只有148万CRV。
因此,市场上并没有足够的流动性供清算人买入,完成清算。
据Blockworks统计,本次Aave上CRV的清算过程在50分钟内通过385笔小型交易完成。
清算过程为价格波动留有一定的冗余空间,比如本次案例中,USDC的清算门槛为89%,加上4.5%的清算罚金,仍有6.5%的波动空间。每一次清算后,剩余的资金会补充到抵押品中,使剩余债务的清算价格上升。但是在清算过程中,CRV的价格继续上涨,最终导致Aave产生坏账。
Aave V2的缺陷
与Compound相比,Aave支持更多的长尾资产,有更高的LTV,让用户资金利用率更高。但在更加高效的同时,也增加了风险。
在清算的判断上,Aave V2只参考了抵押品的清算门槛,而未考虑借用代币的风险。如A用户抵押USDC借入CRV,B用户抵押CRV借入USDC。由于USDC和CRV在清算门槛参数上的区别,A用户可借入87%的CRV,LTV达到89%时清算;B用户仅能借入55%的USDC,且当LTV达到61%时即被清算。理论上两者的风险差别并不大。
Aave也没有对每一种资产的存款和借款数量进行限制,在本次事件中,巨鲸的CRV借款量占的比重过大,影响清算。极端情况下,不对每种资产进行限制可能导致整体的巨大亏损,如Venus中曾经出现过的。
在此之前,Aave社区中已经意识到可能遭到攻击的风险。本次事件后,Aave也会变得更加稳健,可能会降低主流币的清算门槛和最大LTV,禁止某些山寨币作为抵押品。