市场是在人类社会的协作体系中自然形成的,买家出价购买,卖家挂单出售,自然形成了订单薄形式的交易所;为交易所撮合交易,就是做市商的角色。最早的做市商在十七世纪的香料市场就出现了,香料的中介商户从一方购买,卖给另一方,赚取中间的差价。随着科技发展,「证券」的形态,从柜台纸质票据,到电子化系统,到现在尝试的「代币化」,可扩展性随之增强。
在一个订单薄模型中,参与的用户频繁挂单、撤单、吃单,每一笔订单需要计算时间序列、价格和数量等等,对订单资金流向也要记录;传统的中心化订单薄模式需要大量的计算开销,在极端行情中甚至可能出现服务器过载宕机的情况。
以以太坊为代表的底层区块链,每一笔交易都需要高昂的手续费开销。即使采用二层扩展技术(Layer 2s,如 Arbitrum),将每一笔订单的开销降低到几美分,对于高频交易需求,如做市商频繁挂单撤单,仍然有巨大的交易摩擦和阻碍。高性能区块链 Solana 上的 DEX Serum 尝试构建基于 Orderbook 的交易所,但交易量和深度还是难以和中心化交易所比拟。
以太坊最初定位为「世界计算机」,能够在其上构建各类应用,金融应用是最早出现的,DEX 的概念甚至随着以太坊的出现而诞生;2017 年 Etherdelta,DDEX 等第一代去中心化交易所,千万规模的融资,将 DEX 公平、透明的概念传播开来。但由于第一代交易所仅是模拟传统订单薄模型,且需要往合约充值或提现资金才能交易,高昂的链上开销以及用户体验问题,导致第一代交易所昙花一现。DEX 概念冷却,随后更适用于链上场景的 AMM (Automated Market Maker,自动做市商)模式的 DEX 开始登上舞台。
早在比特币出现之前,AMM 就被学术界有所研究,第一次提到 AMM 的是 2002 年 Robin Hanson 的研究《对数市场评分规则》,在非加密货币的语境里,关于 AMM 的研究还有《信息聚合》(2004),《预测市场》(2006),《贝叶斯模型》(2012)和 《博彩市场》(2012)。
AMM 应用在区块链上的想法最早是 Vitalik 提出,由 Hayden Adams 在 2018 年实现,后来也成为最大的去中心化交易所 Uniswap。在本篇报告中我们会介绍目前市面上主流的 AMM 模型,介绍他们各自的机制设计、优势和缺陷。
什么是 AMM?
简单来说,AMM 模式就如同一台自动售货机,对于一个交易对来说,AMM 同时销售交易对两边的代币,作为买方和卖方的对手方;流动性提供者(Liquidity Provider,简称 LP)按照规则为这台自动售货机提供一种或同时提供两种代币让售货机销售。交易者投入一种代币,根据自动售货机的规则以及当前两种代币的比例能够确定能够兑换出的另一种代币数量,从而完成交易。

交易完成后,由于售货机内部的代币比例发生变动,自动生成了新的价格。交易只能按照现价交易,因此很多基于 AMM 的 DEX 称为 Swap。
AMM 应用在区块链场景仅五年时间,从最早的 x*y = k 模型,涌现出数十种不同的模型,本文将从流动性需求,资金效率,价格影响等角度切入,对市场上公开的 AMM 模型做机制研究,其中包括已经被应用、被市场检验的产品,也包括最新提出的改进方案,希望能为相关业务的开发者提供一些启发。
通用 AMM 模型
基础 AMM 模型 – 恒定乘积模型
众所熟知的 x*y = k 的 AMM 模型被诸多 DEX 所采用,Uniswap V1 和 V2 也采用了这种设计。其中 Uniswap V1 于 2018 年上线,仅支持 ETH 交易对;Uniswap V2 在 2020 年 5 月发布,支持任意 ERC 20 交易对。
其中 x 和 y 分别表示「自动售货机」中两种代币的「库存」,k 为流动性参数,在每次交易过程中库存发生改变而 k 保持不变,每次流动性的添加和移除过程中 k 对应增加或减少;Uniswap V2 中 x 和 y 可以是任意的 ERC20 标准代币。代币在资金池中库存比例即为当前兑换价格,流动性提供也根据当前比例等比例提供。
代币的价格最终通过交易路由实现跨交易对交易,由稳定币作为锚定确定其价格,由套利者在不同交易池中套利维持价格平衡。如下图所示,交易者输入 A token 兑换 B token,线段长度表示交换的数量,资金池(合约)的状态从旧的状态更新至新的,即完成一次兑换(Swap),资金池的新代币比例即为新的价格。

优势
- 流动性全区间覆盖(0 到无穷),可以支持代币价格任意波动
- 流动性提供方式简单,无需主动进行流动性管理
- 支持任意 ERC20 交易对的创建
- 提供流动性后获得的流动性凭证(LP Token)标准化,能够嵌入其他 DeFi 应用,如做流动性激励,或作为抵押品参与借贷活动
缺陷
- 流动性分散,同等资金情况下滑点较大
- 提供流动性必须提供双边代币
- 仅能支持现价交易(swap),无法兼容限价订单
- (滑点大)容易遭受交易抢跑攻击(因此有滑点限制保护)
- 流动性提供者会遭受无偿损失,持仓会随交易发生变化
集中流动性 AMM – CLMM
Uniswap V3 提出集中流动性概念(Concentrated Liquidity Market Maker),允许流动性提供者自定义提供流动性的区间,于 2021 年 5 月上线主网。以 Uniswap V3 为例,为允许流动性提供者选择价格区间,Uniswap V3 将价格区间分割为无数个刻度(tick),刻度的步长在池子建立时和手续费一起设定,流动性提供者可以将流动性注入某个刻度或连续数个刻度中,也就是某个价格区间。由于不同流动性提供者选择提供流动性的区间和数量不一致,Uniswap V3 的流动性提供凭证由 NFT 来表征。

上图分别为 Uniswap V2,Uniswap V3 的流动性提供方式,同样数量的资金,在 Uniswap V3 上提供的流动性和价格深度高于 Uniswap V2,考虑到绝大多数情况下,价格并不会出现在 0 或者接近无穷的位置,而仅仅在某一个区间内波动,因此在 Uniswap V2 中大部分流动性是不被使用的;Uniswap V3 允许流动性提供者在某一区间提供流动性,改进了 Uniswap V2 的缺点,提高了资金使用效率。
优势
- 支持任意 ERC20 代币交易对
- 可以在当前价格的一侧铺设单一币种的流动性,或设置更加灵活的策略
- 相同流动性资金的情况下,相比 Uniswap V2 形式的 AMM 有更高资金使用效率
- 相比 Uniswap v2 形式的 AMM,在相同流动性资金的情况下,CLMM 能提供更好的交易深度,更低的滑点;甚至能够支持稳定币的交易场景
缺陷
- 需要主动管理流动性,避免价格出区间流动性失效,对于波动率更高的长尾资产并不友好
- 极端行情价格突破区间,区间之外流动性失效影响交易
- 流动性提供凭证为 NFT,难以和大部分 DeFi 协议兼容(一般 DeFi 协议都仅支持 ERC 20 代币标准)
- 相比于 Uniswap v2 无偿损失更高
- 仍然会遭受 MEV 和抢跑交易的攻击
Uniswap V2 vs Uniswap V3 现状对比
由于 Uniswap V3 的高资本效率,在 V3 推出之后交易量都集中在 V3 中。

但由于 Uniswap V3 需要主动的流动性管理,仅适合具有较大受众的主流资产,对于长尾资产的流动性创建和交易,场景仍在 Uniswap V2,并且在 Uniswap V2 中能方便集成流动性激励方案。下图中可以看到,大部分交易对创建都是在 Uniswap V2 中。在近期 Memecoin 浪潮中 Uniswap v2 的交易量相较 V3 有大幅度提升,也表明 Uniswap V2 是对长尾资产更加友好的流动性方案。

Uniswap V3 的版权在 2023 年四月到期,此后其他平台可以免费使用其开源代码。Quickswap,Pancakeswap 等去中心化交易所模仿其设计,都采用了集中流动性方案,但主要交易量集中在大类资产上。
订单薄 AMM – DLAMM/Liquid Book
Uniswap V2 和 V3 本质上都是连续流动性,价格可以是曲线上任意的点。而传统的订单薄模式本质上是离散流动性,从图像上来看,每个订单都是在某个价格点上的流动性,价格和价格之间不是连续的,而会至少有一个最小的刻度差。Uniswap V3 将价格区间分割为无数小区间来允许用户选择区间放置流动性,那是否可以将这些小区间进一步压缩到点,在每一个点上提供流动性,来实现订单薄模式的 AMM 呢?iZUMi Finance 提出的 DLAMM(Discrete Liquidity Automated Market Maker)就在这样的思路下被创建出来,并以此为基础在 2022 年 5 月发布了去中心化交易所 iZiSwap。Trader Joe 新提出的 Liquid Box 也是借鉴了这样的思路。

在 iZiSwap 在创建流动性池时,价格空间会被划分为一系列的价格点。除了这些点,价格没有其他取值。每一个点上的价格符合恒定和曲线,即 x + y = k,若交易能够全部在某一个价格点上执行(如订单较小的情况),则没有滑点。
DLAMM 在流动性提供方面采用了和 CLMM 类似的思路,流动性提供者可以选择在一个或数个连续的价格刻度上提供流动性。由于是离散流动性,DLAMM 兼容链上限价订单,本质上限价订单也是在某个价格点位的流动性,可以如上图 b 中所示,黄色为流动性提供者的流动性,蓝色为交易者的限价订单,会有不同的标记。当价格达到限价订单的位置时,限价订单成交后会标记为成交并从流动性池中移出。
优势
- 可以实现去中心化链上限价订单
- 相比 Uniswap V3,若订单较小,都能被某一价格的流动性满足,则完全没有滑点(如稳定币兑换,流动性一般集中在数个价格点上)
- 其他同 Uniswap V3
缺陷
- 包括限价订单,DLAMM 上的交易必须发生在设定的价格点上(在池子创建时按规则生成),用户无法设置任意的订单价格
- 发布限价订单之后,资金直接在流动性池中,成交之后需额外一笔交易将成交的订单取出
- 同一个位置的限价订单由于没有时间排序,若仅部分成交,成交的金额由先完成取出交易的用户获得
- 其他同 Uniswap V3
特定场景 AMM
Stableswap
在 DeFi 中有诸多价格一致、但来源和应用场景不同的价格锚定代币,他们之间的兑换也由于各种原因需求旺盛,典型的如稳定币之间的兑换,Liquid staking 中 ETH 的流动性衍生品等等。Curve 等 stableswap 也是在这样的背景下出现,Curve 的 V1 在 2020 年 1 月上线,并在相关生态中起到至关重要的作用。
在恒定和曲线 x+y = k 中,x 、y 的和保持不变,每次库存的改变,x 和 y 的变动都为 1:1,该曲线适合锚定代币,但由于极端风险情况,锚定代币价格可能出现大规模偏移,如稳定币脱钩,AMM 设计也需要考虑脱钩的情况,否则会有大量的流动性提供者遭受套利者攻击。

上述公式为 Curve Stableswap AMM 曲线的设计。Curve 允许多个币种之间兑换,xi 表示池中的 i 代币的库存,D 表征流动性池中代币在价格相等的时候的数量,是一个常数;n 表示池中代币种数。简单来说,该 AMM 曲线时恒定和曲线和恒定乘积曲线的结合,由 χ 作为池中代币库存平衡的指标。当库存出现大规模偏移,如某稳定币脱钩被大量抛售,此时 χ 会趋近于 0 ,此时整个公式变成了一个类似 Uniswap V2 的恒定乘积曲线,会有较大的滑点。当库存平衡时,代币应该能够 1:1 兑换,此时 χ 无限趋近正无穷,此时公式近似为恒定和曲线,代币之间实现 1:1 的兑换。

Source: Curve Whitepaper
优势
- 非常适用于锚定资产之间的兑换,或是固定比例的兑换,如 LSD 代币的兑换
- 流动性凭证为 ERC20,可以方便集成于不同的 DeFi 协议中
缺陷
- 缺乏灵活性;资产必须是固定比例锚定,无法有偏差,不适用于债券场景(价格相对稳定,但会随时间有小幅度变动)
Platypus 和 Wombat 也是 Stableswap,大致思路和 Curve 类似,将恒定和曲线和恒定乘积曲线结合,在公式中引入了负债率的概念来计算流动性池的资产偏离度,让合约设计能够更加简单,Gas 开销更低,也允许单币的流动性注入。
Curve V2 Tricrypto
在 Curve V1 的基础上,Curve V2 增加了内部预言机,根据内部代币比例调整价格,根据内部预言机的价格将流动性集中在新价格附近,相当于时一个动态锚定的过程,每一次动态更新都会有流动性分布的改变,于 2021 年 6 月上线。在交易端有动态的手续费调整,距离当前预言机价格越远手续费越高,从 0.04% 提高到 0.4%,以动态费率补偿流动性提供者遭受的较高的无偿损失。
在项目方设定流动性池时会需要是设定八个参数,关系到中心价格流动性集中程度、价格偏移时流动性深度、中心价格费率、价格偏移最高费率、初始价格、价格调整步长、调整时间等。
优势
- 降低交易价格附近的滑点,能够为代币提供较好的市场深度
- 无需外部预言机,也无需主动流动性管理
缺陷
- 由于内部预言机的滞后性,在极端行情下容易出现套利,因此更适用于波动相对较小的主流代币
- 无偿损失相对较高
基于外部预言机喂价 AMM
这类 DEX 有来自外部的价格输入,一般为预言机,合约的状态(包括价格、代币库存)都需要有其他外部账户主动触发,来对价格进行更新,因此这类 AMM 严格来说并不完全算「自动做市商」,但也是目前 DEX 正在大规模应用的,包括 DoDo、GMX,GNS,以及 Pika Protocol。这类算法有其适合的应用场景,也有其设计的缺陷。
DoDo 的自动流动性调整 Proactive Market Maker(PMM)
DoDo 的 PMM 通过预言机引入外部参考价格,将流动性集中在参考价格附近,于 2020 年 8 月上线主网。其价格计算会根据参考价格和流动性池中资产库存进行调整。其公式表示如下:

Source: DoDo Whitepaper
其中 p 为当前价格,i 为参考价格,k 为「滑点系数」,表示均衡过程的流动性提供集中程度,B 和 B0 分别代表当前库存和均衡库存(协议的负债)。库存偏移时,价格也会随参考价格偏移,直到回归均衡水平。
优势
- 引入外部价格输入,自动调整流动性,提高做市效率
- 相比于 Curve V2,通过外部定价重新部署流动性,可以单币提供流动性,且没有无偿损失
缺陷
- 考虑到库存风险因素,无法支持长尾资产
- 依赖外部预言机价格输入,无法实现定价
- 外部预言机价格偏移风险
- 价格输入滞后,存在套利空间
无价格影响杠杆交易 – GMX、GNS、Pika Protocol 等
用户以自己的资产作为抵押品,以流动性池作为交易对手方,根据外部预言机提供的价格执行交易,一般为期货交易或杠杆交易。GMX 允许用户现货交易。
交易根据预言机价格执行,没有滑点和对现货市场的价格影响。会根据交易订单的大小和当前流动性池代币比例的偏移程度收取,单次交易订单越大,流动性池比例越不均衡,费率越高,对于 GMX 费率最高达到 0.8%。
该类方案更适合高频交易场景,如杠杆交易、衍生品交易,可以提供高达数十倍的杠杆倍率,因此一般部署在高性能区块链网络,如 Arbitrum,Optimism Rollups 和 Avalanche
优势
- 能够支持高频交易场景
- 提供流动性没有无偿损失
- 流动性凭证为 ERC20 标准,可以和其他 DeFi 协议兼容
缺陷
- 价格为外部输入,无法实现价格发现
- 依赖外部预言机喂价,有操纵可能性
- 难以支持长尾资产交易
其他流动性部署方式改进
除了交易算法层面的改进,数个新型的 DEX 在流动性部署层面做了新的尝试,其中包括:
- Trader Joe V2 ,命名为 Liquid Book,较多参考 iZiSwap DLAMM 的设计,将每个价格点的流动性称为「bin」,作为流动性分布的单元,其流动性部署提供六种不同流动性形态的策略供流动性提供者选择,本质还是集中流动性的部署方式。此外还提供自动化流动性部署工具 Auto-pool 帮助用户根据市场价格自动再平衡流动性,无需用户手动管理。
- iZiSwap 提供流动性挖矿工具 Liquid Box,是针对 Uniswap v3 NFT 形式的 LP 的流动性挖矿方案,通过不同流动性激励模型来吸引流动性。
- Maverick Protocol 自动流动性放置机制,提供四种不同的价格跟随机制,流动性提供者的每一个流动性仓位,会根据其设定的策略,跟随市场价格做再平衡,从而能够更大程度保持交易有充足的流动性,和较低的滑点。
DEX 的终局之战
由于区块链的特性,大部分情况下 DEX 价格会滞后于 CEX,套利行为是 DEX 交易量的很大一部分,对于某些用户较少的区块链上的 DEX,套利交易量甚至超过总交易量的 80%,这部分套利者的收益也是流动性提供者的损失;因此 DEX 更高的收费以及流动性激励实质上是对流动性提供者承担风险的补偿,而交易者在其中获得交易的便利性,包括无需许可交易、任意兑换全链资产等。
不同 AMM 模型会适配不同的场景,目前来看并没有一个 AMM 模型能统一所有市场,开发者需要根据自身资产的特性和用户的交易需求选择合适的交易算法。
订单薄模型相对来讲缺陷更少,但由于高计算量的需求,在链上难以实现,同时订单薄也有主动做市的需求,长尾资产需要和做市商合作。目前链上订单薄的发展方向上,Sei Network 尝试通过底层内置交易撮合引擎来实现,来降低链上做市的成本,目前暂未上线,有待考察其可行性。其他订单薄模式 DEX 更像是 CEX,通过运行私链来实现订单薄,很难具有开放性。
DigiFT 作为符合监管的去中心化交易所,也尝试在 DEX 上构建合规的框架和功能,来接纳传统世界的金融需求。长期来看,DEX 必然向高资本效率发展,用最低的流动性最大程度承载用户,新的 AMM 模型,或是新的业务模式,如跨链 + 订单薄结合的模式等。
(声明:请读者严格遵守所在地法律法规,本文不代表任何投资建议)