Uniswap —— 一家不走寻常路的交易所

Uniswap 是近期在以太坊上推出的一个极有意思的项目。它是一个去中心化代币交易所的协议,但与目前看到的一般协议很不一样。几年前,Vitalik 在 reddit 上发了一条帖子,Uniswap 的创始人 Hayden Adams 因此受到启发,但他一开始只是抱着学习 Solidity 的想法。不过很快,这项编程练习就收到了一笔来自以太坊基金会的奖金。Uniswap 是一组部署到以太坊网络上的智能合约,这意味着整个过程都是在链上进行的。Uniswap 没有自己的代币,完全去中心化,也没有任何手续费流向创始人。虽然 Uniswap 的机制需要一些时间来习惯,但我们会发现,与传统的去中心化交易所(DEX)相比,这种代币交易协议拥有一些显著的优点。

简介

Uniswap 独特的架构完全摆脱了限价订单的概念。不同寻常的是,做市商在提供流动性时不再指定交易价格,而是只提供资金,然后 Uniswap 会负责余下的事情。

在 Coinbase 这样典型的传统交易所上,做市商常常按不同价位提供不同的流动性。假设一位交易者手头有 1000 美元和 10ETH。他可能会以 80 美元买 5ETH 以及 60 美元买 10ETH 来挂买单。同时,他可能会以 120 美元卖 4ETH 以及 140 美元卖 6ETH 来挂卖单。他们会选择以自己乐意交易的各种价位做市。总的来说,所有交易者的挂单就组成了交易所的限价订单簿。随着市场行情的上涨或下跌,交易者可能会以其指定的价格成交,也可能不会成交。通常来说,ETH的“行情报价”为最高买单和最低卖单的中间值。

现在假设 Coinbase 把每个人的买单和卖单汇集到两个大的交易池中——可以想象,有的交易者可能不太喜欢这种做法。他们不希望自己的订单与其他人的混在一起,或者不希望让 Coinbase 代表他们以任意价位执行交易。

然而,Uniswap 却正是这么做的。做市商不再指定他们愿意买入或卖出 ETH 的价格。相反,Uniswap 会将每个人的流动资产汇集在一起,并根据某种确定性的算法做市。该算法称为“自动做市商”(AMM),它会根据某些预定义的规则集向最终用户报价。举个非常简单的 AMM 例子:某种交易机器人(bot)策略会以市场价格的中间值为基准,每隔 1 美元(低于 1 美元)提供买单和卖单(高于 1 美元),并随着市场的变化不断修改下单。

AMM 并不是死板的,不同的算法各有权衡取舍。Uniswap 使用了一种被称为“恒定乘积做市商模型”的算法。这种 AMM 的其中一大特点是,无论订单簿规模有多大,或者流动性资金池有多小,它都能提供流动性。其中的窍门是随着需方数量(买单)的增加,渐进式地增加代币的价格。虽然这对较大的订单不太友好(稍后会详述),但系统永远不必担心流动性不足,它几乎能直有效运作。

交易者需知

举个 ETH / DAI 交易对的简单例子。假设做市商已经为这一流动性池注入了 100,000 DAI 和 1,000 ETH 的资金。Uniswap 将这两个数量相乘(100,000 x 1,000 = 100,000,000)。

Uniswap 针对这一特定交易对的目标是:无论交易活动多少,该产品都将始终保持 1 亿的交易对乘积数量(因此称为“恒定乘积做市商”)。要记住 x * y = k 这一关键公式,其中 x 和 y 是流动性池中的代币数量,k 是乘积。要想保持 k 恒定,x 和 y 只能相互反向变动。比如某一交易者在此合约中用 DAI 购买 ETH,则他们正在增加 x(因为增加了流动池中的 DAI),同时也减少了 y(因为减少了流动池中的 ETH)。但这个反向变化不是线性增长的关系。如果现在你要购买 100ETH 而不是 10ETH,那么在购买 10ETH 所需的 DAI 的基础上增加 10 倍,可能并不够用。事实上所需的 DAI 是渐进式增加的。最简单的理解方法是绘制 x * y = k 曲线。

-如图所示,水平方向衡量花费的币 A 的数量,越往右移,单位数量得到的收益(即收到的币 B 的数量)越少(Y 值变动越小)-

在这个系统中需要注意的是关键点在于:报价直接取决于订单的大小。越往曲线右端移动,单位投入获得的收益越少。假设当前的 ETH / DAI 价格为100,不同数量订单所需支付的溢价见下表:

如表所示,当购买 ETH 的数量超过流动性池的 2% 时,购买大量的 ETH 就会很昂贵。不过要记住,这些溢价乃是由当前流动性池的规模决定的。如果流动性池大了 100 倍(即 1000 万 DAI 和 10 万ETH),这时候只购买 50ETH 就没那么贵了。最终,支付价格反映的是交易规模对 x / y 比率的改变程度。流动性池越大,处理大订单就越容易(这正是我们所期望的)。

值得注意的一点是是抢先交易(front running),当今以太坊上的所有 DEX 都存在这个问题。为缓解这一问题,Uniswap 允许用户在下单时指定最高价格。这样,即便矿工抢先交易某一订单,用户也不会被迫接受更高的价格。虽然用户可能会错过这笔交易,但他们不需要支付更高价格。Uniswap 的另一个特点是“订单到期”,该功能可以防止矿工搁置已签名的交易并等到价格变动后再处理。

ERC-20 到 ERC-20 的代币互换无需使用专门的流动性池。例如,在处理 REP <> ZRX 订单时,系统将先通过 REP/ETH 交易对,再自动通过 ZRX/ETH 交易对。

流动性提供者需知

流动性提供者面临的情况要更复杂。举个 ETH/DAI 市场的例子。首先,流动性提供者(以及交易者)要注意,x/y 比率代表交易对的价格。在我们当前使用例子中,x/y = 100,000 DAI / 1,000 ETH = 100。假设 ETH 在 Coinbase 上价格是 100 美元。如果 x/y 不等于 100,那么 Uniswap 和 Coinbase 之间将存在套利机会。

当流动性提供者向池中增加流动性时,他不能只向交易对的一方提供流动性,这样会改变两种代币间的比率、设定出一个新交易价格(这是个危险操作,因为他将立即被交易对手套利,从而赔钱)。例如,某一流动性提供者仅增加了 1,000ETH,则合约的新比率为 100,000 / 2,000 = 50。套利者将蜂拥而至,直至该比率再次变成100:1。 流动性提供者必须为交易对的两个币种提供等值的资金(Uniswap 接口将确保不会出现错误操作)。

假设在增加 10,000DAI和 100ETH(总市值 20,000 美元)之后,流动性池现在总共有 100,000 DAI 和 1,000ETH。由于注入的金额相当于总流动性池的 10%,因此合约会产出一种“流动性代币(liquidity token)”,将其提供给做市商,使其有权获得池中可用流动性的 10%。这些代币不是用于交易的投机币,而只是一种用于记录流动性提供方债权的会计或者说记账工具。如果其他人随后存币或者取币,则将会产生或者销毁新的流动性代币,保证每个人在流动资金池中的相对份额保持不变。

现在假设 Coinbase 上 ETH 的价格从 100 美元涨到 150 美元。在经过一番套利之后,Uniswap合约也将反映出这一价格变化。交易者将增加 DAI,减少 ETH,直到新比率变成 150 : 1。这会对流动性提供者造成什么影响呢?合约反映出的数字会接近 122,400DAI 和 817ETH(做个算数检查一下这些数字的是否准确:122,400 * 817 = 100,000,000(恒定乘积),122,400 / 817 = 150(新价格))。如果把我们有权获得的 10% 提取出来,那么现在会变成 12,240DAI 和 81.7ETH。此时的总市值为 24,500 美元。做市导致错失了大约 500 美元的利润。

显然,没有人愿意抱着做慈善的心态提供流动性,收益又不能从炒币中获得(因为也没得炒)。所以,总交易量的 0.3% 会按比例分配给所有流动性提供者。默认情况下,这些费用会重新注入流动性池,但可随时收取。在不知道中间交易量的情况下,很难说交易费的收入和做市的损失孰高孰低。对流动性提供者来说,显然行情波动越多越好

核心价值

好吧,和常规的基于限价订单簿的交易所相比,Uniswap 这种机制听上去要复杂得多。溢价也使得大型交易的成本过高。那它到底有什么好处呢?简而言之,流动性的汇集解决了订单的深度问题,而且不再有较大的买卖价差。那些不想处理限价订单的中小交易者会喜欢这一点(在我们看到的所有加密货币交易平台中,Uniswap 的 UX 是最容易上手的)。在 Uniswap 上,无需挂买单或卖单,也不用进行繁重的计算。流动性提供者也可以一劳永逸,订单和仓位管理方面的开销也明显减少。这是一种很佛系的提供流动性并赚取费用的方式。

Uniswap 还为 dApp 之间(或计算机设备之间)的交易注入了活力。在一个拥有数百万微交易的世界中,与让人不得不留意特定价格的流动性需求相比,融入一个巨大的流动性池更有意义。提升小订单的最佳报价变得不再有风险(想象一下卖方订单为空的 DEX)。另一个用例是证券型代币用 Uniswap 支付分红。

有些聪明的读者可能已经意识到,其实这个模型与去年推出的 Bancor 网络非常相似,但 Uniswap 不收取任何上币费用,消耗的 Gas 少得多,并且更加去中心化。Bancor 要求上币方抵押 BNT,同时要需要填写上币申请表,而且 BNT 很容易被随意冻结。而 Uniswap 不存在这些问题, 只要以太坊网络在,Uniswap 就会持续运转下去。

目前,Uniswap 所有合约的流动 ETH 资金只有几千,因此仍处于早期阶段。由于总会有巨鳄想要交易大宗订单,因此 Uniswap 不太可能取代其他类型的 DEX,但它的独特功能肯定会吸引到许多想要快速、简单获取各种代币的普通交易者。

衷心感谢 Hayden Adams, Ameen Soleimani, Linda Xie和Jordan Clifford的宝贵意见。

免责声明:Cyrus Younessi 是 Scalar Capital Management 的研究和交易总监,他专注于加密和区块链相关资产的投资。Scalar Capital 持有或可能投资本文所述的资产

原文链接: https://medium.com/@cyrus.younessi/uniswap-a-unique-exchange-f4ef44f807bf
作者: Cyrus Younessi
翻译&校对: Ray & 阿剑

本文由作者授权 EthFans 翻译及再出版。

你可能还会喜欢:

观点 | DeFi vs Fintech
观点 | 0x 协议当前的状况
科普 | 现代经济中的货币,Part-3

评论