作者:Guillermo Angeris 近日,在 bZx 连遭攻击之后,关于「预言机」、「闪电贷」、「管理密钥」的讨论已变得越来越多,DeFi 生态正在经历一个短暂的痛苦期。 对此,以太坊联合创始人 Vitalik Buterin 也不得不站出来维稳局面了,他在今日转发了 Uniswap 创始人 Hayden Adams 的一条推文,并评论称: 「计划中的 Uniswap v2 价格预言机设计,能够抵御最近的闪电贷攻击。」 真的如此吗? 我们来看这条推文中推荐的文章《Uniswap 何时会成为一个好的预言机?》 文章作者是安全分析平台 Gauntlet 成员,斯坦福博士生 Guillermo Angeris。 以下是译文内容: Uniswap 已成为了传统订单簿式交易所的一种非常流行的替代方案,并且它还成为了一种测量两种币之间相对价格的常用方法(通常被称为‘价格预言机’)。有点令人惊讶的是,尽管 Uniswap 的基本思想非常简单,但它的实际效果却是相当好的:在「现实世界」中,与规模大得多的交易所相比,Uniswap 似乎准确地估计了两种资产的相对价格。 Uniswap 的稳定性也是令人惊讶的,因为它似乎不受那些试操纵价格以谋取私利的不良行为者的影响。这些结果可能是 Uniswap 用户的直觉,因为他们已目睹了它在野外的表现。而对于怀疑者来说,我们的分析为「Uniswap 是一个好预言机」的条件创建了一个数学框架。在最近发表的论文(已被 Cryptoeconomic Systems 2020 接受)中,我们对 Uniswap 进行了一番分析,并希望在会议之前与更广泛的受众分享一些结果。 恒定乘积市场(Constant-product markets) Uniswap 是恒定乘积自动做市商(通常简称为恒定乘积 AMM)的特殊例子。其思想如下:我们有一个合约(或交易所),它有一些代币「A」(包含 R 这样的代币)的储备以及一些代币 「B」(包含 R’ 这样的代币) 的储备。 一个想购买代币 「B」 Δ’ 币的代理人必须投入足够的代币「A」,以使储备乘积保持不变。换言之,如果代理人想从储备中购买代币 「B」 Δ’币,那么代理人必须将「A」代币的Δ币投入储备,以便新储备乘积与旧储备乘积相同: 方程(1)可以很容易地用来推导我们将要用到的量。例如,币「A」的 Uniswap 价格 m?,相对于币「B」的定义,是用一定数量的币「B」购买币「A」的边际价格。 这相当于是用币「B」购买无限小数量币「A」的平均价格,我们可以将其绘制为价格在Δ = 0 时的斜率: 在下一节中,我们将把 Uniswap 的边际价格与真实市场价格联系起来(剧透:在不收费的情况下,且在一般假设下,它们是相等的)。 注:截至目前,恒定乘积公式(方程式(1))不包括任何交易费用。为了简单起见,我们将在文章的剩余部分假设这个案例是免费的,但我们在这里所做的大多数陈述与收费案例中的预期是基本一致的。 套利以及它告诉了我们什么 为了说明 Uniswap 的价格应相对于参考市场的价格,我们需要假设这些市场是如何相互作用的。 在金融数学中,一个非常常见和简单的方法,就是说不存在套利。换言之,我们会假设,不承担任何风险,只在这两个市场之间进行交易,是不可能免费赚到钱的。 因此,我们可以证明,如果 m?≠m (其中 m 是参考市场价格),那么必然存在一笔足够小的交易,使得代理人可以获得正利润,这就意味着,在这个假设下 m? = m。 为了证明这一点,我们假设 m? > m, 然后,通过定义 m?,存在一个足够小的币「A」输入,例如Δ,这样: 在给定币「A」的Δ的情况下,Δ’是币「B」的输出。 同样,对于市场来说,存在足够小的交易,使得 mΔ ≈ Δ’’,但是,由于Δ’’ < Δ’ (因为 m?> m),我们可以很容易地通过在公开市场上以Δ'' 交易Δ来轻松获利,然后在 Uniswap 中以Δ交易Δ’,也就是说,我们的利润是正的(因为 Δ’’– Δ’ > 0)。注意,这个推导虽然不是完全严格的,但基本上遵循了数学证明。 由于我们可以在 m?<m 时提出类似的声明,因此我们得出结论,在无套利条件下,m? = m。 这就意味着,如果我们假设没有套利和交易费用,那么 Uniswap 的市场价格一定是等于真实的市场价格!当然,无套利假设仅在实践中大致成立,因此 Uniswap 可能会偏离真实市场价格,特别是在一个区块或少量区块内。 更为详细的分析表明,在许多市场模型下,真实的市场价格将非常接近 Uniswap 价格,基于代理的模拟验证了这一点。有关详细信息,请参见论文第 2 节。 注:类似(但较弱)的声明适用于有交易费用的情况: γm ≤ m? ≤ γ??m, 其中(1-γ)是交易费的百分比。如前所述,有关详细信息,请参见论文第 2 节。 Uniswap 的优良特性 Uniswap 还有一些很好的特性,这增强了我们的信念,即它在实践当中很可能是一个好的预言机。 更具体地说: (a) 不可能仅仅通过在市场内交易币来耗尽 Uniswap 的储备; (b)向市场增加流动性是正确的做法,因为它降低了特定币的交易成本,同时增加了操纵预言机的成本。 储备金的边界 要证明没有交易能耗尽 Uniswap 的币,这是不难的。 由于 k = R’R,那么,通过 AM-GM 不等式(均值不等式)我们得到: 这立即意味着,可能储备金的总和,是以积 k 的平方根为界的。根据定义,每次交易后 k 总是常数,那么储量的总和总是离 0 较远的。 增加流动性降低交易成本 有几种方法可以证明这一事实,但最简单的一点是,给定币「A」的输入Δ,我们得到: 利用无套利情况下 R =m?R’的事实,则币 B 的输出等于: 对于固定边际价格 m?,它在 R' 中增加(注意分母随着 R' 的增加而减少)。因此,可用储量越高,给定输入量的输出量就越大。这对于很多使用 Uniswap 协议的用户来说是很直观的,在更多流动性池的情况下,他们看到的滑动是较小的。 价格操纵是昂贵的(当进行大的变动时) 事实上,将 Uniswap 价格操纵到任何固定金额的成本,都与储备量与区块数量成线性关系,这在很多实际情况下可能是昂贵的,尽管我们注意到,对价格非常小或短期的扰动,会是相对便宜的。 现在,假设攻击者希望将 Uniswap m?的价格操纵到一定的量 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)。 请注意,这种操纵在实践中是可能存在的,因此,我们将警告说,任何协议都不应依赖这些预言机(oracle)所报告价格非常细微的变化,也不应该依赖在非常短的时间内报告的价格。 换而言之,在试图对价格进行重大调整时,操纵很快就会变得昂贵,这也是我们目前没有观察到对 Uniswap 市场进行大规模操纵的原因之一。 结论 Uniswap 虽然相对简单,但它似乎具有很好的理论性质,这表明,在实践中,它作为一个去中心化市场和价格预言机可以拥有稳定性。此外,上面的声明确实强调了在 Uniswap 中拥有大型储备池的重要性,因为所有结果都以某种方式依赖于此。 如前所述,以上只是完整论文中陈述的一小部分,对细节和证明感兴趣的读者都应该看看论文!
本文来源:巴比特 —- 编译者/作者:巴比特 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
Vitalik:Uniswap v2 价格预言机能抵御闪电贷攻击
2020-02-20 巴比特 来源:火星财经
LOADING...
相关阅读:
- 黄子圣:8.4比特币再探11400再空一次,回踩继续多!2020-08-04
- 于集鑫:比特币震荡整理以太坊韧性十足再次上攻2020-08-04
- 丁佳永:BTC暴跌重启震荡以太坊回调整装待发2020-08-04
- 以太坊侧链 Matic 推出500万美元DeFi项目孵化基金2020-08-04
- 行走笔记:年少有为的CKB,是否抓住了BSN新机遇?2020-08-04