Vitalik:Uniswap v2价格预测器可以承受闪电贷款攻击

最近,在bZx攻击之后,关于“ oracle”,“闪电贷款”和“管理密钥”的讨论变得越来越多,DeFi生态系统正经历短暂的痛苦。

在这方面,以太坊联合创始人Vitalik Buterin也必须站起来并保持稳定。他今天转发了Uniswap创始人Hayden Adams的推文,并评测说:

“计划中的Uniswap v2价格预测器旨在承受近期的雷击。”

真的是这样吗

让我们看一下该推文中的推荐文章:“ Uniswap何时会成为一个很好的预言家?” 》

作者是安全分析平台Gauntlet的成员,也是斯坦福大学的博士生Guillermo Angeris。

以下是翻译:

Uniswap已成为传统订单簿交易所的一种非常流行的替代方法,并且它也已成为一种测量两种货币之间相对价格的常用方法(通常称为“价格预言”)。令人惊讶的是,尽管Uniswap的基本思想非常简单,但其实际效果还是不错的:在“现实世界”中,与更大的交易所相比,Uniswap似乎可以准确地进行估算。两种资产的相对价格。

Uniswap的稳定性也是令人惊讶的,因为它似乎不受试图操纵价格以谋取私利的不良行为者的影响。这些结果可能是Uniswap用户的直觉,因为他们看到了它在野外的表现。对于怀疑论者,我们的分析为“ Uniswap是一个好的预言家”的条件创建了一个数学框架。在最近被Cryptoeconomic Systems 2020接受的论文中,我们对Uniswap进行了分析,并希望在会议之前与更广泛的受众分享一些结果。

固定产品市场

Uniswap是恒定产品自动做市商(通常称为恒定产品AMM)的一个特殊示例。该想法如下:我们具有具有一些令牌“ A”的储备(包含诸如R的令牌)和一些令牌“ B”的储备(包含诸如R’的令牌)的合约(或交易所)。

想要购买代币“ B”Δ′硬币的代理商必须投资足够的代币“ A”以保持储备产品恒定。换句话说,如果代理商想要从储备中购买代币“ B”Δ’代币,则代理商必须将“ A”代币的Δ代币放入储备中,以便新的储备产品与旧的储备相同。产品:

方程(1)可以很容易地用来推导我们将要使用的数量。例如,相对于硬币“ B”的定义,硬币“ A”的Uniswap价格m 1是用一定量的硬币“ B”购买硬币“ A”的边际价格。

这等于购买无穷数量的硬币“ A”和硬币“ B”的平均价格,我们可以将其绘制为Δ= 0时价格的斜率:

在下一节中,我们将把Uniswap的边际价格与实际市场价格相关联(破坏者:它们在不收取费用的情况下且根据一般假设均相等)。

注意:到目前为止,常数产品公式(等式(1))不包括任何交易成本。为简单起见,我们将在本文的其余部分中假定此案是免费的,但我们在此处所做的大多数陈述基本上与收费案中的预期一致。

套利及其含义

为了表明Uniswap的价格应该相对于参考市场的价格,我们需要假设这些市场如何相互作用。

在金融数学中,一种非常普遍且简单的方法是说没有套利。换句话说,我们将假设不可能通过在这两个市场之间进行交易而没有任何风险来免费赚钱。

因此,我们可以证明,如果mᵤ≠m(其中m是参考市场价格),那么必须有足够小的交易以使代理获得正利润,这意味着在此假设下mᵤ= m。

为了证明这一点,我们假设mᵤ> m,然后通过定义mᵤ,有足够小的硬币“ A”输入,例如Δ,如下所示:

给定硬币“ A”的Δ,Δ’是硬币“ B”的输出。

类似地,对于市场而言,存在足够小的交易以至于mΔ≈Δ′′,但是由于Δ′′为零。 <Δ '(because mᵤ> m),我们可以轻松地传递Δ′在公开市场上。为了容易获利而交易Δ,然后在Uniswap中将Δ’与Δ进行交易,也就是说,我们的利润为正(因为Δ’-‘Δ’> 0)。请注意,尽管这种推导并不完全严格,但基本上遵循数学证明。

由于我们可以在mᵤ

Uniswap的卓越特性

Uniswap还具有一些不错的功能,这些功能增强了我们的信念,即它在实践中可能是一个很好的预言。

更具体地说:(a)不可能仅通过在市场上交易硬币来消耗Uniswap的储备; (b)增加市场的流动性是正确的方法,因为它可以减少特定硬币的交易成本,并增加操纵神谕的成本。

储备边界

不难证明没有交易可以消耗Uniswap的硬币。由于k = R’R,则通过AM-GM不等式(平均不等式),我们得到:

这立即意味着可能的准备金之和由乘积k的平方根限制。根据定义,每次交易后k总是恒定的,因此储备金总和始终远离零。

增加流动性并降低交易成本

有多种方法可以证明这一事实,但是最简单的一点是,给定硬币“ A”的输入Δ,我们得到:

利用R = m = R′而不进行套利的事实,硬币B的输出等于:

对于固定的边际价格m 1,它的R′增加(注意,分母随着R′的增加而减小)。因此,可用储备越高,给定输入的输出就越大。对于使用Uniswap协议的许多用户来说,这非常直观。随着流动资金矿池的增加,他们将看到更少的滑点。

价格操纵很昂贵(进行较大更改时)

实际上,将Uniswap价格操纵为任何固定量的成本与储备量和区块数量成线性关系,尽管在很多实际情况下,这是非常昂贵的,尽管我们已经注意到很少或短期的扰乱价格将相对便宜。现在,假设攻击者希望将Uniswapmᵤ的价格控制在一定数量p> m(其中m是市场价格),那么此单个操作(例如,单个区块)的成本至少为:

(有关推导,请参见本文的附录E),如果我们假设p≥(1 +ε)m且ε> 0,则由于C(p)在p(p> m)中增加,因此至少得到了成本是:

据我们所知

以及

其中K至少为1 /(32√2)。找到C(ε)的下限有点棘手,相关的论据可以在本文的附录E中找到。如前所述,该下限与常数因子有关,但是此处给出的常数K是一个非常弱的下限(因此,此特定选择仅应作为经验法则,而不是确切的数字)。

实际上,成本与储备金R之间的线性关系说明了大型流动性矿池对于稳健性的重要性。另一方面,由于ε小且成本平方,因此攻击者有可能长时间操纵Uniswap中报告的价格而不会花费太多。

例如,如果储备矿池中的R = 1000 ETH,则攻击者可以将价格操纵ε= 1%,这大约等于每个区块C(.01)≈0.025 ETH(此处的下限非常弱,给出C( .01)≥0.002 ETH)。

请注意,这种操作实际上是可行的,因此我们警告说,任何协议都不应依赖这些预言服务器报告的价格中很小的变化,也不应依赖于短时间内报告的价格。

换句话说,当试图进行重大价格调整时,操纵会很快变得昂贵,这是我们尚未观察到Uniswap市场大规模操纵的原因之一。

结论

尽管Uniswap相对简单,但似乎具有良好的理论特性,这表明在实践中,它可以作为去中心化的市场和价格预测因素保持稳定。此外,上述声明的确强调了在Uniswap中拥有大量储备库的重要性,因为所有结果都以某种方式取决于它。

如前所述,以上内容只是整篇文章中的一小部分,对细节和证明感兴趣的读者应该看看本文

附录

当2020年2月15日发生bZx攻击时,攻击者利用bZx智能合约逻辑中的漏洞来消耗合约资金。我们必须重申上述结论的重要性。

据我们所知,这种攻击不依赖于oracle操作,而是涉及在单个块中执行的多个事务。

特别是,如果可以分批执行攻击,则操作的成本非常小(该成本基本上只是交易成本),因此在大多数情况下这是相当可行的,因为上面给出的边界不适用。

这在“高操纵成本”部分中强调了我们警告的重要性:

(a)合约依靠Uniswap价格的微小变化可能是不明智的(此攻击证明成本相当便宜); (b)合约不应在短时间内基于Uniswap报告的价格;从文章的内容来看,似乎V神“能够承受雷电袭击”的结论似乎有些夸张。他可能只是想表达自己对这种解决方案的乐观态度。

你怎么看?

资讯来源:由0x资讯编译自BLOCKING,版权归作者Block所有,未经许可,不得转载
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢