Defi安全之借贷杠杆

  • SharkTeam
  • 更新于 2022-08-23 17:42
  • 阅读 2394

这一课我们聊聊【Defi借贷杠杆】。

熊市就像一块试金石,Defi的各核心业态,哪些能够穿越周期,更好的发展?在周期中又暴露了哪些问题,值得后来者借鉴?SharkTeam合约安全系列课程之【DeFi安全】和您一起讨论和深入。这一课我们聊聊【Defi借贷杠杆】。

image.png

一、什么是借贷杠杆?

如何在借贷市场实现杠杆交易呢?我们Compoun借贷市场为例,将A资产抵押到Compound再借出B资产,之后再到DEX平台(如Uniswap)用B资产兑换成A资产,又重复投入Compound,如此反复操作,最终实现杠杆交易。 这种循环借贷与兑换的方式,对用户来说,是非常繁琐的,而且中间多次操作会消耗较多手续费。而且,在循环借贷的过程中,若借款超额则会触发清算机制。因此,直接提供杠杆交易服务的产品很受欢迎,因为杠杆交易服务使用闪电贷技术,只需要一次兑换,即不会消耗很多手续费;而且只要杠杆率是安全地,就不会在添加杠杆的过程中触发清算。 从需求角度角度,用户使用杠杆交易的目的是获取更多收益,包括: 1.利用借贷协议存款与借款APY(或APR)差值来扩大存款收益。比如单币循环贷:假设BTC存款收益APY为2%,借款费用APY为-15%,BTC抵押因子为80%,可以抵押BTC借出BTC,然后存入再借出,循环操作,实现杠杆,可以增加2~3倍的收益。 2.想要做多或做空某种资产。比如:选定ETH/USDT交易对,做多ETH就需要借入USDT并兑换成ETH;做空ETH则借入ETH来兑换USDT。 当然,用户想要开仓,就需要先抵押资产作为保证金,这样才可借入资产。该逻辑其实和Compound的借贷逻辑一样,不同点在于,Compound属于超额抵押借贷,比如对于最大抵押率为75%的ETH,存入价值100U的ETH,最多只可借出75U的其他类型的代币;但杠杆交易则可以借出多倍的资产,比如开3倍杠杆做多ETH时,100U的ETH作为抵押代币,可以借出300U的ETH来开仓,实际相当于借出了200U,这200U是从哪儿借来的呢? 首先我们要弄清楚3倍杠杆做多ETH是怎么做到的?实现过程如下: 1.将100U的ETH存入到CompoundETH资金池中; 2.通过闪电贷从闪电贷平台(如:Uniswap、Aave、dYdX等)借贷200U的ETH; 3.将借贷的200U的ETH存入到CompoundETH资金池中,然后抵押物变成了300U的ETH; 4.凭借300U的ETH抵押物,从Compound中借出200U的USDT; 5.将200U的USDT通过DEX兑换成200U的ETH用于闪电贷还款(忽略闪电贷和DEX兑换的手续费)

通过以上步骤,最终以3倍杠杆做多100U的ETH。对于CompoundETH资金池,实际上存入了300U的ETH,借出了200U的USDT,抵押借贷率=200U/300U=66.67%<75% 从整个过程来看,以100U的ETH开3倍杠杆,200U的USDT从Compound的USDT资金池中借出,然后兑换成ETH后再与100U再次存入到CompoundETH资金池中。 对于用户来说,其实际支付了100U,当ETH价格上涨时,实际可以获得3倍的收益;当ETH价格下跌时,同样会有3倍的损失。相比于原来的只存入100U来说,被清算的风险也更高,本质上还是超额抵押贷,抵押借贷率为66.67%。换言之,用户以更高的清算风险换来了3倍的收益/损失。

对于CompoundETH资金池来说,流入资金池的ETH分为两部分: 用户直接的存款,即100U的ETH,来自于用户 杠杆借贷的资产,即200U的ETH,来自于其他资金池(USDT资金池) 除了用户直接存入100U的ETH外,添加杠杆需要的额外的代币(200U的ETH)实际上来自于其他资金池(如:如这里的USDT资金池),即杠杆实现了借贷资金池之间的资金流转,同时借贷资金池资金总价值不变,还提高借贷资金池(如这里的USDT资金池)的资金使用率。

资金使用率utilizationRate计算如下:

image.png

其中,borrows表示借款总额,cash表示资金池余额,reserves表示储备金。此外,ETH资金池中资金增加,而USDT资金池资金减少。如果资金池资金一直减少下去而又没有用户存款的话,资金池可能出现资金不足甚至资金枯竭的情况。 在多空平衡的情况下,资金池的流动性也会保持平衡。但是,如果出现极端情况,比如,做多远超于做空的时候,就要考虑是否会出现某一资金池枯竭的风险。比如上面做多ETH,抵押了ETH,借出了USDT,兑换回ETH,随着做多杠杆越来越大,ETH资金池中的资金会越来越多,但USDT资金池中的资金则越来越少,资金使用率会越来越高,那么USDT的资金就会面临资金不足甚至枯竭的风险。 为了降低甚至避免这种风险,借贷协议通过利率模型调高存款利率来鼓励用户存款。如Compound利率模型如下,当资金使用率增加到一定程度,如80%,借款利率快速增长,进而激励用户存款到资金池中。

image.png

二、使用杠杆提高存款收益

1、循环贷模式

以Flux中的DAI资金池为例:

image.png DAI存款APR为0.78%,借款APR为-8.29%,抵押率限额为130%。存入1000DAI,最大可借出1000/130%=769.23DAI。以存入1000DAI的保证金为例,循环贷如下: (1)借出769DAI,然后存入资金池,此时: 总存款=1000+769=1769DAI, 总借款=769DAI, 抵押率=1769/769=230.04%, 最大可借出1769/130%-769=591.77DAI, 杠杆率=1.769, 收益APR=(17690.78%+7698.29%)/1000=7.75% (2)借出591DAI,然后存入资金池,此时: 总存款=1769+591=2360DAI, 总借款=769+591=1360DAI, 抵押率=2360/1360=173.53%, 最大可借出2360/130%-1360=455.38DAI, 杠杆率=2.36, 收益APR=(23600.78%+13608.29%)/1000=13.10% (3)借出455DAI,然后存入资金池,此时: 总存款=2360+455=2815DAI, 总借款=1360+455=1815DAI, 抵押率=2815/1815=155.10%, 最大可借出2815/130%-1815=250.38DAI, 杠杆率=2.815 收益APR=(28150.78%+18158.29%)/1000=17.22% (4)借出250DAI,然后存入资金池,此时: 总存款=2815+250=3065DAI, 总借款=1815+250=2065DAI, 抵押率=3065/2065=148.43%, 最大可借出3065/130%-2065=292.69DAI, 杠杆率=3.065 收益APR=(30650.78%+20658.29%)/1000=19.49% 以上过程中,每次都借出后立即存入到资金库中,而且几乎以抵押率限额来借出资产,通过循环借款与存款,利用收益率的差来获得数倍的收益。

循环贷在实际实现的时候可以选择两种模式:

  1. 合约循环贷模式,即按照循环贷的步骤,以合约的方式实现,可以在一笔交易内完成。
  2. 交易循环贷模式,即每次存入和借出都是一笔交易。 比较之下,前者被清算的风险低,清算取决于最终的抵押率,即在中间步骤可以借取最大的资产;而且会消耗较小的Gas费,但会增加部署合约的成本;后者需要发起多笔交易,会消耗更多的Gas费,此外每笔交易成功后都有可能被清算,取决于交易后的抵押率,每次借取的资产不能太大,否则会面临清算的风险;但没有部署合约的成本。 image.png 由于借款和存款的操作不是一笔交易,因此,这种做法风险较高,尤其是在借出的时候,资产价格的波动可能会使得当前的债务被清算。因此,实际借款要远低于最大可借资产数量,而且杠杆率一般在1x~3x之间,无法实现更高的杠杆率。 循环贷提取存入的资金并还款只需要按照相反的顺序,提款-还款-提款-还款……也可以通过闪电贷直接还款,然后提款后还闪电贷和手续费,剩余的为最终收益。 对于单币循环贷,理论上因为存借的都是同一个币种,就算币价发生了大波动,抵押和借贷价值的波动一样,比值会一直固定。这意味着循环借贷可以无视币价上的波动,也不用担心因为币价波动太大导致被清算。 若是循环贷选择交易对中的两种代币,则每一次借款与存款之间都需要一次兑换,需要支付兑换的手续费,这将严重影响最终的收益。另外,由于抵押(即存款)与借贷的币种不同,其币价波动也不一样,相比于单币来说,抵押率更容易超出限额而触发资产清算。

    2、闪电贷模式

    还是以DAI为例,存入1000DAI,使用3倍杠杆,过程如下:

  3. 通过闪电贷借款2000DAI(闪电贷平台:dYdX,Aave,Uniswap),不同平台手续费不同 Uniswap手续费为0.3%,即6DAI Aave手续费为0.09%,即1.8DAI dYdX手续费为2Wei,可以忽略不计
  4. 将本金1000DAI以及闪电贷的2000DAI存入到借贷平台
  5. 以存入的3000DAI为抵押物,借出2000DAI
  6. 还闪电贷的2000DAI借款,同时还要还闪电贷的手续费。

通过以上4个步骤,在一笔交易内实现了3倍杠杆存款,完成后的各项系数如下: 总存款=3000DAI, 总借款=2000DAI, 抵押率=3000/2000=150%, 最大可借出3000/130%-2000=307.69DAI, 杠杆率=3 收益APR=(30000.78%+20008.29%)/1000=18.92% 提取存入的资金并还款步骤如下:

  1. 通过闪电贷借款2000DAI,
  2. 利用闪电贷得到的2000DAI还借贷平台的债务
  3. 提取借贷平台存入的3000DAI以及所有的收益
  4. 使用提取的DAI还闪电贷的2000DAI以及闪电贷的手续费 对比循环贷模式,闪电贷模式有很多优点: 可以实现更大的杠杆率, 实现的步骤简单,且只需要一笔交易即可实现,消耗的Gas较少 清算风险完全取决于杠杆交易后的抵押率;过程中没有任何风险 虽然需要部署合约,但合约实现也相对简单,不需要复杂的步骤,部署合约的费用相对较低

唯一的缺点应该就是在整个过程中需要支付闪电贷的手续费,因此建议优先选择手续费低的闪电贷平台,比如dYdX。因此,基于闪电贷模式的直接的杠杆交易服务非常受用户欢迎。

三、使用杠杆做多/做空

1、杠杆做多

以ETH/USDT为例,假设看涨ETH,想要以3倍杠杆做多ETH,假设当前ETH的价格为2000U,ETH的抵押率为130%,本金为1ETH,以3倍杠杆做多1ETH过程如下(忽略闪电贷的手续费):

  1. 通过闪电贷借入2ETH,价值4000U
  2. 将本金1ETH以及闪电贷的2ETH存入借贷平台的ETH资金池,作为抵押物,价值6000U
  3. 在借贷平台借出4000USDT,此时抵押率为6000/4000=150%>130%
  4. 将4000USDT兑换成2ETH用于闪电贷还款。若通过Uniswap平台的ETH/USDT交易对进行闪电贷,则直接以USDT进行还贷即可,同样需要一次DEX的兑换费用,即手续费。 此时: 总存款为3ETH,价值6000U 总借款为4000USDT,价值4000U 抵押率为6000/4000=150% 当ETH价格上涨时,假设涨至3000U,即上涨1.5倍,此时: 总存款为3ETH,价值9000U 总借款为4000USDT,价值4000U 抵押率为9000/4000=225% 将借贷平台中的存款提取出来,过程如下:
  5. 通过闪电贷借入4000USDT
  6. 将4000USDT用于借贷平台的还款,还款后借贷平台总借款为0
  7. 将存入借贷平台的3ETH提取出来
  8. 通过DEX平台将3ETH兑换成9000USDT
  9. 使用4000USDT还闪电贷,剩余5000USDT,价值5000U。

最初投入1ETH=2000U,使用3倍杠杆后获利3000U;若不使用杠杆,只会获利1000U,即因价格涨了1000U而获利。因此,3倍杠杆使得收益也扩大了3倍。 同理,若价格下跌,3倍杠杆下的损失也将是3倍,甚至还会有被清算的风险,该风险同样是在不使用杠杆情况下的3倍。

2、杠杆做空

杠杆做空就是投资者利用杠杆的方式做空,用户可以利用做空赚取收益的。做空是一种在金融产品下跌过程牟利手段,下跌的差价就是投资者的利润。

以ETH/USDT为例,假设看跌ETH,想要以3倍杠杆做空ETH,假设当前ETH的价格为2000U,USDT的抵押率为130%,本金为1ETH,以3倍杠杆做多1ETH过程如下(忽略闪电贷的手续费):

  1. 通过闪电贷借入6000USDT,价值6000U
  2. 将闪电贷的6000USDT存入借贷平台的USDT资金池,作为抵押物,价值6000U
  3. 在借贷平台借出2ETH,此时抵押率为6000/4000=150%>130%
  4. 将本金1ETH以及借出的2ETH共计3ETH(价值6000U)兑换成6000USDT用于闪电贷还款。若通过Uniswap平台的ETH/USDT交易对进行闪电贷,则直接以ETH进行还贷即可,同样需要一次DEX的兑换费用,即手续费。 此时, 总存款为6000USDT,价值6000U 总借款为2ETH,价值4000U 抵押率为6000/4000=150% 当ETH价格下跌时,假设跌至1000U,即下跌0.5倍,此时, 总存款为6000USDT,价值6000U 总借款为2ETH,价值2000U 抵押率为6000/2000=300% 将借贷平台中的存款提取出来,过程如下:
  5. 通过闪电贷借入2ETH
  6. 将2ETH用于借贷平台的还款,还款后借贷平台总借款为0
  7. 将存入借贷平台的6000USDT提取出来
  8. 通过DEX平台将2000USDT兑换成2ETH
  9. 使用2ETH还闪电贷,剩余4000USDT,价值4000U 最初投入1ETH=2000U,使用3倍杠杆后获利2000U;若不使用杠杆,会损失1000U,即获利-1000U,。因此,3倍杠杆使得收益也扩大了3倍。 同理,若价格上涨,3倍杠杆下的损失也将是3倍,甚至还会有被清算的风险,该风险同样是在不使用杠杆情况下的3倍。

总结:DeFi杠杆在为使用者提供更高的流动性和更少的启动资金的同时,也引入了更多的金融风险,如果使用DeFi杠杆工具,请先确保您已经完全理解它并具备控制风险的能力。 关于我们:SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如OKC、Huobi Global、polygon、Polkadot、imToken、ChainIDE等建立长期合作关系。 Web:https://www.sharkteam.org Telegram:https://t.me/sharkteamorg Twitter:https://twitter.com/sharkteamorg 更多区块链安全咨询与分析,点击下方链接查看 D查查|链上风险核查 https://m.chainaegis.com

点赞 1
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
SharkTeam
SharkTeam
0xC0f5...8888
SharkTeam是领先的Web3安全服务提供商,提供智能合约审计、链上分析和应急响应服务。 Web: https://www.sharkteam.org Telegram: https://t.me/sharkteamorg Twitter:https://twitter.com/sharkteamorg