原文标题:《科普 | Uniswap 会是下一个聚宝盆吗?》
原文作者:Pintail
翻译 & 校对:闵敏、阿剑
什么是 Uniswap ?
Uniswap 是 2018 年 11 月发布在以太坊主网上的去中心化交易所协议。它的创建者是 Hayden Adams,得到了以太坊基金会的资助。Uniswap 的构思简单而巧妙,使用等价的 ETH 和 ERC-20 代币建立链上交易对池,为交易所提供流动性。链上交易对池采用了自动做市商算法来执行交易,免去了订单簿和交易对手方。相比于其他交易所,uniswap 交易所的智能合约设计能够大幅减少 gas 的用量。
Uniswap 已经有了一个成型的生态系统,包括一个交易接口和一个统计信息门户,迅速与其它区块链平台展开了深度合作。 开发者们在 Slack、GitHub 和 Reddit 上协同开发。在 Uniswap 上线之后,短短两个月内就已经积累了巨大的交易量。
流动性由谁提供
Uniswap 上的交易会造成价格下跌,在总流动量中占比较大的交易造成的价格下跌幅度更大。因此,Uniswap 要想要实现良好运作并处理大型交易的话,还需要建立大型流动性池。那么流动性由谁来提供呢?这些人又为什么要将自己宝贵的 ETH 和 ERC-20 代币放到 Uniswap 交易所里呢?
凡是能够将等值的 ETH 和 ERC-20 代币注入 Uniswap 交易所合约的人都可以是流动性提供者。作为回报,流动性提供者会从交易所合约中获得代币,可以在任何时候将自己在流动性池中的份额取出来。但凡有交易者在交易所进行交易,都要往流动性池中注入 0.3% 的交易费。由于不会生成新的流动性代币,这些交易费会按比例分配给所有流动性提供者。
事实上,Uniswap 协议不仅保证了流动性提供者能从所有交易中收取交易费,还保证了一旦大市场环境下价格发生了改变,必定会产生交易。如果另一个交易所的价格发生变化,与 Uniswap 之间存在价格差,就会出现套利的机会。这时就会有人进行套利交易,直到 Uniswap 交易所的价格与市场价持平为止,流动性提供者可以从中赚取交易费。当然了,如果是流动性强的 Uniswap 交易所,其价格与市场价差距不大,要套利就没那么容易了。
既然成为流动性提供者是件有利可图之事,人们自然争先恐后将资产汇入 Uniswap 交易所合约之中了。
开放性金融应用 UniswapExchange 目前正经历爆发式的增长。UniswapExchange 系统内锁定的 ETH 数量在本月增加了 65%,相比 11 月 2 号项目上线之时增加了 15 倍
然而,将资产放入流动性池中的这段时间里,一些流动性提供者密切关注着这些资产的价值变化情况,发现以 ETH / ERC-20 代币交易对中任何一方来衡量,其价值都远低于他们当初投入的资产。这是怎么回事?
为什么我的流动性资产回不了本?
为什么在能够从交易费中获利的情况下,流动性提供者投入的资产仍会贬值?
要找出这个问题的答案,我们需要仔细看一下 Uniswap 的交易对公式。这个公式真的非常简单。如果忽略交易费,我们会得到下列公式:
ETH 流动性池 * ERC-20 代币流动性池 = 恒定乘积
换言之,交易者用一定量的 ETH 能换得的 ERC-20 代币数量是根据公式计算出来的,反之亦然。两个流动性池的乘积在交易前后始终保持不变。交易量在流动性池中占比很小的情况下,我们可以得出下面的公式:
ETH 价格 = ERC-20 代币流动性池 / ETH 流动性池
结合上述两个公式,假设总流动性恒定的情况下,我们可以计算出特定价格下每个流动性池的大小。
ETH 流动性池 = (恒定乘积 / ETH 价格)^ (1/2)
ERC-20 代币流动性池 = (恒定乘积 * ETH 价格)^ (1/2)
现在让我们来看一下价格变化对流动性提供者的影响。举个简单的例子,假设 Uniswap 的 ETH/DAI 交易对流动性池中共有 100 个 ETH 和 10000 个 DAI ,有个流动性提供者往池中注入了 1 个 ETH 和 100 个 DAI ,占整个流动性池中代币总量的 1% 。由此可得,1 个 ETH 价值 100 个 DAI 。经过几笔交易之后,价格发生了变化(交易费忽略不计)。现在 1 个 ETH 价值 120 个 DAI。那么流动性提供者投入的代币价值几何?将数值带入上面的公式可得:
ETH 流动性池 = 91.2871
DAI 流动性池 = 10954.4511
鉴于这位流动性提供者掌握了流动性池中 1% 的代币,他可以从池中取出 0.9129 个 ETH 和 109.54 个 DAI 。由于 DAI 的价格约等于美元,我们不妨将所有代币都转换成 DAI ,以便更直观地感受价格变动所带来的影响。以现行价格来看,这位流动性提供者在池中持有 219.09 个 DAI 。如果按照之前 1 个 ETH 和 100 个 DAI 来计算的话,不难看出初始价值是 220 个 DAI 。相比之下,流动性提供者反而损失了 0.91 个 DAI 。
当然了,如果价格回升到初始价格,就不会有损失了。因此,我们可以将其称为暂时性损失。根据上面的公式,我们可以推导出另一个公式,基于流动性池发生变化前后的价格比计算出暂时性亏损的大小,得出下列公式:
暂时性亏损 = 2 * 价格比 ^(1/2) /( 1 + 价格比)- 1
根据这个公式,我们可以通过绘图反映不同价格比下暂时性亏损的大小:
价格波动给流动性提供者带来的损失(横轴为当前价格与初始价格占比,纵轴为亏损率)
还可以通过数据来反映:
如果价格比增加 25 % ,会给流动性提供者造成 0.6 % 的亏损。
如果价格比增加 50 % ,会给流动性提供者造成 2.0 % 的亏损。
如果价格比增加 75 % ,会给流动性提供者造成 3.8 % 的亏损。
如果价格比增加 100 % ,会给流动性提供者造成 5.7 % 的亏损。
如果价格比增加 200 % ,会给流动性提供者造成 13.4 % 的亏损。
如果价格比增加 300 % ,会给流动性提供者造成 20.0 % 的亏损。
如果价格比增加 400 % ,会给流动性提供者造成 25.5 % 的亏损。
注:无论价格比是上升还是下跌,造成的损失都一样(也就是说,价格翻倍与减半造成的损失都一样)。
流动性提供者到底能获得多少收益?
因此,流动性提供者实际可获得的收益是用累计的交易费减去由价格差导致的暂时性亏损所得的余额。由于所有交易都是记录在区块链上的,我们可以看看 Uniswap 主网上线以来的具体情况。就以 ETH / DAI 交易对作为代表好了。
第一个为 ETH / DAI 交易对提供流动性的账户是 0xf369af914dBed0aD7afdDdEbc631Ee0FDA1b4891 ,他提供了 30 个 ETH 和 5900 个 DAI (当时的价格是 1 ETH = 196.67 DAI ),在 2018 年 11 月 2 日区块高度为 6629139 之时发起的交易。自第一笔交易达成之后,这个账户就没有再往流动性池中添加或是取出代币了,在区块高度为 7047556 之时,这个账户依旧持有 ETH / DAI 交易对合约中代币总量的 5.6 % 。
下图显示了账户 0xf369af914dBed0aD7afdDdEbc631Ee0FDA1b4891 在区块高度为 6629139 到 7047556 之间的净持仓量变化情况。根据上述公式,我们也记录了暂时性亏损和累计交易费的情况。为了便于比较,将代币统一换算成了 DAI 。
如上图所示,这个账户自从为流动性池注入代币之后,在大部分时间内相比仅持有代币是处于净亏损状态的(黄线)。这是因为这段时间内 ETH 的价格变化(绿线)造成了巨大的暂时性亏损(蓝线)。不过,交易费在这段时间内是稳定累积的(红线)。随着 ETH 的价格逐步趋近初始价格,目前已经挽回了大部分损失。
如果在区块高度为 6629139 之时 ETH 回到初始价格,则这个账户在流动性池中持有 255.6 个 DAI , 70 天内的回报率为 2.2 %,年化收益率约为 11.8 % 。不过请注意,这个年化收益率只是基于前两个月计算的,未来会发生变化。
流动性提供者获得的回报还会受到其他因素的影响,还需考虑价格差可能造成的损失。如上文所示,如果长期以来价格起伏过大,造成的损失将远远超过交易费带来的收益。如果 Uniswap 能够能够吸引到足够多的流动资金,流动性提供者就能从价格波动中获得收益。
综上所述,成为 Uniswap 的流动性提供者是探索去中心化金融的有趣方式。Uniswap 能够让你利用自己手中的 ETH 和 ERC-20 代币谋取收益,无需将它们委托给第三方,不过也会带来一些风险和冲突。