本文是关于Uniswap的介绍,详细讲述了Uniswap的工作原理及其背后的自动化做市商(AMM)机制,并探讨了其与传统中心化交易所的不同之处。文章逐步解释了Uniswap的不同版本(V1、V2、V3)及其新的特性和优点,旨在帮助读者理解去中心化交易所和流动性供给的重要性。
系列文章:
这篇文章是[Uniswap系列]的第一篇,旨在向大家简单而清楚地解释Uniswap是什么,以及它是如何发展的,还有被称为Uniswap本身的AMM究竟是什么。这篇文章是为以下有好奇心的人们撰写的。
那么,让我们带着这些疑问一起进入Uniswap和AMM的世界进行探索吧。
Uniswap显然是我们所熟知的DEX。DEX是Decentralized Exchange的缩写,表示可以交易加密货币的去中心化交易所。你所阅读的文章的读者,你或许都曾在Upbit、Bithumb等交易所交易过加密货币。
对我们来说已经非常熟悉的界面
然而,像Upbit、Bithumb这样的交易所提供了用户方便交易加密货币的服务,但严格来说,这并不是在区块链上交易加密货币。加密货币都是由交易所托管的,而我们是在交易所提供的界面上,在交易所的账本上进行加密货币的交易。
因此,区块链社区自古以来就一直努力想在区块链上建立交易所。关于这个理由,这里不进行详细说明。这些早期尝试中的一个就是EtherDelta。EtherDelta是以太坊区块链上的早期DEX项目,受到了许多关注。
EtherDelta
EtherDelta就想图中所示那样,尝试在区块链上实现类似于现有交易所(CEX: Centralized Exchange)的订单簿基础交易所。订单簿是记录所有买卖订单的清单。简单说,就是在交易股票或加密货币时常见的报价单。订单簿基础交易所是将买家的订单与卖家的订单配对,当出价价格等于或高于订单的最低价格时,交易得以达成。
Upbit比特币的报价单
如上图所示,买家和卖家的订单排队等待特定价格和特定数量的成交,而订单簿基础交易所正是基于此进行成交的特点。
以EtherDelta为代表的订单簿基础DEX项目虽然在早期引起了社区的关注,但最终未能取得显著的成功。原因在于订单簿基础DEX存在以下致命缺点。
因此,包括EtherDelta在内的一些早期DEX项目未能取得成功,并逐渐失去了市场关注。
在这种背景下,创新的DEX项目正是克服了传统DEX的局限性并完全改变了游戏规则,今天我们将研究的项目就是Uniswap。
在Devcon 3上宣布推出的Uniswap
有趣的是,Uniswap采取了与现有DEX项目完全不同的方式。Uniswap不再存在订单簿!取而代之的是,通过自动化市场做市商(Automated Market Maker; AMM),使用户的交易基于AMM算法自动匹配。
AMM是什么,如何运作,将在下面详细讨论。
通过引入AMM,Uniswap允许任何人自由提供流动性,并且用户可以基于这种流动性,按算法决定的价格随时进行交易。这极大地改善了DEX的可用性,并基于丰富的流动性,使任何人都可以随时完成其所希望的交易。
简单明了的Uniswap界面——有趣的是,除了输入希望交易量的框之外,什么也没有。
在Uniswap成功之后,许多基于AMM的DEX项目相继推出,Uniswap可以说对区块链生态系统产生了深远的影响,以至于现在所有DEX的标准都可以说是AMM。那么,到底AMM是什么?使用AMM的Uniswap又是怎样的,以至于能够彻底改变DEX的游戏规则?现在我们准备好去深入探讨Uniswap和AMM了。
在研究Uniswap之前,有必要先看看AMM究竟指的是什么。AMM指的是自动化的市场做市商,意即以去中心化的方式自动化地执行做市,即把买家和卖家的交易串联起来。虽然这样讲简单,但通过这种描述仍然很难理解。下面通过示例来简单看一下AMM是如何运作的!
AMM的主要组成部分包括价格决策算法、流动性供应者、代币对和交易者(进行代币交换的用户)。价格决策算法可以说是AMM的核心。Uniswap使用的是多种AMM模型中CPMM(Constant Product Market Maker,以恒定乘积作为市场做市商)。从名称上可以推知,CPMM是一种保持某种乘积(Product)始终恒定(Constant)的模型。Uniswap通过CPMM来确定其中的价格决策算法。要了解CPMM,我们还需要先了解其他组成部分。
在此,大家可能不太熟悉的概念是流动性供应者。对这两种代币都提供流动性究竟是什么意思呢?为便于理解,让我们暂时跳出区块链,转向游戏世界。
通过游戏中的商人,可以窥探流动性供应者的角色。 ( Source)
如果你玩过RPG游戏,通常会有一个与玩家交易物品的商人。玩家向商人支付金币以购买物品,或用物品换取金币。趣味在于,商人总是将物品与金币摆在台面上,持续为玩家提供交易机会。
玩家随时能够前往商人那里,若需要金币便出卖物品,若需物品便支付金币。然而,图中所示的游戏中的商人系统有个独特之处,其持有的物品和金币的量有限,超过该量就无法交易。
例如,该商人当前持有260金币,然而要出售的物品值502金币。因此,即使玩家销售该物品,最多只能获得260金币。如果玩家想买某个物品,但该物品售罄,即使支付再多金币也无法再购买。
提起游戏,正是因为商人所履行的角色与AMM的流动性供应者的角色非常相似。
商人始终针对物品和金币这两种交易提供机会,就像流动性供应者也始终针对两种代币对为交易者提供交易机会。
就像商人的物品或金币耗尽后无法交易那么一样,流动性供应者特定代币的流动性(物品、金币库存)也会耗尽而无法继续交易。 (严格来说,交易价格会无限攀升。详细内容将在后面讨论)。
但有一处差异,即商人对相同的物品始终以相同的价格进行交易,而流动性供应者所提供的两种代币的价格会根据供需而变化。这个价格的决定就是AMM的价格决策算法所需要完成的工作!
那么现在我们准备好看一下AMM的核心即价格决策算法了。包括Uniswap在内的大多数DEX使用的价格决策算法就是CPMM,它用公式X*Y = K来表示。
X和Y指的是代币对各自的代币(x,y)的储备(Reserve)数量。K是指X和Y的乘积。
例如,如果储备中的X和Y的数量分别为10和500,那么k将等于5000。
在CPMM中,所有交易之后,改变后的X和Y的乘积始终必须保持等于K(Constant Product)。而这个乘积的值只有在追加或移除流动性时才会改变,即使是进行再多交易也不会改变。在上面的示例中,交易者用1ETH进行支付并希望购买OMG。因此,交易者用1ETH可以购买的OMG数量为45.5个。 (500–5000/11)
需要注意的是,交易之前的1ETH的价格为50OMG,但实际交易后,则以1ETH兑换45.5OMG成交。导致预期价格和实际交易价格之间产生显著差距的现象被称为滑点(Slippage),由于Uniswap的CPMM特性,使得滑点是无法避免的。然而,应提供的流动性越多,相对滑点规模则会在执行相同规模交易时逐渐减少。而这直接强调了Uniswap的核心就是各个池中供应的流动性规模。
备注:在Uniswap系列接下来的文章中,我们将更详细地探讨Uniswap通过CPMM进行价格决策的方法。
那么,流动性规模为什么重要呢?下面我们将进一步探讨。
在CPMM等AMM中,滑点是如何产生的呢?在前面的示例中我们简要探讨过。但为什么流动性规模越大,滑点就越少呢?让我们通过示例简单看看。
当前假设ETH/DAI池中流动性供应如下。
此时以二者代币的流动性为基础,XY = K图示呈现出上述形态。关键点是,无论曲线上的哪个点,XY始终应等于K。
在此示例中,交易者希望支付1000 DAI来购买ETH。当1 ETH的价格为10 DAI时,该用户预计能用1000 DAI购买到100 ETH。 (暂不考虑交易手续费)
然而,支付1000 DAI后,实际上只能得到50 ETH。这是由于CPMM的特性决定的,因此每个代币的流动性乘积必须保持不变。
100 1000 = 50 2000 = 100000
那流动性规模增加时,滑点为何最新荡到低?
在这一示例中,我们将流动性规模增加了1000倍。也就是说,现在ETH/DAI池中供应的流动性为10,000 ETH和100,000 DAI。接下来,我们希望仍然购买50 ETH。
惊人的是,你只需支付503 DAI便可以购买到50 ETH,几乎与所描述价格1 ETH / 10 DAI一致,因此滑点仅为3 DAI。这样一来,流动性规模越大的话,在同样规模的交易下,滑点也随之减小,这契合了之前图形中的理论。你可以看到,同样规模的交易时采用不同流动性规模,曲线上的点的变化会不同。这种原因便导致包括Uniswap在内的所有DEX都在争相确保大量流动性,以确保其Total Value Locked(TVL)。
但在AMM中,仅需求流动性规模的增加是解决滑点的唯一方法吗?并非如此。对于Uniswap团队的解决方案正是V3所引入的集中流动性(Concentrated Liquidity),其详细内容将在后面的文章中论述。现在只需记住V3近期集中关注解决这些问题,而非简单地依赖流动性规模。
现在我们再回到Uniswap。Uniswap推出后,其重点强调的两大部分之一是接下来讨论的CPMM,这种AMM的引入,另一部分则是提供了更有效的交易体验,尤其是在以太坊这一扩展性受限的环境下。
事实上,AMM这个概念并非Uniswap团队首次提出或研究。只是将CPMM这一简单模型高效地应用,并不能否认此前已有类似的尝试。
备注:关于AMM的历史和各种模型的讨论将在后续文章中详细论述,敬请期待。
可以看到Uniswap的Gas费用相对较低。
但在大多数情况下,由于多种原因使用性受到很多限制,而主要原因正是Gas费用。Uniswap在保留AMM的优势的同时,降低Gas费用,确保普通用户能够无压力地交易,这也是Uniswap能够在初期取得成功的主要原因之一。
从上述滑点的讲解中已可看到,在Uniswap中,流动性供应者的角色极为重要。流动性并不仅在加密货币交易所中重要,对于其他资产进行交易的交易所同样至关重要。因此,通常向下单的主体提供如手续费折扣等优惠。
但Uniswap在此基础上进一步强化设计,使得流动性供应者能够获取交易手续费的绝大部分。每一位流动性供应者所提供流动性量对应获得LP代币,而这些LP代币便可以视为该流动池交易手续费用的一种 Share。这从表面上来看就是一个颇具颠覆性的结构,简单来说就是任何人都可以通过提供流动性而成为Uniswap的“主人”。所以,Uniswap得以相对轻松地确保相当规模的流动性,相较于早期的DEX如EtherDelta面临着巨大的流动性问题。
在成功推出不久后,Uniswap在约一年后于2020年5月发布了V2的更新。V2在大方向上与V1差别不大,但为了提升可用性,新增了多种功能。以下是对新功能的逐一简要说明。
在Uniswap的第一个版本V1中,未支持ERC20代币对。这意味着DAI/USDC的交易必须通过先转换为ETH而后交易。因此,在V2中对其进行了改进,不仅支持ERC20代币对,还升级为用户能够自定义交易路径。
DAIdd
在V2中,如图所示,用户可以直接交换DAI/USDC,而无需通过ETH来转换。底部示例展示了用户自定义Path来进行多对交换的功能。同时,V2与V1有所不同,V2不再使用原生ETH进行交易,而使用有偿ETH(Wrapped ETH ERC20)进行交易。
V2中还新增了类似于闪电贷(Flash Loan)功能的Flash Swap(闪电兑换)功能。闪电兑换是指用户即便目前没有任何代币余额,也能从流动池借入任意数量的代币,并在一个交易内自由使用和还款的功能。
如图所示,V1不支持闪电兑换,因此代币余额不足的用户无法进行交易。但在V2中,用户可以从流动池借入所需数量的代币,然后在一次交易中将该金额和利息偿还。具体说,用户可以在一次闪电兑换交易中,偿还所有借入的牌息,或者仅偿还部分,或必须偿还借入的所有代币。否则则该闪电兑换交易将被撤销(revert),简而言之,该交易从一开始就不存在。
闪电贷或闪电兑换 在过去一年内频繁被提及,成为许多DeFi黑客案件的主要工具,而由此形成了大量的负面舆论。然而,Uniswap团队及整个DeFi社区认为,这一功能被用于攻击的行为是有问题的,而功能本身没有问题。因此,Uniswap团队尽管经历多次DeFi黑客事件,但依然引入了闪电兑换功能,并至今持续保持使用。
在V2中引入了治理代币UNI Token,并在交易手续费的一部分转移至协议费用,从而分配给UNI代币持有者。这个背景缘于在SushiSwap出现后,Uniswap的流动性大量流失于SushiSwap,爆发了一系列被称为吸血鬼攻击的事件。
有趣的是,这一吸血鬼攻击引发了Uniswap和SushiSwap之间的竞争,最终对双方均产生了积极影响。尤其是Uniswap发行UNI代币后,形成了比之前更强大的社区,并成为进一步发展的契机。
2021年3月,Uniswap宣布进行V3的升级。V3是在根本上改变了Uniswap的AMM,与V2显著不同。在此,将对变化的内容进行简要介绍,详细内容在后续文章中会涉及。
V3的主要特点如下。
一目了然,变更的内容确实很多。但逐项仔细查看,你会发现都可以轻松理解。
V3最大的变化是流动性处理方式的转变。先前流动性在所有价格范围内都有提供,而V3可以在指定的价格区间集中提供流动性。Uniswap将其称之为中心化流动性(Concentrated Liquidity)。
source: Finematics
现在,你对这种图形应该很熟悉。过去在曲线的每个点上提供流动性时,现在在图中指定的宽度内提供流动性即可。
通过这种方式,Uniswap可以高效地在稳定币间进行swap。由于V2按照CPMM(x*y=k)的特性在所有价格范围里均提供流动性,因此在始终与1美元价格Hook的稳定币间交易时,必然产生大量滑点。而这些缺点正是Curve Finance专注于稳定币交易而成功的主要原因。然而,V3克服了所有这些缺点,主要稳定币的交易量甚至超过Curve Finance的数据。
备注:顺便提一下,近期Curve Finance已发布新的AMM模型,超出了仅限于稳定币间的交换,并与Uniswap展开全面竞争。而SushiSwap也发布了新的AMM模型Trident,快速跟进这一趋势。未来主要DEX之间的竞争如何发展也将是一个非常有趣的话题。
中心化流动性不仅仅有助于稳定币间的交易。通过在特定价格区间集中提供流动性,还显著提升了资本效率。
source: Finematics
通过Finematics提供的示例来详细分析。
这里有两个用户——志宇和英子。两者都持有$10,000,而ETH的现价为$1,750。在此情况下,志宇如同在V2那样,在所有价格点提供流动性。花费$10,000提供了5,000 DAI和2.85 ETH。而英子则积极利用V3的中心化流动性功能,仅在ETH价格$1,500到$2,500之间提供$1,200的流动性。
有趣的是,若假设ETH价格保持在$1,500到$2,500之间,英子即使只是用$1,200的流动性,就能取得与志宇相同的流动性效果。
志宇和英子投资的金额分别为$10,000和$1,200,但其结果相同。这表明,英子相比志宇更加高效地使用了8.34倍(10000/1200)的资本。现在,英子可将余下的$8,800用在其他地方,也可进行额外投资。那就是Uniswap V3所强调的资本效率的魅力所在。
备注:目前,Uniswap V3的24小时交易额约为1.3万亿韩元,在DEX中压倒性第一,甚至与一般中心化交易所的交易量相比也毫不逊色。这直接显示出新引入的集中流动性所带来的资本效率的强大。
不过,如果实际代币价格不在指定的价格区间内波动,超出该范围怎么办呢?这个问题引入了有效流动性(Active Liquidity)的概念。
源:Uniswap
例如,假设志宇在DAI和USDC中提供了流动性,当前1DAI的价格为1 USDC,并在价格区间设置0.984 USDC ~ 1.016 USDC。换句话说,志宇预计DAI的价格将只会在0.984 USDC到1.016 USDC之间波动。如果DAI价格恰好在这个范围内波动,是没有问题的,但如果超出这个范围会怎样呢?
最右侧的图能很好地展示这样的情况。若DAI的价格飙升至1.020 USDC,则志宇提供的流动性将不再有效。他所提供的流动性将被完全转换为USDC,而DAI则完全消失。显然,他将无法获取任何交易手续费。当然,若DAI的价格再度回归正常,志宇的流动性便恢复为有效流动性,即可再获得交易手续费。以此类推,在V3中,流动性必定会根据目前市场价格决定其有效性。
备注:仅仅通过以上内容,你可能会觉得难以充分理解有效流动性的概念。接下来的文章中进一步探讨V3时,你可以充分了解整体概念。## 非同质流动性
在之前的 V3 中,我们不断强调在提供流动性时指定价格区间。这也就意味着,每个流动性都可以在不同的价格区间提供。因此,V3 的流动性头寸具有与 V2 不同的非同质特性。
来源:Finematics
实际上,在 V2 之前,当提供流动性时,会获得表示其股份的 LP 代币,形式为 ERC 20。但在 V3 中,每个 LP 代币以独特的 ERC 721 形式发行。
来源:Opensea
上图显示的是在 OpenSea 上交易的 Uniswap V3 流动性头寸代币。正因为 V3 的流动性头寸以 NFT 形式发行,单独的头寸可以像这样单独出售。
Uniswap V3 的交易手续费机制也进行了新的更新。之前的手续费是无论哪个交易对都统一收取 0.30% 的手续费,而在 V3 中,提供流动性时可以选择三种手续费中的一种。
一般情况下选择 0.3%,但在稳定币交易对的情况下,可以选择 0.05%,而流动性不足的代币则可以指定 1% 的手续费率。
V3 在许可方面也有重大的变更。如你所知,区块链是基于开源精神的,DeFi 项目也大异其趣。然而,Uniswap V3 引入了 Business Source License 1.1,而非开源许可证,这一政策预计将维持约两年。在这样的背景下,像 SushiSwap 这样直接利用 Uniswap 代码的项目,往往会通过类似吸血鬼攻击的事件威胁 Uniswap 存在。这一决定引发了区块链社区的诸多反对,但 Uniswap 社区的 UNI 持有者通过支持暂时引入商业许可证,使这一做法最终获得了正当性。不妨关注一下这种现象是否会在 Uniswap 之外的其他团队中延续。
我们从 DEX 的早期历史开始,到 AMM,再到 Uniswap V3,确实一次性覆盖了许多内容。这篇文章专注于将多个概念尽可能简单地传达给大家,因此很遗憾没有深入探讨每个概念。尤其是 V3 的部分,不得不简略说明。然而,如果你继续关注接下来的旅程,我相信阅读这篇文章时产生的新疑问都能得到解决。
感谢所有阅读这篇长文的朋友们,也请对接下来的文章多多关注。
我们下篇文章再见!
- 原文链接: medium.com/@aiden.p/unis...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!