LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 一文读懂闪电贷的现状与未来,为什么闪电攻击将成为新常态

一文读懂闪电贷的现状与未来,为什么闪电攻击将成为新常态

2020-05-24 洁sir 来源:区块链网络

闪电贷最近已成为关注的焦点。最近,有两个黑客使用闪电贷攻击保证金交易协议bZx,首先是35万美元的攻击,然后是60万美元的模仿攻击。总之,这些攻击的损失是巨大的。在每次攻击中,攻击者都能立即借用到数十万美元的ETH,将其通过一系列易受攻击的链上协议进行传输,提取了数十万美元的被盗资产,然后偿还了他们的大量ETH贷款。所有这一切都是瞬间发生的,也就是说,在单个以太坊交易中。


我们不知道这些攻击者是谁或他们来自哪里。两者基本上从一无所有开始,然后以数十万美元的价值消失。双方都没有留下任何痕迹。受到这些攻击之后,我一直在思考大量贷款及其对DeFi安全的影响。简而言之:我认为闪电贷是一个巨大的安全威胁,但它并不会消失,我们需要仔细考虑它对未来DeFi安全的影响。

什么是闪电贷?

闪电贷的概念最初由Marble Protocol的创建者Max Wolff在2018年提出。Marble推销自己为“智能合约银行”,其产品是一种简单而又出色的DeFi创新——通过零风险贷款智能合约。


贷款如何具有零风险?


传统的贷方承担两种形式的风险。首先是违约风险:如果借款人的钱用光了,那显然很糟糕。但是,贷方面临的第二个风险是流动性不足风险:如果贷方在错误的时间借出了太多资产,或者没有及时偿还贷款,贷方可能会意外地缺乏流动性,无法履行自己的义务。


短期贷款减轻了这两种风险。一笔快速贷款基本上是这样的:我将为你提供单笔交易所需的尽可能多的钱。但是,在这笔交易结束之前,你必须至少付给我我借给你的钱。如果你无法执行此操作,我会自动回滚你的交易,这一点智能合约可以做到这一点。简而言之,你的闪电贷款是原子性的:如果你无法偿还贷款,那么整个事情就会恢复原状,就好像贷款从未发生过一样。


像这样的东西只能存在于区块链上。例如,你无法在BitMEX上进行闪电贷款。这是因为智能合约平台一次只能处理一次交易,因此交易中发生的所有事情都作为批处理操作串行执行。你可以将其视为交易执行期间的“冻结时间”。另一方面,集中式交易所可能会出现竞争状况,以致你的订单无法履行。在区块链上,可以确保所有代码都在下一行之后运行。因此,让我们考虑一下这里的经济学。传统的放款人有两方面的补偿:他们承担的风险(违约风险和流动性风险),以及他们借出的资本的机会成本,例如,如果我可以在其他地方获得2%的利息 ,借款人必须向我支付高于无风险2%的费用。


闪电贷是不同的。即时贷款实际上没有风险,也没有机会成本!这是因为借款人在他们的紧急贷款期间“冻结了时间”,因此在其他人的眼中,该系统的资本从未处于危险之中,也从未受到阻碍,因此它无法在其他地方赚取利息,也就是说它没有机会成本。


从某种意义上讲,这是非常违反直觉的。那么,均衡状态下的闪电贷成本应该是多少?

基本上,闪电贷应该是免费的。或更恰当的做法是,支付足够少的费用,以摊销包含额外3行代码以使资产具有闪存吸引力的成本。闪电贷不能收取传统意义上的利息,因为该贷款的有效期为零(任何APR * 0 = 0)。当然,如果速记贷方收取较高的费率,则很快就会被其他收取较低费率的快速借贷池所竞争。

闪电贷使资本成为真正的商品。这场竞逐低谷不可避免地导致零费用或微不足道的象征性费用。 dYdX当前收取零借贷费用。另一方面,AAVE收取速动贷款本金的0.09%。我怀疑这是不可持续的,确实,他们社区中的一些人呼吁将费用削减至0。

闪电贷有什么用?

闪电贷最初是在其主要用于套利的前提下销售的。 Marble的突破公告声称:

“通过闪电借贷,交易者可以从 Marble 银行借款,在一个DEX上购买代币,以更高的价格在另一个DEX上出售代币,偿还银行,并通过一次原子交易获得套利。”

的确如此,就数量而言,到目前为止,我们所见到的大多数闪电贷款都已用于这种套利。


但是交易量很小。自成立以来,AAVE的借贷额仅为1万美元。与DeFi的套利和清算市场相比,这是微不足道的。这是因为大多数套利活动是由运行复杂机器人的竞争套利人执行的。他们从事链上优先gas拍卖,并使用gas代币来优化交易费用。这是一个竞争激烈的市场-这些家伙非常乐意在资产负债表上保留一些代币,以优化收益。

另一方面,借入AAVE大约要花费8万加元的gas,并收取本金的0.09%,这是支付套利交易者以微薄利润竞争的高昂价格。实际上,在大多数AAVE套利中,借款人最终向借贷池支付的费用比带回家的要多。


从长远来看,套利者不太可能使用紧急贷款,除非在特殊情况下。但是,闪电借贷在DeFi中还有其他更引人注目的用例。一个例子是为贷款再融资。例如,假设我有一个制造商保险库(CDP),其中锁定了100美元的ETH,我从中借了40 DAI的贷款,因此我的净头寸为60美元,减去我的债务。现在说我想重新融资以提高利率。通常,我需要回购40 DAI才能关闭CDP,这需要一定的前期资金。取而代之的是,我可以借40美元的DAI,结清100美元的CDP,将60美元的未锁定ETH存入Compound,通过Uniswap将其余的40美元的ETH转换回DAI,并用来偿还Flash贷款。零资本再融资。


这是金钱乐高玩具在工作中的一个很好的例子。 1x.ag实际上建立了一个保证金交易汇总器,该集合器使用闪电贷使这种事情自动化。但是bZx攻击者向我们展示了它们不仅是娱乐和游戏,还可以提供快速贷款。

闪电攻击对安全性有重大影响

我越来越相信,闪电贷真正释放的是闪电攻击——由闪电贷款资助的资本密集型攻击。在最近的bZx黑客攻击中,我们第一次看到了这一现象。


闪电贷款对攻击者特别有吸引力的主要原因有两个。


许多攻击需要大量的前期资金(例如预言机操作攻击)。如果你以1,000万美元的ETH获得正的投资回报,则可能不是套利。


闪电贷可以最大程度地减少攻击者的污点。如果我有一个如何以1000万美元的以太币操纵预言机的想法,即使我拥有那么多的以太币,我可能也不想用自己的资金来冒险。我的以太坊会受到污染,交易所可能会拒绝我的存款,这将很难洗钱。有风险!但是,如果我以一千万美元的价格贷款,那么谁在乎呢?都有好处。这并不是因为dYdX的抵押池会被污染,因为那是我的贷款来源-dYdX的污染只是在消失。


你可能不喜欢交易所黑名单已成为当今区块链安全模型的一部分。但这是一个重要的现实,可为这些攻击背后的演算提供信息。


比特币白皮书中,中本聪著名地宣称比特币是安全的,因为:

“ [攻击者]应该发现,遵守规则[…]比破坏自己财富的系统和有效性更有利可图。”

有了闪电贷,攻击者不再需要在游戏中拥有任何皮肤。闪电贷从根本上改变了攻击者的风险。请记住,闪电贷可以累积!受制于gas限额,可以在一次交易中逐字汇总每个快速可借贷池(最高$ 50M),并将所有资本猛跌到一份合约中。现在只要有人能赚钱,任何人都可以猛击任何链上的资产。


当然,不应仅凭大量金钱就可以攻击协议。如果DeFi协议栈的安全性如其所声称的那样安全,那么这一切都不是问题。但是我们承认,以太坊本身可以遭受不到51万美元/小时的攻击,达到51%。那不是很多钱!如果以太坊自己的安全模型基本上是建立在资金限制的基础上的,那么为什么我们如此迅速地嘲笑能够成功以1000万美元被攻击的DeFi应用程序呢?

那么如何减少闪电攻击呢?

假设我是DeFi协议,并且想避免受到闪电攻击。自然的问题可能是我可以检测与我互动的用户是否正在使用闪电贷?简单回答是不。


EVM不允许你从任何其他合约中读取存储。因此,如果想知道另一个合约中发生的事情,则可以通过该合约告诉你。因此,如果想知道是否正在使用紧急贷款合约,则必须直接询问合约。如今,许多贷款协议都无法对此类查询做出回应。而且一般来说,也没有办法强制执行闪电贷。另外,即使尝试检查,使用代理合约或通过闪存借贷池之间的链接也很容易将任何此类查询误导。一般来说,根本无法判断储户是否正在使用紧急贷款。


如果有人要用1000万美元敲开合约的大门,就无法判断这是否是他们自己的钱。那么,我们有什么真正的选择可以防止闪存攻击?我们可以考虑几种方法。


一、说服闪存借贷池停止提供此服务。

认真地说,试图让贷款池停止提供快速贷款就像试图阻止噪音污染一样,提供快速贷款符合每个协议的个人利益,并且出于合理的原因,其用户希望使用此功能。因此,我们可以放心地将其消除。


二、强制关键事务跨越两个区块。


请记住,闪电贷允许你在单笔交易范围内借入资本。如果需要跨两个区块的资本密集型交易,那么用户必须拿出至少两个区块的贷款,以克服任何闪存攻击。 (注意:要使其正常工作,用户必须将其价值锁定在两个区块之间,以防止他们偿还贷款。如果没有正确地考虑设计,则用户可能会在两个区块中遭受攻击。 )


显然,这是在用户体验权衡下进行的:这意味着事务将不再是同步的。许多开发人员对异步智能合约操作感到头疼,例如与第2层进行交互或以太坊2.0中的跨分片通信。具有讽刺意味的是,由于你无法在单个原子事务中遍历分片或第2层,因此异步实际上使这些系统免受闪存攻击。这意味着不会对ETH 2.0分片或第二层上的DEX进行闪存攻击。


三、要求提供链上证明,以证明用户的先前余额并未因闪电贷而改变。


如果可以通过某种方法来检测用户的实际余额是多少,即在他们借出贷款之前他们的余额是多少,我们就可以战胜闪电攻击。


无法在EVM中本地执行此操作,但是可以对其进行修改。这就是要做的事情:在用户与你的协议进行交互之前,需要提供Merkle证明,以证明在上一个区块末尾,他们有足够的余额来弥补当前使用的资金。需要为每个区块中的每个用户跟踪此情况。

当然,它存在一些棘手的问题:在链上验证这些链上证明非常昂贵,并且没有任何用户在他们的头脑中想要生成它们并为整件事支付gas费。另外,出于完全正当的理由,用户可能在同一区块中更早更改了余额。因此,尽管从理论上讲它有一些优点,但这不是一个实际的解决方案。


我提出的这三个解决方案中没有一个特别有希望。我坚信,没有针对闪电攻击的全面防御措施。但是,有两个特定的应用程序确实具有针对闪电攻击的特定缓解措施:基于市场的价格预言和管理代币。


对于Uniswap或OasisDEX这样的基于市场的价格机,闪存攻击使其成为了可能,因此在任何情况下都不能使用当前的中间市场价格作为预言机。攻击者在一次交易中移动中间市场价格并制造闪存崩溃,这破坏了价格预言,这是小孩的玩法。


最好的解决方案是通过TWAP或VWAP使用最后X个块的加权平均值。 Uniswap v2将在本地提供此功能。还有Polaris,这是一种通用的方法,可为DeFi协议提供移动平均值。具有讽刺意味的是,这款北极星也是由Marble的最初创造者马克斯·沃尔夫(Max Wolff)建造的。虽然Polaris现在已被遗弃,但Max在那个角落看到的东西值得称赞。


链上治理本身就是蠕虫。链上治理通常由治理令牌持有者之间的硬币加权投票决定。但是,如果这些管理代币位于快速借贷池中,那么任何攻击者都可以从他们想要的任何结果中挖出一大堆代币并进行猛击。


当然,大多数治理协议都要求在投票期间锁定这些代币,以击败闪存攻击。但是某些形式的投票不需要这样做,例如Maker的执行合约。如今,随着闪存攻击的出现,这些投票形式应被认为完全被破坏了。


理想情况下,如果根本不可以借用管理代币,那就太好了。但这不取决于你作为发行人的角色,而是取决于市场。因此,所有治理操作都应要求锁定以防止闪存攻击。 Compound的新COMP代币通过对所有协议投票进行时间加权来进一步发展,甚至削弱了针对其治理代币的定期贷款攻击。


更广泛地说,所有治理代币都必须具有时间锁。时间锁要求所有治理决策必须等待一段时间才能生效,对于Compound化合物的时间锁就是2天。这使系统可以从任何意外的管理攻击中恢复。尽管MKR尚未大量借用,但MakerDAO最近因易受此类攻击而被号召。它最近实施了24小时时间锁定,以关闭此攻击媒介。

从长远来看,这一切意味着什么?

我相信bZx攻击改变了一切。这将不是最后的闪存攻击。第二次bZx攻击是第一个模仿者,我怀疑它将在未来几个月掀起一波攻击。现在,来自世界最偏远地区的成千上万的聪明少年正在嘲笑所有这些DeFi乐高积木,在显微镜下对其进行检查,试图发现是否有某种方法可以阻止他们进行闪光攻击。如果他们设法利用漏洞,他们也可以赚几十万美元,这在世界上大部分地区都是改变生活的一笔巨款。


有人声称闪存攻击不会改变任何东西,因为如果攻击者的资本充足,这些攻击总是可能的。既正确又令人难以置信。大多数鲸鱼都不知道如何**智能合约,大多数聪明的攻击者也没有数百万美元的身价。


在bZx黑客攻击之后,被闪电攻击击中就像在DAO黑客攻击后被重新进入一样令人尴尬:你将不会得到同情。最后,这些事件使我想到了加密技术中的一个古老概念:矿工可提取的价值。矿工可提取的价值是矿工可以从区块链系统中提取的总价值。这包括大宗的奖励和费用,但也包括更多恶作剧的价值提取形式,例如对交易进行重新排序或将无赖交易插入大宗交易。


从根本上讲,应该将所有这些闪存攻击视为内存池中的单笔交易,这些交易可以赚很多钱。例如,第二次bZx攻击在一次交易中产生了64.5万美元的ETH利润。如果你是矿工,并且打算开始开采新区块,请想象一下查看先前区块的交易并对自己说:“等等,那是什么?当最后一个区块中包含$ 645K的利润时,我为什么要尝试以$ 500的价格开采一个新区块?”


你无需再拖延链条,而是回头尝试重写历史记录,使自己成为闪电攻击者。想想看:诚实地开采以太坊区块,仅此一项交易就价值超过4个小时!这与拥有一个包含正常块奖励的1000倍的特殊超级块是同构的。


艺术家对矿工的可视化效果。图片来源:AP Photo / Denis Poroy

在平衡状态下,所有闪电攻击最终应由矿工提取。具有讽刺意味的是,这将阻止闪存攻击,因为攻击者无法利用这些漏洞的发现来获利。也许最终矿工将开始通过私人渠道征集攻击代码,并向潜在的攻击者支付发现者的费用。从技术上讲,这可以使用零知识证明不信任地完成。


但这一切现在都是科幻小说。矿工显然今天没有这样做。他们为什么不呢?


很大原因是很难,需要大量工作,EVM很难模拟,很冒险,会有漏洞会导致资金丢失或孤立的区块,这会引起轩然大波,流氓采矿池可能会遇到PR危机,被冠以“以太坊的敌人”的烙印。目前,矿工在业务,研发和孤立矿区上所遭受的损失比他们尝试这样做所获得的损失还多。

这为以太坊提供了另一个动力,以加速并过渡到以太坊2.0。以太坊上的DeFi总是很有趣,但绝对不可撤销。 DeFi在PoW链上不稳定,因为所有高价值交易都会受到矿工的重新分配,也称为时间匪徒攻击。


为了使这些系统能够大规模运行,需要确定性——矿工无法重写已确认的区块。这将防止以前的块中的事务被重新使用。另外,如果DeFi协议存在于单独的以太坊2.0碎片上,它们将不会受到闪存攻击。


据我估计,闪存攻击给我们带来了一个小小的但有用的提醒,那就是现在还处于初期。我们仍然没有可持续的架构来构建未来的金融系统。目前,闪电贷将是新常态。也许从长远来看,以太坊上的所有资产都可用于紧急贷款:交易所持有的所有抵押品,Uniswap中的所有抵押品,也许是ERC-20本身。

原文链接:https://medium.com/dragonfly-research/flash-loans-why-flash-attacks-will-be-the-new-normal-5144e23ac75a

—-

编译者/作者:洁sir

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...