对于DeFi借贷协议,尤其是采用【超额质押】协议来说,【清算】机制是金融模型的重要环节。
清算的本质,是以低于市场价格的方式出售一部分抵押物,来支付借款人应向资金池归还的本金与利息,从而使得资金池得以持续健康运转。
一旦触发清算,用户将永久性的失去部分质押资产;如果遭遇类似3.12的剧烈行情波动,可能会造成链上拥堵,无法及时清算或面临高额的Gas损失。
Ruler协议是Cover团队推出的DeFi借贷平台,旨在实现【无需清算】且【费率固定】的数字货币借贷业务。
本文将从运行机制和风险分析等方面简要分析Ruler协议。
一、Ruler协议的核心参数
Beosin:BSC链上的gala.games项目遭受攻击事件简析:金色财经报道,根据区块链安全审计公司Beosin旗下Beosin EagleEye 安全风险监控、预警与阻断平台监测显示,BSC链上的gala.games项目遭受攻击,Beosin分析发现由于pNetwork项目的bridge配置错误导致pTokens(GALA) 代币增发,累计增发55,628,400,000枚pTokens(GALA),攻击者已经把部分pTokens(GALA) 兑换成12,976个BNB,攻击者(0x6891A233Bca9E72A078bCB71ba02aD482A44e8C1)累计获利约434万美元。Beosin Trace追踪发现被盗金额还存在攻击者地址中。
第一笔攻击交易:0x4b239b0a92b8375ca293e0fde9386cbe6bbeb2f04bc23e7c80147308b9515c2e
第二笔攻击交易:0x439aa6f526184291a0d3bd3d52fccd459ec3ea0a8c1d5bf001888ef670fe616d[2022/11/4 12:17:00]
Ruler协议是去中心化的借贷协议,其核心要素包括:
慢雾:Harmony Horizon bridge遭攻击简析:据慢雾安全团队消息,Harmony Horizon bridge 遭到黑客攻击。经慢雾 MistTrack 分析,攻击者(0x0d0...D00)获利超 1 亿美元,包括 11 种 ERC20 代币、13,100 ETH、5,000 BNB 以及 640,000 BUSD,在以太坊链攻击者将大部分代币转移到两个新钱包地址,并将代币兑换为 ETH,接着将 ETH 均转回初始地址(0x0d0...D00),目前地址(0x0d0...D00)约 85,837 ETH 暂无转移,同时,攻击者在 BNB 链暂无资金转移操作。慢雾 MistTrack 将持续监控被盗资金的转移。[2022/6/24 1:28:30]
质押代币:用作质押资产的代币(如wBTC)
对手方代币:用户借出的代币(例如DAI)
Grim Finance 被黑简析:攻击者通过闪电贷借出 WFTM 与 BTC 代币:据慢雾区情报,2021 年 12 月 19 日,Fantom 链上 Grim Finance 项目遭受攻击。慢雾安全团队进行分析后以简讯的形式分享给大家。
1. 攻击者通过闪电贷借出 WFTM 与 BTC 代币,并在 SpiritSwap 中添加流动性获得 SPIRIT-LP 流动性凭证。
2. 随后攻击者通过 Grim Finance 的 GrimBoostVault 合约中的 depositFor 函数进行流动性抵押操作,而 depositFor 允许用户指定转入的 token 并通过 safeTransferFrom 将用户指定的代币转入 GrimBoostVault 中,depositFor 会根据用户转账前后本合约与策略池预期接收代币(预期接收 want 代币,本次攻击中应为 SPIRIT-LP)的差值为用户铸造抵押凭证。
3. 但由于 depositFor 函数并未检查用户指定转入的 token 的合法性,攻击者在调用 depositFor 函数时传入了由攻击者恶意创建的代币合约地址。当 GrimBoostVault 通过 safeTransferFrom 函数调用恶意合约的 transferFrom 函数时,恶意合约再次重入调用了 depositFor 函数。攻击者进行了多次重入并在最后一次转入真正的 SPIRIT-LP 流动性凭证进行抵押,此操作确保了在重入前后 GrimBoostVault 预期接收代币的差值存在。随后 depositFor 函数根据此差值计算并为攻击者铸造对应的抵押凭证。
4. 由于攻击者对 GrimBoostVault 合约重入了多次,因此 GrimBoostVault 合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在 GrimBoostVault 合约中取出了远多于之前抵押的 SPIRIT-LP 流动性凭证。随后攻击者使用此 SPIRIT-LP 流动性凭证移除流动性获得 WFTM 与 BTC 代币并归还闪电贷完成获利。
此次攻击是由于 GrimBoostVault 合约的 depositFor 函数未对用户传入的 token 的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对 depositFor 进行重入获得远多于预期的抵押凭证。慢雾安全团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。[2021/12/19 7:49:04]
到期日:用户必须偿还借款的时间(例如12/31/2021)
慢雾:BSC项目Value DeFi vSwap 模块被黑简析:据慢雾区情报,币安智能链项目 Value DeFi 的 vSwap 模块被黑,慢雾安全团队第一时间介入分析,并将结果以简讯的形式分享,供大家参考:
1. 攻击者首先使用 0.05 枚 WBNB 通过 vSwap 合约兑换出 vBSWAP 代币;
2. 攻击者在兑换的同时也进行闪电贷操作,因此 vSwap 合约会将兑换的 vBSWAP 代币与闪电贷借出的 WBNB 转给攻击者;
3. 而在完成整个兑换流程并更新池子中代币数量前,会根据池子的 tokenWeight0 参数是否为 50 来选择不同的算法来检查池子中的代币数量是否符合预期;
4. 由于 vSwap 合约的 tokenWeight0 参数设置为 70,因此将会采用第二种算法对池子中的代币数量进行检查;
5. 而漏洞的关键点就在于采用第二种算法进行检查时,可以通过特殊构造的数据来使检查通过;
6. 第二种算法是通过调用 formula 合约的 ensureConstantValue 函数并传入池子中缓存的代币数量与实时的代币数量进行检查的;
7. 在通过对此算法进行具体分析调试后我们可以发现,在使用 WBNB 兑换最小单位(即 0.000000000000000001) vBSWAP 时,池子中缓存的 WBNB 值与实时的值之间允许有一个巨大的波动范围,在此范围内此算法检查都将通过;
8. 因此攻击者可以转入 WBNB 进行最小单位的 vBSWAP 代币兑换的同时,将池子中的大量 WBNB 代币通过闪电贷的方式借出,由于算法问题,在不归还闪电贷的情况下仍可以通过 vSwap 的检查;
9. 攻击者只需要在所有的 vSwap 池子中,不断的重复此过程,即可将池子中的流动性盗走完成获利。详情见原文链接。[2021/5/8 21:37:37]
铸币比率:即质押资产与对手方代币的比率。
慢雾:Spartan Protocol被黑简析:据慢雾区情报,币安智能链项目 Spartan Protocol 被黑,损失金额约 3000 万美元,慢雾安全团队第一时间介入分析,并以简讯的形式分享给大家参考:
1. 攻击者通过闪电贷先从 PancakeSwap 中借出 WBNB;
2. 在 WBNB-SPT1 的池子中,先使用借来的一部分 WBNB 不断的通过 swap 兑换成 SPT1,导致兑换池中产生巨大滑点;
3. 攻击者将持有的 WBNB 与 SPT1 向 WBNB-SPT1 池子添加流动性获得 LP 凭证,但是在添加流动性的时候存在一个滑点修正机制,在添加流动性时将对池的滑点进行修正,但没有限制最高可修正的滑点大小,此时添加流动性,由于滑点修正机制,获得的 LP 数量并不是一个正常的值;
4. 随后继续进行 swap 操作将 WBNB 兑换成 SPT1,此时池子中的 WBNB 增多 SPT1 减少;
5. swap 之后攻击者将持有的 WBNB 和 SPT1 都转移给 WBNB-SPT1 池子,然后进行移除流动性操作;
6. 在移除流动性时会通过池子中实时的代币数量来计算用户的 LP 可获得多少对应的代币,由于步骤 5,此时会获得比添加流动性时更多的代币;
7. 在移除流动性之后会更新池子中的 baseAmount 与 tokenAmount,由于移除流动性时没有和添加流动性一样存在滑点修正机制,移除流动性后两种代币的数量和合约记录的代币数量会存在一定的差值;
8. 因此在与实际有差值的情况下还能再次添加流动性获得 LP,此后攻击者只要再次移除流动性就能再次获得对应的两种代币;
9. 之后攻击者只需再将 SPT1 代币兑换成 WBNB,最后即可获得更多的 WBNB。详情见原文链接。[2021/5/2 21:17:59]
Ruler协议中,借款人每进行一次质押操作,都会铸造2种对应的代币rTokens,即
?Ruler资产代币(rcToken),承载着到期日之后,收取还款的权利;和根据质押代币的类型,rTokens和质押代币之间存在一个铸造比率。例如,存入1个wBTC作为抵押品,可能会铸造10,000个rTokens(假设wBTC的市场价值为30,000美元,此时的质押率为300%,铸币比率为10,000)。借款人可以将rcTokens兑换为对手方代币。
Ruler还款代币(rrToken),承载着到期日之前,偿还贷款并取回抵押代币的义务。
每个rrToken都有资格通过偿还1个对手方代币,来获得一部分抵押品。如果借款人不能按时还款,将被视为违约,质押资产将被罚没。
二、借贷流程 与 借贷利率
因此,一个完整的Ruler借贷流程如下:
借款人有1个wBTC(价值30,000美元),想要借出DAI。假设抵押比率为300%,铸币比例为10,000,
那么借款人存入1wBTC, 可以铸币10,000 枚rcTokens和rrTokens。借款人通过DEX池,出售rcTokens换取对手方代币DAI, 并持有rrtokens。
到期日前,借款人将10000 DAI和10,000 rrTokens存入合约,并收回1 wBTC质押资产。
借款利率
借款利率,是由借款人出售rcTokens时的价格来决定的。以对手方代币和rcTokens出售价格之间的差额为基础,结合到期日计算出的年化,就是实际利率。
例如:Alice将1个wBTC存入Ruler协议,获得10,000 rrTokens和10,000 rcTokens。然后,Alice以9500DAI的价格,将10,000 rcTokens 卖给Bob。
到期日之前,Alice将 10,000 DAI和10,000 rrTokens存入Ruler合约,取回1个wBTC。
到期日之后,Bob将10,000 rcTokens存入Ruler合约,取回10,000DAI。如果ALice没有按时还款,那么Bob将获取Alice的质押资产wBTC。
在上面的例子中,Alice支付了500 DAI作为借款利息,Bob因为提供贷款,获得了500 DAI的利息。
在此期间,无论质押资产wBTC的价格如何变化,只要按时还款,Alice将不会面临清算的风险。
重要的是,Alice的借贷成本在卖出rcTokens的时候,就已经得到确定。这解决了传统DeFi借贷中,借贷利率并不确定的问题。
如果质押资产wBTC的市场价格急剧下跌,可能会导致借款人按期还款的意愿降低。
例如,Alice存入1个wBTC,铸造了10,000 rrTokens和10,000 rcTokens,并已将10,000 rcTokens卖出得到9500美元。此时,假如wBTC价格降低为9000美元,Alice可能会故意拒绝还款,导致wBTC被罚没。但是此时Alice依旧获利500美元(9500-9000)。
假如Alice只还款40%,即偿还 4,000 rrTokens 和 4,000DAI,这意味着违约率为60%。那么Ruler协议将持有0.6个wBTC和4,000个DAI。与之对应的每个rcToken,将有资格获取(0.6 wBTC+4000 DAI)/10000), 也就是说,买入10000 rcTokens的Bob,可以获取 0.6个wBTC和4,000个DAI。
三、总结
Ruler协议的【无需清算】的借贷模式,一定程度上更有利于借款人,将质押资产价值下降的风险,转移到了购买rcTokens的用户身上。
这种模式,本质上和ForTube协议的初代产品 ForTube Bond类似,更像是一种添加了DEX和流动性池的P2P借贷撮合平台。
对于Ruler协议来说,如果流动性池的深度不够或者市场的波动性超出预期,很可能会对整个平台造成风险。但是鉴于Cover团队本身是做DeFi的保险业务,对应的风控措施应该很快会得以实施。
附录:关于清算机制的几个概念
为了深入理解清算机制,我们要预先理解【最大借存比】,【清算阈值】和【健康指数】的概念。
最大借存比:即LTV(Loan to Value)。是指用户最大借款额和特定质押资产的【价值比例】,用于衡量该质押资产的最大借款能力。
举例:对于ETH资产来说,如果用户存入价值10000美元的ETH,且ETH的最大借存比为90%,那么用户以ETH为质押资产,最多可以借出价值9000美元(10000X0.9)的其他资产。
清算阈值LT:即Liquidation Threshold。是指某种资产被定义为【抵押不足】时,用户的借款总额与质押资产的价值比例。低于这个比例,意味着用户的借款额度超过了系统设定的最大借款能力,因此用户的质押资产将被冻结并拍卖,用以缓解抵押不足而造成的系统性风险。
例如,80%的清算阈值意味着,如果借出资产的价值超过质押资产价值的80%,则贷款抵押不足,将会被清算。
健康指数HF:即Health Factor的缩写。健康指数,是总质押资产和总借款的函数,用于判断贷款是否【抵押不足】。这个数值用于衡量用户总体债务健康程度,数值越高,被清算的可能性越低,资金的安全状态越高。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。