DeFi安全之借贷杠杆
熊市就像一块试金石, Defi 的各核心业态,哪些能够穿越周期,更好的发展?在周期中又暴露了哪些问题,值得后来者借鉴?SharkTeam合约安全系列课程之【DeFi安全】和您一起讨论和深入。这一课我们聊聊【Defi借贷杠杆】。
一、什么是借贷杠杆?
如何在借贷市场实现杠杆交易呢?我们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计算如下:
其中,borrows表示借款总额,cash表示资金池余额,reserves表示储备金。此外,ETH资金池中资金增加,而USDT资金池资金减少。如果资金池资金一直减少下去而又没有用户存款的话,资金池可能出现资金不足甚至资金枯竭的情况。
在多空平衡的情况下,资金池的流动性也会保持平衡。但是,如果出现极端情况,比如,做多远超于做空的时候,就要考虑是否会出现某一资金池枯竭的风险。比如上面做多ETH,抵押了ETH,借出了USDT,兑换回ETH,随着做多杠杆越来越大,ETH资金池中的资金会越来越多,但USDT资金池中的资金则越来越少,资金使用率会越来越高,那么USDT的资金就会面临资金不足甚至枯竭的风险。
为了降低甚至避免这种风险,借贷协议通过利率模型调高存款利率来鼓励用户存款。如Compound利率模型如下,当资金使用率增加到一定程度,如80%,借款利率快速增长,进而激励用户存款到资金池中。
二、使用杠杆提高存款收益
1、循环贷模式
以Flux中的DAI资金池为例:
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=(1769*0.78%+769*8.29%)/1000=7.75%
(2)借出591DAI,然后存入资金池,此时:
Ÿ 总存款=1769+591=2360DAI,
Ÿ 总借款=769+591=1360DAI,
Ÿ 抵押率=2360/1360=173.53%,
Ÿ 最大可借出2360/130%-1360=455.38DAI,
Ÿ 杠杆率=2.36,
Ÿ 收益APR=(2360*0.78%+1360*8.29%)/1000=13.10%
(3)借出455DAI,然后存入资金池,此时:
Ÿ 总存款=2360+455=2815DAI,
Ÿ 总借款=1360+455=1815DAI,
Ÿ 抵押率=2815/1815=155.10%,
Ÿ 最大可借出2815/130%-1815=250.38DAI,
Ÿ 杠杆率=2.815
Ÿ 收益APR=(2815*0.78%+1815*8.29%)/1000=17.22%
(4)借出250DAI,然后存入资金池,此时:
Ÿ 总存款=2815+250=3065DAI,
Ÿ 总借款=1815+250=2065DAI,
Ÿ 抵押率=3065/2065=148.43%,
Ÿ 最大可借出3065/130%-2065=292.69DAI,
Ÿ 杠杆率=3.065
Ÿ 收益APR=(3065*0.78%+2065*8.29%)/1000=19.49%
以上过程中,每次都借出后立即存入到资金库中,而且几乎以抵押率限额来借出资产,通过循环借款与存款,利用收益率的差来获得数倍的收益。
循环贷在实际实现的时候可以选择两种模式:
1. 合约循环贷模式,即按照循环贷的步骤,以合约的方式实现,可以在一笔交易内完成。
2. 交易循环贷模式,即每次存入和借出都是一笔交易。
比较之下,前者被清算的风险低,清算取决于最终的抵押率,即在中间步骤可以借取最大的资产;而且会消耗较小的Gas费,但会增加部署合约的成本;后者需要发起多笔交易,会消耗更多的Gas费,此外每笔交易成功后都有可能被清算,取决于交易后的抵押率,每次借取的资产不能太大,否则会面临清算的风险;但没有部署合约的成本。
由于借款和存款的操作不是一笔交易,因此,这种做法风险较高,尤其是在借出的时候,资产价格的波动可能会使得当前的债务被清算。因此,实际借款要远低于最大可借资产数量,而且杠杆率一般在1x~3x之间,无法实现更高的杠杆率。
循环贷提取存入的资金并还款只需要按照相反的顺序,提款-还款-提款-还款……也可以通过闪电贷直接还款,然后提款后还闪电贷和手续费,剩余的为最终收益。
对于单币循环贷,理论上因为存借的都是同一个币种,就算币价发生了大波动,抵押和借贷价值的波动一样,比值会一直固定。这意味着循环借贷可以无视币价上的波动,也不用担心因为币价波动太大导致被清算。
若是循环贷选择交易对中的两种代币,则每一次借款与存款之间都需要一次兑换,需要支付兑换的手续费,这将严重影响最终的收益。另外,由于抵押(即存款)与借贷的币种不同,其币价波动也不一样,相比于单币来说,抵押率更容易超出限额而触发资产清算。
2、闪电贷模式
还是以DAI为例,存入1000DAI,使用3倍杠杆,过程如下:
1. 通过闪电贷借款2000DAI(闪电贷平台:dYdX,Aave,Uniswap),不同平台手续费不同
Ÿ Uniswap手续费为0.3%,即6DAI
Ÿ Aave手续费为0.09%,即1.8DAI
Ÿ dYdX手续费为2Wei,可以忽略不计
2. 将本金1000DAI以及闪电贷的2000DAI存入到借贷平台
3. 以存入的3000DAI为抵押物,借出2000DAI
4. 还闪电贷的2000DAI借款,同时还要还闪电贷的手续费。
通过以上4个步骤,在一笔交易内实现了3倍杠杆存款,完成后的各项系数如下:
Ÿ 总存款=3000DAI,
Ÿ 总借款=2000DAI,
Ÿ 抵押率=3000/2000=150%,
Ÿ 最大可借出3000/130%-2000=307.69DAI,
Ÿ 杠杆率=3
Ÿ 收益APR=(3000*0.78%+2000*8.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%
将借贷平台中的存款提取出来,过程如下:
1. 通过闪电贷借入4000USDT
2. 将4000USDT用于借贷平台的还款,还款后借贷平台总借款为0
3. 将存入借贷平台的3ETH提取出来
4. 通过DEX平台将3ETH兑换成9000USDT
5. 使用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%
将借贷平台中的存款提取出来,过程如下:
1. 通过闪电贷借入2ETH
2. 将2ETH用于借贷平台的还款,还款后借贷平台总借款为0
3. 将存入借贷平台的6000USDT提取出来
4. 通过DEX平台将2000USDT兑换成2ETH
5. 使用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等建立长期合作关系。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum