【威廉随笔】闲谈自动化做市商 AMM DEX !

最近在 Nervos 的 TG 群里,似乎大家常常提到一个词 : AMM DEX
于是我好奇的发起了一个投票,想问问看大家对于 AMM DEX 的了解程度有多少?
结果发现其实即使有非常多人听过 AMM ,但是对于 AMM 的机制、使用经验依旧不是非常的清楚,因此,虽然自己也不是什么 DeFi 专家,但是身为一个 DeFi 老韭菜,我相信我应该有些实战经验可以和大家聊聊 AMM 这个主题,让大家多认识 AMM 潜在的机会以及风险!

去中心化交易所(Decentralized Exchange ,Dex)是 DeFi 中的核心应用,任何加密货币的交易以及发行基本上都来自于 DEX,尤其是自动化做市商(Automatic Market Maker,AMM)形态的 DEX,例如我们熟知的 Uniswap、Sushiswap、Pancake以及 Curve 等都是 AMM DEX。 至目前为止,即使经历过 5/19 以后的各种极端行情,DEX 仍然存在着逾 190 亿美金的锁仓量以及每日将近 30 亿美金的交易量,下图我们可以看到 DEX 的交易量在去年至今出现迅猛了的成长,在 5/29 甚至出现了 230 亿美元的交易量。
DEX 是 DeFi 业务的核心,也是任何公链在开展 DeFi 生态时的首要重点,但是仍然有很多人对于 AMM 的运作非常的不了解,到底运作机制为何?怎么买卖,谁来供给买卖的交易货源,在对外推广 DeFi 时,我也在和许多非 DeFi 的用户以及圈外人士的交流下,察觉了关于 AMM 还有许多地方,可以用更白话的方式让大家可以熟悉他的运作机制和道理。
当然这或许也有助于用户能够在未来更容易上手 Nervos 上的 AMM DEX 。

DeFi 的交易量曾经创下单日 20 亿美金以上的高峰;source:Debank

DeFi 的 AMM DEX 的锁仓量前十名都已经超过 10 亿美元
source: DeFi Llama

传统中心化交易所和早期的 DEX 怎么搞 — Order Book 挂单簿模式

最多用户在购买加密货币的渠道是中心化交易所,例如我们熟知的 Binance、Huobi、Coinbase 以及 Okex 等等,都是中心化交易所,他们采用的是挂单簿的模式,也就是让买方的买单和卖方的卖单可以在价格相符的情况下在撮合,因此我们在这些中心化的交易所上,会看到大家必须要挂上「限价单(Limit-order book)」,或者是以「市价单」的方式用现价成交。

这样的方式有一个最大的好处是与传统的股市、汇市等的操作方式相仿,对与圈外用户来说也更容易理解,界面上也容易操作,然而,像这一种方式却也存在着一些限制,例如需要中心化的专业做市商团队进行对买单和卖单进行挂单,这样该资产的交易市场才能够产生所谓的流动性,也就是要买的时候有货卖;要卖的时候有人买,例如 Alamanda Research、Amber group 以及 Kronos 都是知名做市商,做市商也借着在买卖单之间的价差获得利润,并且帮助中心化交易所确保交易对的买卖得以在深度足够的情况下进行运作。

然而这样的方式却不容易在去中心化的环境下运作,例如 IDEX, DDEX, Radar Relay, EtherDelta 都曾经在去中心化的环境下,试图运营挂单簿形式的 DEX,然而最后却也没有显著的成绩出现,主因是因为很难在没有做市商的情况下,让 DEX 有足够的流动性,这样一来对于前来进行挂单交易的用户来说,就不能有很好的交易体验。

Source:Richard Chen

AMM 自动化做市商

自动化做市商并不是一个区块链领域的新名词,反而是在传统金融的术语,本身其实指的就是一种透过算法来完成人类做市商行为,2011 年卡内基梅隆大学就有相关的论文在谈 AMM 在传统金融中的可能应用,例如预测市场等,2017年,Vitalik 在他的一篇帖子中 ,也提到了用 x*y= k 的曲线来运作一个去中心化链上交易所,并且在此后,以太坊研究论坛以及 V 的个人博客上 (On Path Independence)也有更多的关于这个概念的讨论,接下来就是 Uniswap 的故事了。但本文主要的目的是要告诉大家什么是 AMM,以及简述 AMM 的机制,不会提到太多技术上的演进,也不会看到太多复杂可怕的算数,当然还是会涉及到一点小学生就会的加减乘除哦。

我要在 AMM DEX 买币,谁卖给我;我要卖币,谁跟我买?

基本上 刚使用 AMM DEX 的新手用户可能最常问的问题就是,在 AMM 上谁跟我做作买卖?

> 答案:其实你是用你手上的货,丢进去某个交易对的池子中,换出相应数量的资产

举个例子,如果今天我要交易的,是 CKB / USDC 的交易对,那么在我要买买 CKB/USDC 的这个池子里,就会同时有一定数量的 CKB 和相应数量的 USDC,像在 Uniswap v2 中,他是限定每个池子都必须是 50 /50 的比例,也就是说池子两边的总资产价值对 AMM 来说随时是等值的,这两个池子在最一开始注入的数量多少,代表这个数量的 CKB 会等值于当时池中的 USDC 总数,如果今天池子里最初有 10000个 CKB 和 10000 USDC ,那就代表当下的 10000 CKB 等值于 10000 USDC 的价值,在这里我们会称呼提供这个交易对的人为流动性提供者(Liquidity Provider),而要来这里「卖」 CKB 的人,其实是把自己手里的 CKB 拿去和这个池子换相应数量的 USDC,举例来说,你想用 2500 USDC 去购买 CKB ,在 AMM 中实际上你在做的事情,是用这 2500 USDC 放入池子中,去换出相应的 CKB 。
等等,相应的 CKB 这是什么意思,遵照着什么相应的规则?

AMM 上价格怎么算?怎么反应市场价格?

好了,现在我们知道当我们在 AMM 买卖加密货币的时候,并非挂单簿那种戳合买卖的形式,而是和一个基本上都是以现价成交的「池子」进行买卖,那么这时候问题来了,价格怎么算呢?在 Uniswap 等 AMM 的池子中,任何的交易对的定价会遵循这套联合曲线(Bonding Curve)
x*y=k
啥? X 是啥,Y 和 K 又是啥?
如上图,我们假设今天池子的交易对分别是 A token 以及 B token ,那么这里的 x 指的是池子中的 A token 的「数量」;y 轴表示的是刚开始池子中 B token 的数量,今天 x*y=k 的公式,就是代表在任意交易前后,这个池子中两种 Token 的数量不论怎么变化,他的数量相乘一定会等于一个固定的值 k。

举个例子最好懂,今天有个 CKB 和 USDC 的池子,初始建池的时候我们将他充入了 10000 个 $CKB 和 10000 个 USDC,这时候他们相乘的值 100000000 即为 k值,也就是说,今天不论池子里的 CKB 和 USDC 数量如何变化 ,两者的数量相乘都会等于一个定值 100000000。因此我们可以看到,如果今天 Alice 要卖出 2500 个 CKB,那么他可以换回多少个 USDC 呢?
我们可以想见,在 Alice 将他的 2500 个 CKB 放入这个池子之后,那么整个池子就会有 12500 个 CKB,那么这时候要有多少 USDC 在池子中,才能够让 X 和 Y 相乘等于 100000000 呢?
我们可以简单的算出 Y 值会等于 100000000/12500 = 8000。对的,也就是说当 Alice 放入了 2500 个 CKB 后,他可以拿走 2000 个 USDC,因为 (10000+2500)*(10000-2000)= 100000000。
这个时候,你会发现 2500 CKB 换出来的只有 2000 USDC,也就是说均价是 1 CKB = 0.8 USDC ,和一开始的 10000 CKB= 10000 USDC 不一样了。

没错,在 AMM 中因为兑换数量的大小而造成能够换出的代币数量不成比例,这就是滑价。
如果我们今天在这个池子中要卖出的是 100 CKB ,则我们可以想见池子中的 Y 和 10100 个 CKB 相乘一样会等于100000000
Y = 100000000/(10000+100)=9900.99
也就是说这时候 Alice 可以用 100 CKB 换出 10000-9900.99 个 USDC,这时候 100 CKB = 99.001 USDC,价格最初的 1 CKB = iUSDC 仅仅只有 0.01不到的落差。*因此我们可以知道,在 AMM 中 K 值越大,也就是池子深度越深,那么滑价越小;同理,换出的数量越少,相对的滑价就会越小。
当然,我们也可以实际去 DEX 上进行操作,在某个交易对中的某一个 token 中输入极大的数值,你就会发现价格和输入较小的数值相比是有差异的。

提供这个池子货源的是谁?怎么获得激励?

我们称呼提供交易池这两种代币的人为流动性提供者(Liquidity Provider,简称 LP),在 Uniswap V3 这样的 AMM 模型以前,其实流动性提供者是一群风险共担的群体,他们在提供了他们的交易对时,其实同时也提供了大家任意的在任何价格去成交这个交易对的交易,举个例子,今天的 CKB / USDC 的交易池里面,一共有 8000个 CKB 和 8000 个 USDC,Bob 又提供了整个流动池子 2000个 CKB 和 2000 个 USDC,那么今天 x*y = kk 值会是 100000000,此时 Bob 会拿到了 2 个 CKB/USDC LP Token,这是一个提供流动性的凭证, Bob 可以透过烧毁这个收据(LP 头token),并且按比例撤出自己提供的流动性 。

然而,天有不测风云,CKB 在这个 AMM 以外的其他中心化交易所已经出现了价格变化,但 AMM 并没有办法知道外在的价格变化,因此,我们今天假设在币安或者火币,CKB 的价格已经从 1 美元上涨到 1.5 美元,代表说在中心化交易所上现在拿 3000 USDC,只能买到 2000 CKB,但是在这个 AMM 上却能够买进大约 2303 个 CKB,看到没,加上滑价,依旧净赚 303 个 CKB,因此这时候聪明的 Carol 从这个池子中用 3000 USDC 换出了 2303 个 CKB。
但是,这时候如果 Bob 才惊觉价格上涨,要撤出流动性, Bob 会发现它能够拿出来的,是 2600 (13000/5 )个 USDC 以及 1539(7693/5 )个 CKB ,相当于2600 USDC 加上 2308 USDC 等值的 CKB ,这时候取出来的两种币总值是 4908 USDC,我们算一算 Bob 如果不提供流动性 2000 个 CKB 相当于 3000 USDC,加上 2000 USDC 相当于 5000 USDC 的价值,但是撤出流动性后,Bob 手上的资产总值却只有 4908 USDC,产生了 92 USDC 左右的无常损失,因此我们可以知道,身为流动性提供者,在两个交易对的货币存在套利空间时,基本上都会面临损失,这样的损失我们也称为无常损失(Impermanent Loss)。
但是笔者个人认为,对于流动性提供者而言,严重的往往不是无常损失,而是池子中的某一种币价产生严重的价格暴跌。

那么为什么还有人愿意提供流动性呢?

聪明的你一定想到了这个问题,那么为什么有人还愿意提供给这个池子流动性呢?
有两个原因,一是交易手续费;而是去年夏天引爆的流动性挖矿奖励

交易手续费

早年的 Uniswap 当然也有想到这个问题,在去中心化交易所上,AMM 势必不可能为了激励大家来提供流动性,因此就花钱请来做市商,这样就不叫做自动化做市商了,但是他们想出了交易手续费这个方法,并且在每一笔交易费用中已经设计了 0.3% 左右的费率给到该交易对的流动池,也就是说如果今天我要在 AMM 中用 1000 USDC 来换取 CKB ,实际上我会提供给这个流动池 3 USDC 的费用,而这些费用则是会给池子中的流动性提供者均分,举个例子,今天我提供的流动性总共占CKB?USDC 这个池子的 1/5 ,那么如果今天池子里面的交易总额是 1 亿美元,在 0.3 % 的费率下则能够贡献给池子 30 万美元的手续费收入,而我在撤出池子的时候就能够额外获得等值 30*1/5 万等值的 CKB/USDC 交易对。
其实大家可能忽略了这里的手续费的收益,看似不多,但是对于大户而言却常常能够创造稳定的收益。

流动性挖矿

然而,这或许还没有办法激励多数的人将手上的代币用来提供流动性,因此,在去年夏天,由 Compound、Synthetix 等 DeFi 项目所发起的流动性挖矿也席卷了 Sushiswap 、Uniswap、Balnacer 以及后来的 Pancake swap ,所谓的流动性挖矿就是指流动提供者再提供完某个交易对后,再把代表他提供多少份额的流动性凭证(LP Token)锁进某个项目的合约中,可以获得该项目的治理代币或者 AMM 平台的治理代币。举个例子,如果今天有个叫做 Gliaswap 的 AMM 发行了一个治理代币 $Glia,那么就像是我讲自己提供给 CKB/USDC 这个交易对的凭证,锁进 Gliaswap 的平台中,那么 Gliaswap 的合约会定期的将治理代币 $Glia 发给这些提供流动性,并且把提供流动性的凭证抵押进去平台中的用户。

流动性挖矿因为本身具有高收益的特性,因此可以让许多人趋之若鹜,也可以在项目早期让用户去参与,增加项目的热度和参与人数,然而过度高涨的收益率也会影响着项目的价格,例如说如果有大户在第一时间进入池中,他就能够攫取到尽可能多的收益,并且将这些挖取的代币直接在 DEX 卖掉,这回导致治理代币价位的剧烈波动,甚至产生恶意砸盘等风险,可谓水能载舟,亦能覆舟,例如是 Sushiswap 的治理代币 $Sushi 就因为初期过高的奖励释放量以及创始人恶意砸盘等事故,而导致治理代币在暴涨之后面临暴跌 。


Source:TradingView

无常损失的解决方案

至于无常损失这个问题,其实基本上是只要两种资产的价格比产生变化就一定会产生的,因为 AMM 内部的价格一定是透过套利者与外部进行平衡,虽然对于流动性提供者不友善,但却是 AMM 吸引用户前来的一种原因。日前有一些项目试着让外部的预言机来对于交易价格进行动态加权平均,或者更积极的主动做市,例如 Bancor V2 和 Dodo PMM,但是没有办法有非常显著的效果,但是这类型的 AMM 由于依赖外部价格,因此会失去「定价权」以及「引进长尾资产」等 AMM 重要的价值,这也是 DEX 和 CEX 相比极为重要的护城河;同时,也有 AMM 想出了「以流动性挖矿奖励补偿无常损失」的做法,在这个做法上 Bancor V2.1 体现的最为明显,同时像是 Sushiswap 的 Onsen 以及 PancakeSwap 的糖浆池 Syrup Pool 也具有一样的效果,对项目方而言会比较有吸引力去选择将流动性挖矿的活动在这些平台有能力发生奖励的 AMM 上进行。至于 Uniswap V3 同样也针对无常损失产生了新的解决方案,就是允许流动性提供者只在他允许的兑换率之内兑换,但是这样的情况下容易产生在行情变动剧烈的情况下流动性极差、滑价极大的情形,也意味着对于允许较大兑换率的做市商有更大的风险。

AMM 还能做什么?

太多了,绝对不止一下列的这两种,我甚至看过有人试图用 AMM 来做加密货币的 ETF

预言机

除了交易代币之外,AMM 因为有了产生市场价格的特性,所以还有能力扮演「预言机」,对许多 dApp 喂取当下 AMM 价格对的价格,如此一来,在深度足够,以及 TWAP 时间加权平均价格机制的保护下,其实 AMM 的价格能够给予借贷、保险、预测市场等等 DeFi dApp 使用,为许多链上的应用提供更大的赋能。这也是为什么 AMM 几乎可以说是 DeFi 的基石的原因。

通证发行平台(1DO、1FO)

Uniswap 等 AMM 可以作为代币交易的平台,自然他也能够作为代币的交易平台使用,代币发行方可以作为某个代币拍卖池的流动性提供者,并且在适当的深度下,就能够提供 token 购买者,以 USDT、USDC 或者 ETH 等主流代币进行购买,最后流动性提供者再借由删除流动性,而获得池子中增加的 USDC 等主流代币。基于这样的原理下,我们也可以看到许多的 AMM 平台开始有了自己的「上新」 token 的机制设计,例如在 Pancake swap 、Sushiswap 的MISODodo 的众筹建池等等功能,以及透过 Balancer 的 LBP 可以提供避免 Front run 的链上拍卖。

这是一个很重要的创新,因为在过去用户集中在使用 CEX 时,新项目往往在上币这块没有抗审查的平台可以做资产的发行,这也造成了非常多额外的上新成本,现在 AMM 不但提供了一个让任何人随时都可以 List token 的机会,这个点打破了过去 CEX 的中心化审查所带来的成本,在 DEX 发行 Token 以及举办流动性挖矿等活动更能够去汇集早起的用户,对于项目的冷启动有一定程度的方便,我们可以看到像是 Uni,YFI ,Sushi 这些 DeFi 的蓝筹股项目的上币过程,基本上都是直接在 DEX 上直接进行。

诸如此类的应用,其实都让我们看到了 AMM 的 DEX 对于平台资产的活用以及价值创造,当然,未来 AMM 在配合着跨链等功能,一定也能够吸引到更多原生态系以外的生态进入,例如我们今天看到 BTC、 Dogecoin、Filecoin、ADA、Zcash 等等市值前三十的币种,其实都还缺乏比较优秀的跨链 AMA 对其兼容,甚至 Polkadot、Cosmos 生态也有更多的机会能够透过 Nervos 等志在多链兼容的公链的 AMM DEX 为他们的资产赋予更大的流通性。

未来如果有机会,可以再针对 AMM 中更细节的内容去更多细节的探讨,例如 Uniswap 的 AMM 算法怎么被 Balancer 、 Curve 进行改良;DEX 拍卖平台的比较,以及 AMM 的经营发展策略等等等都有足够的坑可以去深挖、开展成篇。

最后谢谢好友 Robin 的指教,本文已经尝试着用最白话的方式呈现 AMM 的机制,内容也欢迎各位给予批评和反馈

一些我觉得写的棒到不行的文章

  1. Haseeb 对 AMM 的解释,那个香蕉和苹果的联合曲线动画很经典
    What explains the rise of AMMs?. Imagine a college friend reached out to… | by Haseeb Qureshi | Dragonfly Research | Medium

  2. Hakka Fiance 的 CIC 对于 AMM 相关的文章都堪称是 AMM 文章中的精品
    淺談自動做市商 (AMMs) 機制:從 Uniswap 理解 Balancer | by Ethan C. | Medium

  3. Messari-the-past-present-and-future-of-decentralized-exchanges
    Messari - Bitcoin & crypto price, news, charts, and research

7 Likes