本文目录
前言
恒定乘积市场
套利以及它告诉了我们什么
Uniswap 的优良特性
结论
近日,在 bZx 连遭攻击之后,关于「预言机」、「闪电贷」、「管理密钥」的讨论已变得越来越多,DeFi 生态正在经历一个短暂的痛苦期。
对此,以太坊联合创始人 Vitalik Buterin 也不得不站出来维稳局面了,他在近日转发了 Uniswap 创始人 Hayden Adams 的一条推文,并评论称:
真的如此吗?
前言
Uniswap 已成为了传统订单簿式交易所的一种非常流行的替代方案,并且它还成为了一种测量两种币之间相对价格的常用方法,通常被称为‘价格预言机’。有点令人惊讶的是,尽管Uniswap 的基本思想非常简单,但它的实际效果却是相当好的:在「现实世界」中,与规模大得多的交易所相比,Uniswap 似乎准确地估计了两种资产的相对价格。
Uniswap 的稳定性令人惊讶,因为它似乎不受那些试操纵价格以谋取私利的不良行为者的影响。这些结果可能是 Uniswap 用户的直觉,因为他们已目睹了它的表现。而对于怀疑者来说,我们的分析为「Uniswap 是一个好预言机」的条件创建了一个数学框架。在最近发表的论文(已被 Cryptoeconomic Systems 2020 接受)中,我们对 Uniswap 进行了一番分析。
恒定乘积市场
Uniswap 是恒定乘积自动做市商,通常简称为恒定乘积 AMM的特殊例子。其思想如下:我们有一个合约或交易所,它有一些代币「A」(包含R 这样的代币)的储备以及一些代币「B」(包含R' 这样的代币) 的储备。
一个想购买代币 「B」 Δ’ 币的代理人必须投入足够的代币「A」,以使储备乘积保持不变。换言之,如果代理人想从储备中购买代币 「B」 Δ’币,那么代理人必须将「A」代币的Δ币投入储备,以便新储备乘积与旧储备乘积相同:
方程(1)可以很容易地用来推导我们将要用到的量。例如,币「A」的 Uniswap 价格 mᵤ,相对于币「B」的定义,是用一定数量的币「B」购买币「A」的边际价格。
这相当于是用币「B」购买无限小数量币「A」的平均价格,我们可以将其绘制为价格在Δ = 0 时的斜率:
注:截至目前,恒定乘积公式(方程式(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 价格,基于代理的模拟验证了这一点。
注:类似(但较弱)的声明适用于有交易费用的情况: γm ≤ mᵤ ≤ γ⁻¹m, 其中(1-γ)是交易费的百分比。
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 是市场价格),那么这个单一操作(例如,对于单个区块)的成本至少是:
如果我们假设 p ≥ (1+ε)m 且ε 0,那么由于 C(p) 在 p 中(p m)是增加的,我们得到的成本至少是:
据我们所知,
其中 K 至少为 1/(32√2)。找到 C (ε)的这一下界有点棘手。如前所述,这一下界与一个常数因子相关,但这里给出的常数 K 是一个非常弱的下界。因此,这个特殊的选择应该只是作为经验法则,而不是作为一个确切数。
事实上,成本与储备量 R 是成线性关系的,这一事实正说明了大型流动性池对稳健的重要性。另一方面,由于当ε很小时,成本是平方标度的,攻击者有可能在很长一段时间内对 Uniswap 中报告的价格进行轻微操纵,而无需花费太多费用。
例如,如果储备池的R=1000 ETH,攻击者可通过ε=1% 操纵价格,大约为每个区块C(.01) ≈ 0.025 ETH (这里的下界相当弱,给出C (.01) ≥ 0.002 ETH)。
请注意,这种操纵在实践中是可能存在的,因此,我们将警告说,任何协议都不应依赖这些预言机所报告价格非常细微的变化,也不应该依赖在非常短的时间内报告的价格。
换而言之,在试图对价格进行重大调整时,操纵很快就会变得昂贵,这也是我们目前没有观察到对 Uniswap 市场进行大规模操纵的原因之一。
结论
Uniswap 虽然相对简单,但它似乎具有很好的理论性质。这表明,在实践中,它作为一个去中心化市场和价格预言机可以拥有稳定性。此外,上面的声明确实强调了在 Uniswap 中拥有大型储备池的重要性,因为所有结果都以某种方式依赖于此。
——全文完——
网友评论