区块链 > 区块链技术 > 闪电贷全面解读

什么是闪电贷?闪电贷攻击是什么?一文详解闪电贷

2024-07-14 11:21:14 佚名
简介闪贷具有相同的基本原理,但包括几个独特的特征:这是一种无抵押 贷款,这意味着借款人不需要用任何资产或存款来获得贷款,此外,与传统的无抵押 贷款不同,没有信用检查流程

什么是闪电贷?闪电贷攻击是什么?一文详解闪电贷!闪电贷可以让我们在无需 抵押品的情况下从指定的智能合约池中借入任何可用的资产金额。闪电贷是DeFi中有用的一个构件(building block),因为它可以用于套利、交换抵押品和自我清算等。闪电贷款虽然最初是由Marble协议引入的,但由Aave和dYdX普及。

今天脚本之家小编给大家详细介绍闪电贷,需要的朋友一起看看吧!

图片

什么是闪电贷

闪电贷是去中心化金融世界中一种相对较新的无担保 贷款。最初由Aave于 2020 年初率先推出,此后它越来越受欢迎,并在许多借贷协议中可用。

许多加密行业专家已成为闪电贷的真诚拥护者,因为它们提供了创新的套利方式、执行快速交易,并提供了许多以前在传统金融中无法实现的其他新颖功能。

我们大多数人都熟悉传统贷款,贷方将钱贷给借款人,然后在固定的时间段内以固定的溢价或除本金之外的利息偿还。闪贷具有相同的基本原理,但包括几个独特的特征:

这是一种无抵押 贷款,这意味着借款人不需要用任何资产或存款来获得贷款。此外,与传统的无抵押 贷款不同,没有信用检查流程。

所有闪贷都是通过区块链上的智能合约完成的,并且规定如果借款人没有在单个区块链交易中归还资金,则贷款过程将被逆转,就好像它从未发生过一样。这个关键的区别就是为什么借款人能够在没有任何抵押品或信用检查的情况下获得快速贷款,因为它消除了贷方的任何风险。

贷款过程是即时的,因此一旦贷款延期,借款人必须调用其他智能合约来利用闪贷尝试执行几乎即时的交易,然后在单块交易结束前将资金返还,通常在几秒钟内。

鉴于贷方的资本风险为零,借款人没有抵押或信用检查义务,因此自去年以来,闪电贷在整个DeFi中增长如此迅速也就不足为奇了。

让我们看几个闪贷用例。在第一种情况下,假设用户借用了 DAI,使用ETH持有量作为抵押。如果 ETH 的价格开始下跌,抵押品的价值就会下降,用户将面临贷款在某个时候被清算的威胁。

为了解决这种情况,用户可以利用闪贷。通过此闪贷功能,借款人可以将波动的 ETH 换成稳定币。抵押品的价值立即变得稳定,从而消除了任何清算范围。

虽然此用例属于抵押品交换类别,但您也可以使用闪电贷来换出您的债务。考虑前面的示例,您在 DAI 中借入了资金。

如果对 DAI 贷款的需求突然增加,DAI 的利率将比你之前必须支付的利率增加更多。为了避免支付更多的利息,您可以将 DAI 换成任何其他借入较少的货币,从而保护您的投资资本。

那么,闪电贷有什么好处呢?

闪贷必须在同一区块链交易中进行借贷和快速偿还。

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等项目可以帮助我们实现这一点。

闪电贷攻击

原则上,闪贷允许用户随心所欲地借贷,而无需任何抵押。因此,借款人可以将价值数千美元甚至数十万美元的以太币作为贷款,而无需任何抵押品或 KYC 流程。

这导致了闪电贷攻击的兴起,其中恶意代理人拿出大笔闪电贷,然后利用这些资金来操纵市场并利用各种 DeFi 协议以获取可观的利润,通常以牺牲普通投资者和平台为代价用户。

这些攻击者通过一系列易受攻击的链上协议将借入的闪电贷款金额串连起来,以在偿还贷款之前获取数十万美元的被盗资产。

过去一年发生了多次闪贷攻击,而且这些攻击的频率似乎还在增加。

我们将详细查看其中的一些,以更好地了解该现象。

图片

闪贷攻击的例子

第一次闪贷攻击发生在 2020 年,借款人使用 DeFi 借贷协议dYdX获得了 ETH 闪贷。然后,他们将贷款分成两部分,并将其发送到贷款平台Compound和 Fulcrum。

在 Fulcrum 上,部分闪电贷被用来做空 ETH 对 WBTC。Fulcrum 继续通过另一个称为Kyber的 DeFi 协议从流行的去中心化交易所Uniswap手中收购了 WBTC。

由于 Uniswap 的 WBTC 流动性较低,因此资产价格上涨。结果,Fulcrum 支付了比平时更高的价格来收购 WBTC。

图片

与此同时,借款人还从 Compound 处获得了一笔 WBTC 贷款,并在 Uniswap 上进行了交易,WBTC 的价格已经上涨。

通过操纵多个协议并人为地提高 WBTC 的价格,借款人获得了可观的利润——不仅偿还了他的 ETH 贷款,而且还赚取了超额的 ETH 利润。

虽然借款人获得了显着收益,但 Fulcrum 被欺骗以远高于市场价格的价格收购了 WBTC。

在另一次单独的闪贷攻击中,攻击者再次利用并操纵了构建 Fulcrum 的 bZX 协议。首先,借款人拿走了他的一部分 ETH 贷款,并在 Kyber 上下了一个大订单购买 sUSD。

智能合约识别货币及其价格,但它们不理解稳定货币与美元挂钩。大订单导致 sUSD 的价格飙升,每只价格飙升至 2 美元,这与稳定币应该能够做的事情的基础背道而驰。

由于 sUSD 的购买力翻了一番,借款人利用它借入了比他之前所借的更多的 ETH 贷款。随后,他还清了第一笔 ETH 贷款,并带着剩余的钱跑路了。

在这种情况下,用户欺骗 Kyber 相信 sUSD 的定价可能远高于 1 美元。

具体步骤

第一次闪电贷攻击

在第一次攻击中,攻击者结合 dYdX 闪电贷 和 Compound 中的贷款,对 bZx 实施攻击,主要步骤为:

dydx 借了 10000 个 ETH到 Compound 用 5500 ETH 借了 112 个 WBTC 准备抛售到 Fulcrum(基于 bZx 协议)用 1300 个 ETH 开 5 倍杠杆做空 WBTC(空单换了 51.345576 个 WBTC,而这里换取的 BTC 是通过 Kyber Network 来获取价格的,然而 Kyber Network 最终还是调用 Uniswap 来获取价格,5 倍杠杆开完后兑换回来的 51 个 WBTC 实际上是拉高了 UniSwap 中 WBTC 对 ETH 的价格,由于流动性较低,导致 WBTC 上涨偏离市场价格很多)。用从 Compound 借来的 112 个 WBTC 来在 UniSwap 中卖掉,由于第 3 步 已经把 WBTC 价格已经拉高了,所以这个时候出售可以获得更多 ETH ,同时 WBTC 价格回调,又让第 3 步做空获利。归还 dydx 中的借贷,获得丰厚的利润。也许看起来费劲,甚至可能很难跟上。最重要的是,攻击者利用五种不同的 DeFi 协议来操纵市场。不可思议的是,这一切都发生在原闪电贷被确认单笔交易中。

你确定问题出在哪里了吗?这是在 Fulcrum 使用的 bZx 协议中。通过市场被 操纵,攻击者能够欺骗协议,使其认为 WBTC 的价值比实际价值高很多。

第二次闪电贷攻击

这一周对 bZx 来说不是个好星期。仅仅过了几天,它又遭到了袭击。黑客借了一笔闪电贷,并将部分贷款转化为 稳定币 (sUSD)。你可能已经知道,稳定币跟踪法币美元的价格。

尽管名字很好听,但智能合约并没有那么智能。他们不知道稳定币的成本是多少。所以当攻击者下巨单买入 sUSD(使用借来的 ETH)时,Kyber 上的价格翻了一倍。

bZx 认为 sUSD 值 2 美元而不是 1 美元,于是攻击者在 bZx 上进行了比正常情况下更大的 ETH 贷款,因为他们的 1 美元币有 2 美元的购买力。最后,攻击者偿还了最初的闪电贷款,并带着剩下的钱跑了。

闪电贷有风险吗?

不管是对是错,这种特殊的攻击载体令人印象深刻,如果只是因为它展示了攻击者可以走多远。很容易回过头来看他们使用的方法,说 bZx 应该使用不同的价格预言机来获取其数据。但事实上,这种”抢 劫“的成本非常低:它不需要攻击者投入太多。没有任何经济上的成本能阻止他们。

传统上,想要操纵市场的个人或团体需要巨大数量的加密货币。但有了闪电贷,任何人都可以在几秒钟内成为”巨鲸“。而且,正如我们所看到的,几秒钟的时间,你就可以把价值几十万美金的以太币提走。

从好的方面看,其他的协议会从这两次攻击中吸取教训。现在大家都知道了, 也许这样的预言机[11]有一些漏洞,从第二次攻击中可以看出, 仍然需要大量的工作来消除这些漏洞。

总而言之,这并不是闪电贷的毛病,具体来说,被利用的漏洞是在其他协议中,而闪电贷只是为攻击提供了资金。这种形式的 DeFi 贷款在未来可能会有很多有趣的应用案例,特别是考虑到借款人和贷款人的低风险。

如何防止这些闪贷攻击?

由于这些攻击利用DEX相信它们自己的或单一的喂价,可以通过为货币下大笔订单来操纵这些信息,因此谨慎地利用去中心化定价预言机来确定资产的正确价格。

dApp 可以通过多种方式保护自己免受闪电贷款攻击,其中一些最常见的是:

去中心化预言机——最安全的选择无疑是使用去中心化预言机,利用多个来源找出“真实价格”。一些去中心化的预言机,例如我们自己的 Umbrella Network,更进一步,通过将数据提交到区块链来确保数据的可靠性。

这意味着,如果不法分子试图对从去中心化预言机获取其提要的 dapp 进行快速攻击,价格操纵将失败,交易时间将过去,并且整个交易将逆转——未经处理。

高频定价更新——这是纸面上的一个简单修复,但在实践中可能会更昂贵。在这里,我们只是增加了流动性池向预言机查询新价格的次数的频率。逻辑是,随着更新次数的增加,池中代币的价格会更新得更快,并使价格操纵无效。

图片

时间加权平均定价——通常的做法是使用平均值(或最近的中值)来计算流动性池中的价格。但是,TWAP 建议使用跨多个区块的平均价格。

这有助于抵消闪贷攻击,因为整个攻击交易序列需要在同一个区块内处理,但如果不操纵整个区块链就无法操纵 TWAP。

防止此类攻击的另一个战略建议是在交易周期中使用两个交易块而不是一个。

可以想象,这会使过程更加复杂,并且对攻击者来说是一种劝阻。然而,它也有对 DeFi UI 造成损害的风险。

一些协议还集成了闪贷攻击检测工具,有助于及时识别、快速响应和中和。然而,除非没有足够的避免攻击的例子,否则很难确认这些工具的有效性。

结论

DeFi 仍然是一个新兴领域。它的运作方式正在经历许多创新和快速的根本转变。快速的变化,即使是创新的,也常常导致忽视极度脆弱的群体。

攻击者将继续探索存在的漏洞,但随着每次事件的发生,随着整个生态系统的发展,预防机制也将变得更加强大。

虽然有一些方法可以帮助降低风险,例如使用去中心化预言机、更高频率的定价更新或 TWAP 策略,但随着整个 DeFi 行业采用更有效的方法,闪贷不再成为潜在的剥削工具还需要一些时间来对抗它。

以上就是脚本之家小编给大家分享的闪电贷的详细解读了,希望大家喜欢!

本站提醒:投资有风险,入市须谨慎,本内容不作为投资理财建议。

相关文章