熊市就像一块试金石,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资金池),即杠杆实现了借贷资金池之间的资金流转,同时借贷资金池资金总价值不变,还提高借贷资金池(如这里的USDT资金池)的资金使用率。
资金使用率utilizationRate计算如下:
其中,borrows表示借款总额,cash表示资金池余额,reserves表示储备金。此外,ETH资金池中资金增加,而USDT资金池资金减少。如果资金池资金一直减少下去而又没有用户存款的话,资金池可能出现资金不足甚至资金枯竭的情况。
在多空平衡的情况下,资金池的流动性也会保持平衡。但是,如果出现极端情况,比如,做多远超于做空的时候,就要考虑是否会出现某一资金池枯竭的风险。比如上面做多ETH,抵押了ETH,借出了USDT,兑换回ETH,随着做多杠杆越来越大,ETH资金池中的资金会越来越多,但USDT资金池中的资金则越来越少,资金使用率会越来越高,那么USDT的资金就会面临资金不足甚至枯竭的风险。
为了降低甚至避免这种风险,借贷协议通过利率模型调高存款利率来鼓励用户存款。如Compound利率模型如下,当资金使用率增加到一定程度,如80%,借款利率快速增长,进而激励用户存款到资金池中。
以Flux中的DAI资金池为例:
DAI存款APR为0.78%,借款APR为-8.29%,抵押率限额为130%。存入1000DAI,最大可借出1000/130%=769.23DAI。以存入1000DAI的保证金为例,循环贷如下:
(1)借出769DAI,然后存入资金池,此时:
(2)借出591DAI,然后存入资金池,此时:
(3)借出455DAI,然后存入资金池,此时:
(4)借出250DAI,然后存入资金池,此时:
以上过程中,每次都借出后立即存入到资金库中,而且几乎以抵押率限额来借出资产,通过循环借款与存款,利用收益率的差来获得数倍的收益。
循环贷在实际实现的时候可以选择两种模式:
1. 合约循环贷模式,即按照循环贷的步骤,以合约的方式实现,可以在一笔交易内完成。
2. 交易循环贷模式,即每次存入和借出都是一笔交易。
比较之下,前者被清算的风险低,清算取决于最终的抵押率,即在中间步骤可以借取最大的资产;而且会消耗较小的Gas费,但会增加部署合约的成本;后者需要发起多笔交易,会消耗更多的Gas费,此外每笔交易成功后都有可能被清算,取决于交易后的抵押率,每次借取的资产不能太大,否则会面临清算的风险;但没有部署合约的成本。
合约循环贷模式 | 交易循环贷模式 | |
清算风险 | 小 | 大 |
交易Gas费 | 小 | 大 |
操作 | 简单 | 复杂 |
额外费用 | 合约部署费用 | 无 |
由于借款和存款的操作不是一笔交易,因此,这种做法风险较高,尤其是在借出的时候,资产价格的波动可能会使得当前的债务被清算。因此,实际借款要远低于最大可借资产数量,而且杠杆率一般在1x~3x之间,无法实现更高的杠杆率。
循环贷提取存入的资金并还款只需要按照相反的顺序,提款-还款-提款-还款……也可以通过闪电贷直接还款,然后提款后还闪电贷和手续费,剩余的为最终收益。
对于单币循环贷,理论上因为存借的都是同一个币种,就算币价发生了大波动,抵押和借贷价值的波动一样,比值会一直固定。这意味着循环借贷可以无视币价上的波动,也不用担心因为币价波动太大导致被清算。
若是循环贷选择交易对中的两种代币,则每一次借款与存款之间都需要一次兑换,需要支付兑换的手续费,这将严重影响最终的收益。另外,由于抵押(即存款)与借贷的币种不同,其币价波动也不一样,相比于单币来说,抵押率更容易超出限额而触发资产清算。
还是以DAI为例,存入1000DAI,使用3倍杠杆,过程如下:
1. 通过闪电贷借款2000DAI(闪电贷平台:dYdX,Aave,Uniswap),不同平台手续费不同
2. 将本金1000DAI以及闪电贷的2000DAI存入到借贷平台
3. 以存入的3000DAI为抵押物,借出2000DAI
4. 还闪电贷的2000DAI借款,同时还要还闪电贷的手续费。
通过以上4个步骤,在一笔交易内实现了3倍杠杆存款,完成后的各项系数如下:
提取存入的资金并还款步骤如下:
1. 通过闪电贷借款2000DAI,
2. 利用闪电贷得到的2000DAI还借贷平台的债务
3. 提取借贷平台存入的3000DAI以及所有的收益
4. 使用提取的DAI还闪电贷的2000DAI以及闪电贷的手续费
对比循环贷模式,闪电贷模式有很多优点:
唯一的缺点应该就是在整个过程中需要支付闪电贷的手续费,因此建议优先选择手续费低的闪电贷平台,比如dYdX。因此,基于闪电贷模式的直接的杠杆交易服务非常受用户欢迎。
以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的兑换费用,即手续费。
此时:
当ETH价格上涨时,假设涨至3000U,即上涨1.5倍,此时:
将借贷平台中的存款提取出来,过程如下:
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倍。
杠杆做空就是投资者利用杠杆的方式做空,用户可以利用做空赚取收益的。做空是一种在金融产品下跌过程牟利手段,下跌的差价就是投资者的利润。
以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的兑换费用,即手续费。
此时,
当ETH价格下跌时,假设跌至1000U,即下跌0.5倍,此时,
将借贷平台中的存款提取出来,过程如下:
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等建立长期合作关系。
Telegram:https://t.me/sharkteamorg
Twitter:https://twitter.com/sharkteamorg
更多区块链安全咨询与分析,点击下方链接查看
D查查|链上风险核查 https://m.chainaegis.com