闪电贷是怎么回事?如何在没有抵押物的情况下,可以借到价值数百万美元的加密货币的呢?本文将对闪电贷进行简单的介绍
简介
闪电贷可以让我们在无需抵押品的情况下从指定的智能合约池中借入任何可用的资产金额。闪电贷是DeFi中有用的一个构件(building block),因为它可以用于套利、交换抵押品和自我清算等。
闪电贷款虽然最初是由Marble协议引入的,但由Aave和dYdX普及。
那么,闪电贷有什么好处呢?
闪贷必须在同一区块链交易中进行借贷和快速偿还。
Ethereum等区块链上交易的概念与计算机科学中对交易的传统定义一致。
交易
一个交易代表了一组必须以“原子方式”执行的操作,原子方式指的是要么所有的步骤都被执行,要么交易被回滚,一个步骤都不会被执行。
让我们以一个简单的数据库交易为例。熟悉这一概念的读者可以跳过这个部分。
想象有一个代表用户账户余额的数据库表
爱丽丝账户的余额是1000美元,鲍勃的余额是500美元。爱丽丝给鲍勃发了500美元。在这种情况下,我们要从Alice的余额中减去500美元,并在Bob的余额中增加500美元。数据库更新报表应这样写:
如果第一个更新执行了,但第二个更新因为某些原因失败了,会怎么样?(也许id=2在系统中并不存在,但我们犯了一个错误,以为这是Bob的id)
如果发生这种情况,我们就会发现出现错误的结果:Alice的余额为500美元,Bob的余额也等于500美元。
为了避免这样的情况,我们必须使用transactions。
在上面的情况下,在SQL中,我们只需要用BEGIN;和COMMIT;关键字来打包这两条语句。一旦这样做,要么这两条语句都正确执行了,要么都没有执行,保证Alice和Bob的余额不受影响,我们就可以放心了。这就是我们常说的原子化交易,如果不同的步骤是同一个交易的一部分,它们是不可分割的,要么全有,要么全无。
Ethereum交易
说到Ethereum,每一个常见的操作,如发送ETH、发送ERC20代币、与智能合约交互等都是在交易范围内执行的。
交易被分组并包含在Ethereum区块中。我们可以很方便地在任意的区块链浏览器(例如Etherscan)上看到包含在特定区块中的所有交易。
一个Ethereum交易可以包含多个步骤,例如,在Compound上提供ETH并借出DAI,在Curve上将借出的DAI的一半换成USDC,在Uniswap上为DAI/USDC池提供流动性,所有这些都在一个Ethereum交易中完成。当然,如果其中任何一个步骤导致错误,整个交易将被回滚,所有步骤都不会发生。需要注意的是,即使合约执行失败,我们还是要付gas费的。
单笔交易的步骤数只受gas费的限制,所以虽然理论上,你可以创建一个有成千上万步骤的有效交,但现实中可能会由于最大gas成本的限制,交易会被拒绝。
闪电贷
现在,我们来深入了解一下闪电贷。
首先,执行闪电贷最重要的是找到一个闪电贷提供商。Aave或dYdX等项目开发了智能合约,允许DeFi用户从指定的池子中借到不同的币,前提条件是在同一个以太坊交易内偿还。使用闪贷通常有固定的成本。例如,Aave合约要求借款人归还初始金额+0.09%的借款金额。0.09%这笔费用将会分给存款人和集成商,前者给出了可供借贷的资金,后者为使用Aave的闪电贷API提供便利。这笔费用的一部分也会被换成AAVE代币。
一旦从借贷池中借到金额,它就可以用于其他套利操作,只要在不同步骤所处的区块链末端快速偿还贷款。
由于贷款必须在一次交易内偿还,所以不存在借款人不偿还借款的风险。唯一的风险就是一直存在的智能合约和平台风险。
闪电贷越来越受欢迎,有的用户在Aave上的借款金额高达14M DAI。
使用案例
闪电贷最常见的使用案例有3种。
套利:闪电贷可以放大成功套利的利润。
让我们想象一下,Uniswap和Curve之间的DAI/USDC池存在价格差异。你可以在Curve上用1个DAI换取1个USDC,但在Uniswap上您只需要0.99个DAI就可以买到1个USDC。现在你可以尝试执行以下套利:
1.通过闪电贷向Aave借100,000 DAI。
2.在Uniswap上将100,000 DAI换成USDC,收到101,010 USDC。
3.在Curve上将101,010 USDC换成101,010 DAI
4.偿还初始100,000 DAI + 0.09%的费用=100,090美元
5.利润 920 DAI
是不是看起来很好的样子?但我们必须考虑到以下几个因素:
网络费用--多步骤的套利交易可能成本不菲,在计算利润时,一定要将交易费用考虑在内。
价格滑点-- 一定要计算你在执行订单时将会遇到多少价格滑点(提示:这取决于交易额的大小和流动性池的流动性)。
Frontrunning-- 很有可能别人会发现同样的机会,并且会设法抢先你一步行动。最重要的是,监控mempool的机器人可以发现你的盈利套利机会,并以更高的gas费发送相同的交易把你的盈利机会“偷走”。
闪电贷的另一个用例是更换抵押品
假设你用ETH作为抵押品从Compound借了DAI。你可以通过以下方式将抵押品从ETH换成例如BAT:
1.发起一笔闪电贷借出DAI
2.用借来的DAI偿还Compound中的贷款
3.提取你的ETH
4.在Uniswap上将你的ETH换成BAT
5.提供BAT作为Compound的抵押品
6.以你的BAT抵押品借出DAI
7.用借来的DAI+费用偿还步骤1的闪电贷
通过这样一轮操作,额外付出借款金额的0.09%就能成功把你的抵押品从ETH换成了BAT
还有一个应用例子是自我清算
想象一下下面的场景:你在Compound上有一笔以ETH作为抵押借出DAI的贷款。ETH价格不断下跌,已经接近清算水平。你也没有或不想存入更多的ETH来降低你的清算水平,你也没有偿还贷款所需的DAI。现在,与其让MakerDAO合约清算你的抵押品并向你收取清算费,不如采取以下步骤:
1.发起闪电贷,借出一笔DAI,金额是你在Compound上的欠债
2.偿还Compound上的DAI贷款,提取ETH
3.将足够的ETH换成DAI,以偿还步骤1的闪电贷+费用
4.拿住你剩下的ETH
这就是闪电贷最常见的3个用例,闪电贷的概念还比较新,未来还有很多应用例子有待发掘。
闪存贷和DeFi黑客
闪电贷,与加密技术类似,既可以用于好的方面,也可以用于坏的方面。闪电贷被大量应用在defi攻击中,黑客的获利得到放大,因为它们不需要任何前期资金。
最著名的黑客攻击之一是BzX事件,在这次的攻击中,闪电贷被用来操纵Uniswap的预言机价格。其实问题不在于使用闪贷,而是在使用Uniswap作为价格预言机时的一些不正确的假设。
这样的事件会让有的用户遭受损失,但另一名,这也让整个DeFi生态系统得到了加强,使其在未来变得越来越反脆弱。
编程与Furucombo
虽然闪电贷主要由开发者使用,但也可以在不需要敲代码的情况下使用它,Collateralswap、Defisaver或Furucombo等项目可以帮助我们实现这一点。
那么,你对闪电贷有什么看法?你用过闪电贷吗?你认为它对DeFi生态系统有好处吗?