DEX & AMM

概念: What Is DEX, AMM Model, Uniswap, Liquidity Pools, Impermanent Loss, Aggregators, CEX vs DEX, DEX Comparison

:::section{mins=10} 什么是DEX :::

:::lead 去中心化交易所(DEX)通过智能合约,直接从你的钱包里兑换代币。2026年7月,DEX的现货交易量达到主要中心化交易所的24.1%,创下有记录以来的最高比值。 :::

:::p{html} 在Binance上买ETH时,你得先把钱交给交易所,之后App里显示的只是一个数字,代表交易所承诺还给你的金额。这一点我们在5.4 §1讲过。DEX省掉了这一步。你连接钱包、签一笔交易,智能合约就在同一个区块里收走你的一种代币,再把另一种代币转给你。有时在这之前还要多签一次授权(Approve),允许合约动用你的代币(3.3 §5),但授权本身不会转走代币,只是允许这个合约在授权额度内扣款。你不需要事先把资金交给交易所保管,扣走一种代币和收到另一种代币发生在同一笔交易里。 :::

:::p{html} 所以,通过开放合约兑换既不用注册,也不用KYC,合约会执行来自任何地址的交易。不过某个具体的网站或服务仍可能自己加限制,比如按国家屏蔽。上币不需要任何人批准,谁都可以在几分钟内给新代币建一个交易对。这既是DEX的优势,也是它最大的危险(4.3)。这里没有通常意义上的账户,交易所也就无从冻结,但单个代币的合约自己可以封禁地址,USDC和USDT就有这个功能。另外,合约只能在加密资产之间兑换。想用欧元或卢布买币,你得另找服务,比如交易所或法币入金通道,有些DEX界面会把它直接嵌进网站。 :::

:::p 那么,DEX怎么决定按什么价格成交?目前主流的做法有三种,实际中经常组合使用: :::

:::p{html}

  • AMM(自动做市商)。你的交易对手不是另一个人,而是一个由两种代币组成的流动性池,价格由公式算出。Uniswap、PancakeSwap、Curve和大多数现货DEX都是这样运作的。除了池子,专业做市商的询价(RFQ)报价也在一旁同时工作。
  • 订单簿。挂单撮合的机制和5.4 §3里一样,只是搬到了链上。在永续合约领域,这已经成了主流做法,头部永续合约DEX Hyperliquid和它的大多数竞争对手都用订单簿。以预言机定价的池子模式也依然活跃,比如GMX和Jupiter Perps。在这类交易所,你通常要先把资金存进交易所合约,再用这笔余额交易。
  • 意图(Intent)。你签的不是一笔现成的交易,而是一个愿望,比如“我付3,000 USDC,至少要换回0.99 ETH”,然后各个执行方争着来完成它。意图不是一种单独的定价公式,而是一种执行方式,执行方可以从池子、订单簿或自己的余额里调取流动性。CoW Swap和UniswapX就是这样运作的,详见§6。
:::

:::p 这个市场有多大?根据The Block和DefiLlama的数据,2026年7月DEX的现货交易量相当于它们追踪的主要中心化交易所(CEX)交易量的24.1%。而2024年几乎全年,这个数字都在10%以下。要记住,这是一个比值,不是市场份额。创纪录的那个月,恰好是CEX交易量跌得比DEX更狠的一个月。 :::

:::callout 想象城郊有一家自助洗车店。没有店员,只有一台投币机和一个洗车位。在你亲手投进去之前,硬币一直待在你口袋里,谁也拿不走,也没法“冻结”。机器不查身份证,凌晨三点和中午十二点一样照常工作。可要是你按错了键,想要泡沫却喷出了车蜡,你也找不到人投诉,因为钱已经进了机器。而且谁都可以在真机器旁边摆一台自己的,贴上一模一样的贴纸,它照样会收你的硬币。DEX也是这样。合约会老老实实执行你按下的每个键,但你走到的是不是对的那台机器,只有你自己能核实。 :::

:::keypoints{label="要点"}

  • DEX的关键区别在于你信任谁。你不再依靠一家替你保管资金的公司,而是依靠合约代码,以及自己签名时的细心。
  • 既然谁都能发代币,名称和Logo就证明不了什么。只有合约地址能说明代币是不是真的,每次买不熟悉的代币都要核对一遍。
  • 这几种定价模式与其说是竞争,不如说是互补。同一笔兑换可能经过流动性池、做市商报价或求解器(Solver),用户往往根本看不出走的是哪条路径。
  • 合约层面不需要KYC,并不等于DEX是匿名的。一个地址的每笔交易都会永久留在公开的区块链上,只要这个地址和交易所关联过一次,你的全部历史就一览无余。 :::

:::details{badge=深入 title="一次兑换背后发生了什么,风险藏在哪里"} :::p{html} 拆开一次兑换 :::

按下“Swap”按钮会触发一连串步骤,最好弄清每一步可能在哪里出错。首先,界面会构建一笔发往路由合约(Router)的交易,并填好参数:你付出多少代币、你愿意接受的最低到账数量,以及截止时间,过了这个时间交易就失效。钱包把交易展示给你,你签名后,交易就发到网络上。

接下来的一切都在同一个区块内完成。路由合约凭你之前给的授权划走你的代币,转进流动性池,池子把另一种代币发回,最后路由合约检查你收到的数量是否不低于最低值。如果等待期间价格变了,数量不够,整笔交易就会回滚,就像从没发生过。代币还在你手里,但这次尝试的Gas费照付不误。这种原子性是DEX最核心的保护:交易要么完全按你的条件成交,要么干脆不成交。

:::p{html} 最低到账数量由界面根据你的滑点容忍度算出。假设报价是1 ETH,容忍度设为0.5%,交易就只接受不少于0.995 ETH,这两个数字之间的差额,谁能抢在你前面推动价格,谁就能拿走。截止时间防的是另一种情况:一笔手续费很低的交易在队列里卡了几个小时,最后在完全不同的行情下成交。宽松的容忍度和很远的截止时间用起来省心,交易几乎不会回滚,但恰恰是它们让你的兑换成了机器人的猎物,这些机器人我们会在5.6里讲。 :::

:::p{html} 代币本身的风险 :::

:::p{html} 不是每个代币都像标准ERC-20那样运作。有的代币每次转账都暗中扣一笔手续费,有时高达几十个百分点,于是池子收到的比你发出的少。普通的兑换函数碰上这类代币会出错,所以Uniswap V2的路由合约甚至专门准备了一组标明支持“转账扣费”代币的函数。还有的代币只允许特定地址卖出。你能买进,却卖不回去,圈内管这种盘子叫貔貅盘(Honeypot)。怎么识别这类代币,我们在4.1 §3讲过。 :::

:::p{html} 另一些代币允许合约所有者封禁钱包、增发代币,甚至通过可升级代理把代码整个换掉。完全正规的资产也可能带封禁功能,比如USDC和USDT,它们的发行方会应监管要求冻结地址。买新代币之前,最好先在区块浏览器里打开它的合约,看看源代码有没有公开、所有者是谁、所有者能改什么。代币检测服务会自动做这些检查,还会模拟一次买入和卖出。新代币的其他危险信号,我们在4.3 §4详细讲过。 :::

:::p{html} 合约和界面的风险 :::

:::p{html} 你信任的是代码,而不是交易所。如果池子合约或接入它的模块有漏洞,钱可能落到攻击者手里,也没有人能帮你追回。所以大型DEX会持续多年做审计,并设有漏洞赏金计划(4.2 §5)。小型分叉项目通常这些都没有。 :::

DEX的网站和DEX本身是两回事。协议运行在区块链上,网站只是通往它的一扇门,而这扇门可以被人调包。2022年8月,攻击者劫持了curve.fi的DNS记录,在假冒网站上签过交易的用户损失超过50万美元。2023年9月,类似的攻击通过域名注册商打到了Balancer的网站,用户损失约23.8万美元。两次事件中合约都完好无损,浏览器地址栏里的网址看起来也没问题。所以最值得检查的不是网站地址,而是签名前钱包实际显示给你的内容。

:::p{html} 授权和签名的风险 :::

路由合约要划走你的代币,你得先给它授权。为了方便,界面往往会请求无限额授权,交易结束后它依然有效。如果合约本身是恶意的,或者后来被黑,它以后不需要你做任何操作就能把这些代币转走。Uniswap为此提出了Permit2标准:你只给一个公共合约做一次无限额授权,之后每个应用都要单独找你拿一个有期限的签名。

:::p{html} 签名也有自己的陷阱。许可签名(Permit)不花Gas费,看起来像一段无害的文字,钓鱼网站正因如此特别爱让你签它。攻击者拿到签名后,会自己发出交易,把代币拿走。由此得出的规则很简单:只要签名里提到授权、金额和接收地址,就要像对待普通交易一样仔细阅读。怎么检查和撤销授权,我们在3.3 §5讲过。 ::: :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s1 label="自我检测" correct=2 explanation=" The Block用DEX的月交易量除以一组选定的主要CEX的交易量。这是一个比值,而不是整个市场的份额。2026年7月,DEX的美元交易量其实是下降的,但CEX交易量跌得更多,所以这个比值创了新高。"} 2026年7月“达到CEX交易量的24%”这一纪录,实际上意味着什么?

  • 全球近四分之一的现货加密货币交易都是经由DEX完成的
  • 7月DEX的美元交易量创下了有史以来的最高纪录
  • DEX交易量达到主要CEX的24%,多因CEX下滑
  • 近四分之一的用户已经从中心化交易所转到了DEX上 :::

:::section{mins=11} AMM:池子如何自己定价 :::

:::lead 自动做市商(AMM)用一个由两种代币组成的流动性池和一条公式,取代了对面的卖家。在经典版本里,储备量的乘积x × y不能减少,所以每一笔买入都比上一笔更贵。 :::

:::p{html} 凌晨三点你按下“Swap”,是谁把ETH卖给你?在5.4 §3讲的订单簿里,对面必须有一个真人或做市商。AMM用不着他们。合约里存着一个池子,比如100 ETH和300,000 USDC,任何人都可以放进一种代币,取走另一种。问题只在于要放进去多少。 :::

:::p 答案来自公式x × y = k。这里x是池中ETH的数量,y是USDC的数量,k是两者的乘积,兑换后它不能变小。在我们的池子里,k等于3000万。想取走1 ETH?池子里会剩下99 ETH,要让乘积不变,USDC一侧就得涨到30,000,000 / 99,约303,030。所以你要付3,030 USDC。这些例子暂时不算手续费。没有手续费时乘积保持不变,算上手续费,你付的钱有一部分会留在池子里,k每成交一笔就略微涨一点。 :::

:::p{html} 仔细看这些数字:交易前池子的价格正好是3,000美元,你的平均买入价是3,030美元,交易后池子对ETH的估值约为3,061美元。这就是我们在5.4 §6讲过的价格影响(Price Impact)。如果一次买10 ETH,平均价格会跳到3,333美元。池子相对你的交易越小,公式的阻力就越大。此外还要加上池子的手续费,通常在0.01%到1%之间,归流动性提供者(LP)所有。 :::

:::p{html} 池子怎么知道ETH的真实价格?它不知道,公式只看得见自己的储备。如果中心化交易所(CEX)上ETH卖3,100美元,池子里是3,061美元,套利者就会在池子里买、在交易所卖,一直做到两边价格对齐。套利的原理我们在5.4 §7讲过。所以经典AMM并不知道外部价格,是套利把它和其他平台连在一起。如果价格先在别处变动,池子会随后跟上,这段滞后的代价由流动性提供者承担。§5会再回到这个话题。 :::

:::p x × y = k只是众多公式中的第一个。Curve为稳定币设计了一条在1美元附近几乎是平的曲线,Uniswap V3则允许把流动性集中在很窄的价格区间内。这些模型背后的数学,我们会在卡片6.2里详细推导。 :::

:::callout 夏令营里,一位辅导员开了个交换小铺,摆着一罐糖果和一盒贴纸。没有价签,只有一条规矩:每次交换之后,糖果数乘以贴纸数不能变小。早上罐里有100颗糖,盒里有100张贴纸,一张贴纸差不多能换一颗糖。到了中午,整个营房的孩子都在抢贴纸,盒里只剩50张,罐里却有200颗糖,再换一张贴纸就得付大约四颗糖。辅导员什么都没决定,也没研究过行情,是两个容器里的存量自己把价格推了上去。后来,一个大孩子发现隔壁营地的贴纸更便宜,抱回来一大摞,换走了糖果,两个营地的价格也就拉平了。 :::

:::keypoints{label="要点"}

  • AMM里没有人定价。价格来自储备之比,每次兑换都会改变这个比例,所以哪怕交易再小,成交后池子的价格也会变动。
  • 公式的阻力比交易规模增长得更快。你取走的储备占比越大,每多买一个单位就越贵,从设计上就不可能把整个池子买空。
  • 池子深度往往比费率更重要。在浅池里付0.05%手续费的兑换,可能比在深池里付0.3%的更贵,因为主要成本是价格影响。
  • 兑换前先看价格影响。如果超过两个百分点左右,就通过聚合器比较报价,它可以把交易拆到多个池子里。在同一个池子里拆成几笔交易,本身并不能消除价格影响,因为每一笔都从上一笔推动后的价格开始。 :::

:::details{badge=深入 title="池子的数学和其他公式"} :::p{html} 精确算出你能拿到多少 :::

由x × y = k可以推出一条适用于任何兑换的简单规则:往池子里放入Δx的一种代币,就能拿到y × Δx / (x + Δx)的另一种。手续费在放入时扣除,费率为0.3%时,只有你存入数量的99.7%参与计算。我们往那个100 ETH加300,000 USDC的池子里一次卖出10 ETH。公式看到的是9.97 ETH,池子付出300,000 × 9.97 / 109.97,约27,198 USDC。你的平均卖出价约为2,720美元,而不是3,000美元,池子的新价格则跌到将近2,480美元。

由此得出一条好用的经验法则,对任何规模的x × y = k池子都成立。如果你取走某种代币储备的比例为a,你的平均买入价会变成原来的1 / (1 − a)倍,交易后的池子价格则变成1 / (1 − a)²倍。取走1%的储备,平均价格上涨约1%,池子价格上涨2%。取走10%,平均价格就要高出11%,池子价格高出23%,而取走四分之一的储备,要比当前价格多付三分之一。所以,看一眼界面上的池子深度,你就能提前估算一笔交易的成本。

手续费也会改变不变量本身。没有手续费时,交易后的乘积完全不变;有了手续费,池子留下的代币会比公式要求的略多一些。如果按0.3%的费率从我们的池子里买1,000 USDC的ETH,k会从30,000,000涨到约30,000,300。每笔交易都让池子稍微膨胀一点,流动性提供者退出时拿走的手续费,正是这部分增量。

:::p{html} StableSwap与放大系数 :::

对于本应等值的代币,x × y = k很浪费:流动性分散在从零到无穷大的所有价格上,交易却集中在1美元附近。另一个极端是x + y = k,价格永远是一比一,完全没有价格影响。可一旦其中一种代币脱锚(Depeg),这样的池子马上会被掏空,因为所有人都会把贬值的代币倒进去,按旧汇率换走正常的那种。

2020年,Curve把两种公式结合了起来。储备大致均衡时,StableSwap不变量表现得像求和,储备严重失衡时,又平滑地过渡到乘积。池子在求和模式下能撑多久,由放大系数A决定。稳定币池的A值通常在几百到几千,储备均衡时,即便兑换几百万美元,价格也几乎不动。但如果某种代币严重脱锚,池子就会逐渐被它填满,它的价格开始沿着乘积曲线下跌。2023年3月就发生过这种情况:SVB出事后,USDC一度跌破0.90美元,几小时内Curve的稳定币池就塞满了USDC。

:::p{html} 加权池与集中流动性 :::

Balancer把公式推广为多个储备的乘积,每个储备取其权重次幂。80/20池的目标是让80%的价值留在一种代币里,20%留在另一种里,就像一个自动再平衡的指数组合。主代币的无常损失(Impermanent Loss)明显小于50/50池。所以,想为自家代币提供流动性、又不想拿出一半价值配稳定币的项目,常常选这类池子。

Uniswap V3用另一种办法解决了流动性分散的问题。区间内的头寸就像普通x × y = k池子的一个切片,只是虚拟储备远大于实际存入的数量。对于围绕当前价格的区间,效率提升约为1 / (1 − (pa / pb)^¼),其中pa和pb分别是区间的下限和上限。ETH在2,500到3,500美元区间时,提升约12倍;在2,970到3,030美元区间时,已经约200倍。按V3作者的估算,稳定资产交易对在极窄区间里的资本效率最高可达V2的4,000倍。代价和§4讲的一样:区间越窄,价格越容易跑出区间。

:::p{html} 专有AMM :::

2025年,Solana上兴起了一个新类别:没有自己网站的专有AMM(Prop AMM)。它们的价格由做市商的算法更新,交易者通过聚合器接入。一年之内,这类池子就成了市场中不可忽视的一部分。据DWF Ventures截至2026年9月的估算,它们占全球所有DEX日交易量的15%到27%,其中约90%的活动发生在Solana上。至于在Solana内部的占比,分析师的估计从三分之一到70%不等,取决于把哪些池子算作专有。说白了,这是专业做市商换了一身池子的外衣又回来了。

这类池子的结构和经典池子不同。它们没有事先公开的公式,做市商参照中心化交易所的价格,每秒几次用单独的低成本交易更新报价。因此池子几乎不落后于市场,套利者在这里赚钱也比在普通AMM上难。作为交换,交易者要信任一套通常闭源的算法,池子里的流动性也属于单一团队,随时可能撤走。 :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s2 label="自我检测" correct=0 explanation=" 买入后池子里剩45 ETH。要让乘积保持750万,USDC一侧要变成7,500,000 / 45,约166,667。原来是150,000,所以你要付约16,667 USDC。买走池子10%的储备,让你的平均价格上涨了11%。"} 一个池子里有50 ETH和150,000 USDC(k = 750万)。你买入5 ETH,不算手续费,需要付多少USDC?

  • 约16,667 USDC,平均每个ETH约3,333美元
  • 正好15,000 USDC,按池子当前价格3,000美元计
  • 约15,150 USDC,只比当前价格高出1%
  • 约18,750 USDC,因为价格按平方增长 :::

:::section{mins=9} Uniswap:定下行业标准的协议 :::

:::lead 按交易量计算,Uniswap至今仍是最大的现货去中心化交易所(DEX)。根据DefiLlama的数据,截至2026年9月中旬的30天里,它处理了约710亿美元的交易,超过排在其后的三家DEX之和,而且部署在40多条网络上。 :::

:::p 2018年11月,海登·亚当斯(Hayden Adams)推出了第一版Uniswap。此后几乎每个新版本都改变了DEX市场的运作方式: :::

:::p{html}

  • V2(2020年5月)。任意两种ERC-20代币之间都能建池,采用§2介绍的x × y = k公式,至今仍在运行。
  • V3(2021年5月)。引入集中流动性(Concentrated Liquidity),流动性提供者可以自己选择价格区间,资金利用率大幅提高(§4)。
  • V4(2025年1月31日)。所有池子都放进同一个合约,还可以给池子挂上钩子(Hook),也就是在兑换或流动性变动时自动执行的自定义代码。
:::

:::p 同样是截至2026年9月中旬的30天,V4的交易量超过了V3,大约是380亿美元对320亿美元。 :::

:::p 协议和网站要分开看。Uniswap协议是部署在区块链上的一组合约,你可以通过任何界面、钱包或聚合器使用它。app.uniswap.org只是其中一个入口,由Uniswap Labs公司开发。多年来,Labs一直对通过自家网站完成的兑换额外收取界面费。2025年12月,DAO通过了UNIfication提案,情况随之改变。Labs把界面费降为零,部分池子开启了协议费,收入用于销毁UNI,国库还一次性销毁了1亿枚UNI。 :::

:::p{html} 那么,一笔兑换实际是怎么完成的?你选好交易对和数量,界面会自动规划路径,有时一次经过好几个池子。签名之前,先核对三个数字:最少能收到多少、价格影响(Price Impact)和滑点容忍度(Slippage Tolerance)。滑点容忍度决定了最终成交价最多可以比报价差多少,超出这个范围,交易会自动取消。设得太宽容易招来机器人,详见5.6。Rabby这类钱包会先模拟交易,明确告诉你哪些资产会转出、哪些会到账。 :::

:::p{html} 兑换本身要花多少钱?“以太坊上什么都贵”的老印象已经过时了。据ethereum.org的数据,2026年5月Gas价格约为0.15 gwei时,主网上一笔兑换大约花费20美分,在二层网络(L2)上只要零点几美分。不过这只是某一时期的情况。Gas价格取决于网络的繁忙程度,经过多个池子的路径也比简单兑换消耗更多Gas。Gas价格如何形成,我们在3.3 §4中讲过。 :::

:::callout 吉他手带着自己的吉他和音箱来演出。一开始大家的声音都差不多,直到吉他和音箱之间多了一块效果器板。一个踏板加过载,一个加回声,还有一个只在副歌时打开。每个踏板接在信号链上的固定位置,改变经过它的声音,却不碰吉他和音箱。Uniswap V4的思路与此类似。所有池子共用同一个底座,钩子就像池子创建者接进信号链的踏板,有的在行情剧烈波动时调高手续费,有的把池子变成限价单。可要是有人在厨房桌上随手焊了个踏板,整套设备都可能短路,到时该追究的是踏板,而不是音箱。 :::

:::keypoints{label="要点"}

  • 协议和网站分离,一家公司关门也不会让协议停摆,但选择入口的责任落到了用户身上。现实中,连着真实合约的假界面比协议本身出故障更危险。
  • UNIfication把UNI代币和协议的交易活动绑在了一起。通过开启协议费的池子交易得越多,销毁的UNI就越多,UNI也就不再只是投票工具。
  • Gas费变便宜后,小额兑换的经济账也变了。一笔交易只要几美分时,选主网还是L2,越来越取决于你需要的流动性在哪里,而不是Gas价格。
  • 兑换中代价最大的失误很少和手续费有关。滑点容忍度设得太宽、在假网站上签名交易,造成的损失远远超过Gas费或池子费率。 :::

:::details{badge=深入 title="V4如何运作,钩子会在哪里出问题"} :::p{html} 一个合约管理所有池子 :::

在V2和V3中,每个池子都是独立的合约,建池就意味着部署新代码。V4把所有池子放进同一个PoolManager合约,池子只是它存储里的一条记录。建池成本因此大幅下降,跨多个池子的路径也不必在每一步把代币从一个合约转到另一个合约。

这要靠一种叫闪电记账(Flash Accounting)的机制。交易执行期间,PoolManager只记下谁欠谁多少,真正的转账在最后统一进行一次,这时所有债务会轧差成最终余额。如果最后账对不上,整笔交易就会回滚。这些中间记录之所以便宜,是因为用了瞬态存储(Transient Storage),它随2024年3月的Dencun升级进入以太坊。此外,V4重新支持原生ETH,兑换时不必再把ETH包装成WETH。

:::p{html} 钩子能做什么 :::

钩子是一个独立的智能合约,池子会在预先设定的时刻调用它,包括兑换前后、添加或移除流动性前后,以及建池时。钩子拦截哪些时刻,直接编码在它地址的最后几位里,所以建池之后这组函数无法更换。不过,函数本身几乎可以做任何事。

有人用钩子做动态手续费,行情波动时费率自动上调,减少流动性提供者的损失;有人做限价单和分时段买入(TWAP);有人做只对经过验证的参与者开放的池子;还有人拍卖区块内第一笔交易的权利,再把收入返还给流动性提供者。钩子甚至可以完全替换池子的公式,这时V4就成了一套公共基础设施,谁都可以在上面搭建自己的自动做市商(AMM)。Uniswap已经从一款成品变成了承载别人产品的平台。

动态手续费最能说明钩子在实践中怎么起作用。每次兑换前,钩子会查看最近几个区块里价格变动了多少,据此设定费率。行情平稳时,费率可以是0.05%,用来吸引普通交易者;行情剧烈波动时,可以升到0.3%甚至更高。价格跳动后赶来拉平价格的套利者要为交易多付钱,过去流向他们的一部分收益就留在了流动性提供者手里。普通交易者在平静时段几乎没有损失,剧烈波动时多付一些,但换来的是更深的池子,因为流动性提供者没有撤走。

:::p{html} Cork是怎么被攻破的 :::

问题在于,钩子代码不是Uniswap Labs写的,核心协议的审计也不覆盖它。2025年5月,一名攻击者从Cork Protocol盗走了约1200万美元的wstETH。主要漏洞出在Cork钩子的beforeSwap函数上。这个函数本应只允许PoolManager调用,却没有检查调用者是谁。攻击者用一个伪造代币创建了自己的Cork市场,带着精心构造的数据直接调用这个函数,协议便给他记了一笔根本不存在的存款。

第二个漏洞在Cork自身。就在某个市场滚动进入新周期之前,攻击者用一笔小额买入扭曲了计算出的价格比例,接着用极少的金额换到数千枚代币,再把它们赎回成wstETH。Uniswap的合约并没有被攻破,可对在这个池子里放了钱的人来说,这算不上什么安慰。可升级的钩子还有单独的风险。如果作者能替换代码,一个无害的模块可能在流动性进池之后变成恶意模块。

:::p{html} 如何检查带钩子的池子 :::

普通兑换的路径几乎总是由界面或聚合器自动规划。这很方便,但不能保证路径上的每个合约都经过审查,所以大额交易最好走知名界面,并看一眼交易经过哪些池子。向带有陌生钩子的V4池子添加流动性之前,先在区块浏览器里打开钩子地址,确认代码是否公开、是否经过审计、有没有所有者,以及所有者能否修改代码或参数。只要有一个问题没有明确答案,这个池子最好留给有能力专业评估风险的人。 :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s3 label="自我检测" correct=3 explanation=" Uniswap的池子是区块链上独立运行的合约,网站只负责组装交易并发送到网络。几十种钱包、聚合器和其他界面都在调用同一批合约,所以关掉一个网站不会影响池子的运行。"} 假设Uniswap Labs明天关闭app.uniswap.org,池子会怎样?

  • 池子会停止运行,因为所有合约都由网站控制
  • 流动性提供者的资金会被冻结,直到DAO作出决定
  • DAO必须重新部署合约,再上线一个新网站
  • 池子照常运行,通过其他界面仍然可以使用 :::

:::section{mins=9} 流动性提供者 :::

:::lead 池子里的资金来自普通用户,也就是流动性提供者(LP)。他们存入两种代币,分得一部分手续费。在一个费率0.3%的普通V2池子里,每天1000万美元的交易量能给所有流动性提供者合计带来3万美元的日收入。 :::

:::p 如果你手里有ETH和USDC,自然会想自己能不能当这个“交易所”。当然可以,毕竟§2里的池子就是有人存进去的,存钱的人能从每笔兑换中赚取手续费。 :::

:::p 在经典的V2池子里,你按等值存入两种代币,比如1 ETH和3000 USDC,换来一枚代表你池中份额的LP代币。手续费直接累积在池子里,退出时你连同手续费一起取走自己那一份。费率根据交易对来定: :::

:::p{html}

  • 0.01%,适用于价格几乎不会彼此偏离的交易对,比如USDC和USDT。
  • 0.05%,适用于ETH和USDC这类规模大、流动性好的交易对。
  • 0.3%,是大多数交易对的标准费率。
  • 1%,适用于冷门和波动极大的代币,流动性提供者要承担更大的风险。
:::

:::p 在V4中,费率可以设为任意数值,配合钩子(Hook)甚至能随时调整。 :::

:::p V3引入了集中流动性(Concentrated Liquidity)。你可以自己选定区间,比如ETH价格在2500美元到3500美元之间,资金只在这个区间内工作。集中让你投入的每一美元在活跃流动性中占的份额更大,但实际能赚多少,取决于区间内的交易量、手续费档位,以及别人在附近放了多少流动性。但窄区间并不保证收益,因为价格可能很快跑出去。一旦价格越过边界,整个仓位就会全部变成两种代币中的一种。价格高于上限时,你手里只剩USDC,因为上涨途中池子已经卖掉了你所有的ETH;价格低于下限时,你只持有ETH。这时仓位没有任何收益,直到价格回来或你重新设置区间。每个仓位都有自己的边界,所以V3用NFT而不是普通代币来表示仓位。 :::

:::p 实际能赚多少?用V2池子算最简单。一个费率0.3%的ETH/USDC池子,日交易量1000万美元,每天收取3万美元手续费。如果你的份额是0.1%,且手续费全部归流动性提供者,你每天应得30美元。V3和V4就不能这么算了。一笔交易的手续费只分给区间覆盖了成交价格的仓位,所以你的收入取决于你附近有多少流动性,以及交易发生在哪个价位。此外,UNIfication之后,Uniswap部分池子的手续费会有一小部分归协议。从任何收入里,你还得扣掉进出和调整区间的Gas费,以及最重要的无常损失(Impermanent Loss),这是§5的主题。 :::

:::callout 你和邻居在滑雪场合伙开了一家租赁店。每个人往公共仓库里放同样多的双板和单板,收银台每完成一次交换就收一小笔费用,按各自的份额分配。交换是自动完成的,交来双板的人拿走单板,反过来也一样,仓库里哪样少,价格就向哪样倾斜。普通雪季里,库存来回摆动,钱箱慢慢变鼓。想多赚一些,你可以只在高峰时段把自己的装备摆出来,也就是上午九点到十二点排队最长的时候。这样你的每个小时都更赚钱,可一旦滑雪的人流转到晚上,你的装备就只能闲着。V3里选择价格区间就是这么回事。 :::

:::keypoints{label="要点"}

  • 流动性提供者不管愿不愿意,都成了做市商。代币涨价时池子卖出他的代币,跌价时又买进,手续费就是这份工作的报酬。
  • 费率反映的是交易对的风险。波动代币的高费率不是送给流动性提供者的礼物,而是一种补偿,因为价格可能朝一个方向大幅波动,而且长时间不回头。
  • 集中流动性把被动投资变成了主动管理。如果不盯着区间,你的仓位可能大部分时间都在闲置,一分钱也赚不到。
  • 池子界面上显示的收益率通常是按过去的手续费算出来的。它不承诺未来的交易量,也没有计入无常损失,所以最好和单纯持有代币的结果比一比。 :::

:::details{badge=深入 title="成为流动性提供者的其他方式"} :::p{html} 只为一笔交易提供的流动性 :::

集中流动性催生了一种叫即时流动性(JIT,Just-in-Time)的手法。机器人在队列里发现一笔大额兑换,就把它和自己的交易打包成一组三笔,发给区块构建者。第一笔在当前价格附近极窄的区间里添加一个巨大的仓位,第二笔就是那笔兑换本身,第三笔把仓位撤回。

举个假设的例子。一笔500万美元的兑换进入费率0.05%的池子,支付2500美元手续费。当前价格附近,普通流动性提供者有2000万美元的流动性,机器人在一个区块内再加进1亿美元。手续费按活跃区间内的流动性比例分配,于是机器人拿走约2083美元,普通流动性提供者只剩约417美元,而不是2500美元。机器人只为一笔交易持仓,几乎不承担无常损失。它的成本是Gas费和分给区块构建者的那一份,所以JIT只在大额兑换上才划算。

:::p{html} 托管金库 :::

手动调整区间又慢又贵,于是出现了Arrakis、Gamma这类自动调仓的服务。你把代币存进它们的金库(Vault),算法替你移动区间,并从收益中抽取一定比例。这样能省时间,但你和池子收益之间多了一个需要信任的智能合约,也多了一层费用。还要清楚一点,每次调仓都会把无常损失锁定下来,因为离开旧区间时,仓位已经偏向了跌价的那个代币。在趋势行情里频繁再平衡,结果可能还不如设一个宽区间放着不动。

:::p{html} 无需存入资金的流动性 :::

2025到2026年间,出现了流动性提供者完全不用把代币转进池子的模式。其中最引人注目的是1inch Aqua,它于2026年7月在13条网络上公开上线。你对自己的代币授权(Approve),代币仍然留在钱包里。接着你创建和Uniswap类似的仓位,可以是全区间、集中区间,或是稳定币用的锚定型仓位,交易对、区间和费率都由你自己选。有匹配的兑换进来时,协议在一笔交易中从你的钱包划走所需代币,再把对手代币连同手续费一起转回来。

Aqua的核心思路是一份余额同时支撑多个仓位。按1inch自己举的例子,钱包里的10万美元可以支撑三个仓位,报价总额达30万美元,而且一分钱都不用借。这样流动性提供者的资金不会闲置,但也带来两个新问题。一是只要仓位还在,支出授权就一直开着,这正是我们在§1讨论过的风险。二是报价比真实资金多,一旦某个仓位用光了你的余额,其他仓位就无法成交。Barter团队的Superposition针对稳定币提出了类似的思路,但目前交易决策仍由团队自己做出,去中心化还只是一个承诺。

:::p{html} 永续合约交易所的金库 :::

永续合约(Perpetual Futures)交易所也有自己的流动性提供方式,那就是流动性金库。Hyperliquid上是HLP,Jupiter Perps上是JLP池,GMX上是GM池。你存入资金,通过金库成为交易者的对手方。在JLP中,交易者借用池里的代币加杠杆,JLP持有者获得这些市场75%的手续费。HLP则直接在订单簿上挂单,并接手被清算交易者的仓位。

这里的风险和自动做市商(AMM)池子不同。交易者亏的钱就是你的收入,他们赚的钱则由金库支付。只要交易者整体在亏,收益率就很好看,但一个运气好的大户就可能拿走相当一部分。2025年3月,一头巨鲸在ETH上开了超高杠杆仓位,随后撤出部分保证金,故意让仓位被清算,把亏本平仓的活儿留给金库,HLP因此损失约400万美元。同月还发生了一起利用低流动性代币JELLY的攻击,Hyperliquid的验证者紧急下架了这个市场,并按对金库有利的价格结算仓位。存款人的钱那次保住了,但也让人看清,一家去中心化交易所有多依赖一小群人的决定。此外,JLP的价值还会随池中SOL、ETH和BTC的下跌而缩水。 :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s4 label="自我检测" correct=1 explanation=" ETH上涨的过程中,池子一直在把你的ETH卖给买家。到区间上限时,ETH已经全部卖光,仓位只剩USDC。价格高于3500美元时,你的流动性不参与交易。协议不会自动移动区间,这要靠你自己或托管服务来调整。"} 你在Uniswap V3的ETH/USDC池子里设置的区间是2500美元到3500美元。现在ETH涨到了3800美元,你的仓位会怎样?

  • 仓位全部变成ETH,赚到的手续费翻倍
  • 仓位全是USDC,回到区间前不赚手续费
  • 协议已经自动把区间移到了新价格附近
  • 仓位被清算,提供者损失了部分存入的代币 :::

:::section{mins=12} 无常损失 :::

:::lead 无常损失(Impermanent Loss)衡量的是,代币放进池子和直接拿在手里相比,你落后了多少。在经典的 x × y = k 池子里,一种代币相对另一种的价格变化一倍,不计手续费时你大约落后5.7%。 :::

:::p 假设ETH价格为2,500美元时,你往池子里存入1 ETH和2,500 USDC,总共5,000美元。一个月后ETH涨到4,000美元。如果代币一直放在钱包里不动,你现在有6,500美元。那池子里还剩多少? :::

:::p ETH上涨的过程中,套利者不断按滞后的价格从池子里买走ETH,和§2讲的一样。最后你的份额里大约剩下0.79 ETH和3,162 USDC,合计约6,325美元。你赚了1,325美元,却比单纯持有少了175美元,也就是2.7%。这个差距就是无常损失。池子天生就在卖出上涨的代币、买入下跌的代币,遇到大行情,这样做总是不如按兵不动。 :::

:::p 在经典的50/50池子里,损失有多大只取决于一种代币相对另一种的价格变了多少倍,和涨跌方向无关。V3的窄区间损失更大,详见“深入”部分。下跌50%和上涨到2倍,损失完全一样: :::

:::p{html}

价格变化落后于持有
×1.25或−20%0.6%
×1.5或−33%2.0%
×2或−50%5.7%
×3或−67%13.4%
×5或−80%25.5%
:::

:::p 为什么叫“无常”损失?如果价格回到起点,差距就会消失,赚到的手续费照样归你。不过这个名字容易误导人。价格变动之后你一旦退出池子,损失就永久锁定了,而价格并没有义务回来。 :::

:::p 现实中这个问题有多严重?Topaze Blue和Bancor的一项研究考察了2021年5月5日至9月20日期间Uniswap V3的17个大型池子,它们合计占协议流动性的43%。这段时间里,流动性提供者(LP)赚到1.993亿美元手续费,无常损失却达到2.601亿美元。在被研究的1.7万个钱包里,有49.5%,也就是将近一半,如果只是拿着代币不动,结果会更好。由此可见,只有当手续费足以覆盖无常损失、Gas费和管理仓位花费的精力时,提供流动性才比单纯持有更划算。价格走势接近的交易对,比如USDC和USDT、ETH和stETH,几乎没有无常损失,但它们有另一种风险,就是其中一个代币脱锚(Depeg)。一旦某个稳定币或stETH价格下滑,池子会自动替你越买越多,买的恰恰就是这个代币。 :::

:::p 还要记住,无常损失只是拿池子和持有同样的代币作比较,并不反映你以美元计的盈亏。如果两种代币都跌了,有没有池子你都会亏钱。此外还有池子或钩子(Hook)合约出漏洞的风险,以及你托付管理仓位的那个服务本身的风险(§4)。所以无常损失只是LP风险清单上的一项,尽管它最容易被忽略。 :::

:::callout 海滨步道上有个卖雨伞和太阳镜的小摊,摊上装着一台自动补货机。它时刻让雨伞和太阳镜的总价值保持相等,哪样卖得多,就马上用另一样的钱把它补上。天气阴晴不定的那一周,这套办法挺好用。后来热浪来了,太阳镜一天比一天贵,小摊却还按昨天的价格卖,仓库里堆满了没人要的雨伞。热浪过去时,你手里是一座雨伞山和两三副太阳镜。要是当初只在后屋放一箱太阳镜,现在它已经值两倍的钱了。等雨季回来、雨伞涨价,差距会缩小。可要是在最热的时候把小摊卖掉,这笔差额就再也追不回来了。 :::

:::keypoints{label="要点"}

  • 只要池子里装着两种不同的资产,就会有无常损失。这不是哪个协议的漏洞,而是池子按固定比例持有代币的直接结果。
  • 价格小幅波动时,损失增长得很慢,价格大幅变动时,损失增长得很快。价格在窄区间里来回走时损失不大,只要交易量足够,手续费就能覆盖它,而长期的单边趋势侵蚀收益最快。
  • 手续费和损失的来源不同。收入来自交易量,损失来自价格偏离,所以对LP最有利的环境是交易活跃、但没有持续趋势。
  • 进池子之前先问问自己,不管两种代币按什么比例分配,你都愿意拿着吗?如果其中有一种你根本不想持有,这个交易对就不适合你去提供流动性。 :::

:::details{badge=深入 title="损失的数学、价格区间与LVR"} :::p{html} 公式从哪里来 :::

在x × y = k的池子里,ETH的价格等于y / x,所以价格P一旦确定,池子的储备也就完全确定了。池子里有√(k / P)个ETH和√(k × P)个USDC,整个仓位价值2√(k × P)。如果你只是持有最初的代币,它们的价值会随价格线性增长。价格变为原来的r倍后,把两者相除,就得到2√r / (1 + r)。r = 2时,结果是2 × 1.414 / 3,约等于0.943,5.7%正是这么来的。这个公式适用于没有手续费、存入时两种代币价值相等的池子。

从公式也能看出损失为什么是非线性增长的。价格变动10%,损失约0.1%;变成2倍,损失5.7%;变成5倍,损失已经到了25.5%。价格偏离不大时,无常损失不多,但只有交易量足够,手续费才能覆盖它,而长期的单边趋势侵蚀收益最快。

:::p{html} 为什么窄区间会放大损失 :::

在V3的集中流动性(Concentrated Liquidity)里,处在区间内的仓位就像某个池子的一小块,而这个池子的虚拟储备比真实储备大很多倍。手续费按同样的倍数放大,无常损失也一样。举个例子,ETH价格为3,000美元时开仓,等ETH上涨10%到3,300美元时再看。全区间仓位比持有落后约0.1%。2,500–3,500美元的区间落后约1.4%。2,800–3,200美元的窄区间落后约3.1%,而且价格已经冲出区间,整个仓位都变成了USDC。

所以,选窄区间等于押注价格会一直在区间内波动,并且手续费来得及弥补被放大了好几倍的损失。价格一旦越过边界,仓位就锁定了这个区间的最大损失,同时不再赚手续费。因此专业LP会根据交易对的波动率来设定区间宽度,而不是看自己想多赚多少手续费。

:::p{html} 不会消失的损失(LVR) :::

2022年,研究者Milionis、Moallemi、Roughgarden和Zhang提出了另一种衡量LP成本的方法,叫LVR(再平衡损失,Loss-Versus-Rebalancing)。它不拿池子和单纯持有比,而是和另一个投资组合比,这个组合持有相同比例的代币,但按市场价格做再平衡。差距之所以出现,是因为池子总按过时的价格交易,差价被套利者赚走了。LVR不是谁从你账户里扣掉的费用,而是一个经济学指标,衡量按滞后价格交易让你损失了多少。但和无常损失不同,价格回来了它也不会消失,而且市场每动一次,它就累积一点。

针对x × y = k池子,作者推导出一个简单的估算。一年下来,LVR大约是池子价值的σ² / 8,其中σ是年化波动率。ETH通常的波动率在60%左右,代入后是0.36 / 8,每年约为池子价值的4.5%。换句话说,这样的池子每年得给LP带来超过4.5%的手续费收益,才能跟得上再平衡组合。实际损失会略低一些,因为只有价差超过手续费时套利者才会出手,而且网络是隔一段时间出一个块,而不是连续出块。

这个估算可以帮你事先判断一个池子值不值得进。假设有一个手续费档位为0.05%的ETH/USDC池子,锁仓2000万美元,日交易量1000万美元。手续费每天带来5,000美元,一年约180万美元,大约是池子价值的9%。这是LVR估算值的两倍,所以LP是赚的。如果日交易量降到200万美元,手续费收益就只剩每年1.8%左右,池子开始跑输再平衡组合,尽管界面上显示的收益率仍然是正的。

:::p{html} 人们如何应对 :::

既然LP的钱流向了套利者,新的设计就想办法把它拿回来。基于V4钩子的动态手续费会在市场波动时提高费率,让套利变贵。CoW AMM通过拍卖分批结算池子的交易,过去被套利者拿走的盈余就留在了池子里。还有一些项目把每个区块里与池子做第一笔交易的权利拿去拍卖,再把收入分给LP。这些方法目前还没有一种成为标准,所以对被动LP来说,LVR仍是最大的隐性成本。

:::p{html} Yield Basis:用杠杆对抗损失 :::

对无常损失最不寻常的回应,来自Curve创始人Michael Egorov。他的协议Yield Basis自2025年秋天起在以太坊上运行,最先上线的是比特币。这个思路用的还是本节开头那个公式。普通池子里的仓位价值是2√(k × p),随价格的平方根增长,而单纯持有资产是线性增长,平方根和直线之间的差距就是无常损失。如果给仓位加上2倍杠杆,平方根相当于又被平方了一次,价值重新和价格成线性关系。

实际操作中,你存入比如BTC,协议就借入等值的稳定币crvUSD,把两种代币一起放进Curve池子,再把拿到的LP代币作为这笔债务的抵押品。文档里举过一个例子,仓位是1 BTC加10万美元。BTC从10万美元涨到15万美元时,这个仓位从20万美元涨到25万美元,和单纯持有完全一样,而普通池子里的仓位只会到244,949美元左右。此外,LP还能赚池子的手续费,而且是按两倍的流动性计算。

最巧妙的地方在于怎样把杠杆精确维持在2倍,因为价格一变,债务不变,抵押品却会涨跌。为此有一个单独的池子LEVAMM,只有杠杆正好等于2时,它的报价才和预言机一致。杠杆一旦偏离,报价就会偏离市场,套利者为了赚这个差价,会自己把杠杆推回原位。这样就不需要守护机器人(Keeper)或定时交易,但再平衡的成本由LP自己承担。

损失不会凭空消失,而是变成了其他成本。审计机构Statemind把仓位收益描述为池子收益的两倍,减去借款利率,再减去维持杠杆的成本。价格剧烈波动时,再平衡可能跟不上,成本就会上升。另外还有系统性风险。协议需要大量crvUSD,2026年2月,crvUSD的锚定承压,Curve DAO为此新增了一个紧急角色,可以临时暂停Yield Basis的池子。根据DefiLlama的数据,截至2026年10月21日,协议的流动性约为1.24亿美元,而2月时约为2.2亿美元。这类模型背后的详细数学,我们会在卡片6.2中拆解。 :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s5 label="自我检测" correct=2 explanation=" 无常损失取决于退出时和进入时的价格比。比值回到起点,你份额里的代币构成也回到起点,和单纯持有的差距随之消失,手续费照样归你。不过这是少见的幸运情况,价格并没有义务回来。"} 你把ETH和USDC存进一个V2池子。ETH先跌了一半,一个月后又涨回起始价格,这时你退出池子。你的无常损失是多少?

  • 5.7%,因为中途已经发生过一次50%的下跌
  • 11.4%,因为下跌和上涨的损失会叠加起来
  • 接近零,价格回来了,手续费也还归你
  • 50%,正好等于ETH这个月里的跌幅 :::

:::section{mins=9} 聚合器与意图 :::

:::lead 聚合器(Aggregator)会同时在几十个池子里寻找最优价格,还能把你的交易拆到多个池子里执行。截至2026年9月,Solana上最大的聚合器Jupiter在30天内处理了155亿美元的交易。 :::

:::p 还记得§2里从单个池子买10 ETH,平均价格被推高了11%吗?现在想象同样的ETH分散在不同去中心化交易所(DEX)的二十个池子里。每个池子只拿一点,哪个池子的价格都不会大幅变动,你的平均价格就会更好。聚合器做的正是这件事。 :::

:::p 你输入“10 ETH换USDC”,聚合器会检查Uniswap、Curve、PancakeSwap等平台的池子,把每多走一步的Gas费算进去,然后给你一条路线。比如60%的交易走一个池子,40%走另一个,其中一部分还要经过一个中间代币。在EVM链上,有名的聚合器有1inch和0x(它的前端叫Matcha)。Solana上的主要聚合器是Jupiter,不过2026年它在OKX和DFlow的挤压下份额明显缩水。 :::

:::p 再往前一步就是意图(Intent)。传统聚合器提前算好路线,可交易排队等待时价格可能变动,路线就过时了。在意图系统里,你签的不是交易,而是一张订单,内容类似“我出10,000 USDC,至少要换到3.2 ETH”。接下来由执行方,也就是求解器(Solver)或解析器(Resolver),比拼谁能把它执行得最好。胜出者提交交易并支付Gas费,但会提前把这笔成本算进给你的报价里,所以兑换并不会因此变成免费的。UniswapX、1inch Fusion和CoW Swap都是这样运作的。 :::

:::p{html} CoW Swap在此基础上又加了一个思路。协议把订单打包成一批,先寻找需求双重巧合(Coincidence of Wants)。如果同一批里Alice要用USDC换ETH,Bob要用ETH换USDC,两人的订单就可以直接撮合,不需要和外部池子交易。对手订单不是每次都有,找不到时,求解器会从普通池子里补足剩下的部分。同一批次内,每个代币对所有人只有一个清算价格,所以谁也没法靠调换交易顺序获利。这能让你免受普通的三明治攻击(我们会在5.6中讲到),但并不能防住所有类型的MEV。 :::

:::callout 一位裁缝做一套西装需要十米亚麻布。最近的供应商有货,但卖完前四米后,每多一米都要加价。有经验的裁缝会给五家店打电话,从一家拿四米,从另一家拿三米,剩下的去第三家买,同时心里清楚每多跑一趟都要花油钱。算下来,每米布都比在一家店全部买齐要便宜。有时候他的运气还会更好。隔壁的工作室正好想处理掉多余的亚麻布,换点羊毛,而裁缝手里的羊毛多得是,于是两家直接交换,连店门都不用进。 :::

:::keypoints{label="要点"}

  • 聚合器不创造新的流动性,而是把现有的流动性用得更好。市场在不同链、平台和池子之间越分散,它就越有用。
  • 意图改变了由谁承担执行风险。你只需设定自己能接受的结果,寻找路线、支付Gas费、应对执行过程中的价格变动,都交给执行方去处理。
  • 执行方之间的竞争,只有在执行方足够多时才能保护用户。如果几乎所有订单都由同一个参与者执行,你又回到了依赖中间人是否诚实的老路上,只是换了一个中间人。
  • 金额不大时,在大池子里直接兑换和用聚合器,结果几乎一样。只有当你的交易规模接近单个池子的深度时,差别才会明显。 :::

:::details{badge=深入 title="聚合器和求解器实际如何执行交易"} :::p{html} 聚合器如何规划路线 :::

在聚合器眼里,市场是一张图,代币是节点,池子是边。两个热门代币之间可能有上百个池子、上千条经过中间代币的路径,而且每个池子的价格影响(Price Impact)都是非线性的。在这种规模下精确求出最优路线太耗时,所以聚合器依靠启发式算法。它们挑出几个最深的池子,把交易拆成若干份,尝试不同的分配比例,并把每一份的Gas费折算成交易代币计入成本。

给你报价之前,聚合器会在链上当前状态下模拟这笔交易,确认结果和计算一致。但交易要过几秒甚至几分钟才执行,如果这期间有人动了某个池子的价格,原来的计算就不准了。唯一的保障是你能接受的最低到手数量,达不到时交易就会回滚。所以评价聚合器不看界面是否好看,而看在成千上万笔交易里,用户平均实际拿到了多少代币。

比较不同聚合器的报价时,要看扣除所有成本后你实际能拿到多少,而不是大字显示的汇率。有的界面把Gas费单独列出,有的已经从总额里扣掉了,而做市商的报价只有几秒有效期,等你签名时可能已经失效。如果路线经过陌生的池子,或者出现了你没想到的代币,最好把交易简化,哪怕汇率稍差一点。几百美元的交易,聚合器之间的差价通常还不如一次失误的代价大。

:::p{html} 意图系统里的拍卖如何运作 :::

意图改变了执行风险的归属。用户设定一个最低结果,如果价格变动,执行方要么照样满足它,要么订单干脆不成交。各个系统的拍卖方式不同。在UniswapX中,订单先进入一轮简短的密封报价拍卖,胜出者获得独家执行权,在以太坊上大约持续24秒,也就是两个区块。如果胜出者没能及时执行,就会启动荷兰式拍卖,给用户的价格从有利逐步滑向最低值,第一个觉得有利可图的执行方会接下这笔交易。

1inch Fusion同样采用荷兰式拍卖,但只有经过筛选、质押了1INCH代币的解析器才能执行订单。CoW Swap的做法不同。它把订单汇总成一批,求解器为整批订单一次性提交方案,谁能在用户最低价格之上给出最多的盈余,谁就胜出。在这三个系统里,Gas费都由执行方支付,但会计入价格,交易失败时用户没有任何损失。

:::p{html} 求解器都是谁 :::

求解器并不是什么抽象的执行方,而是一个个团队,同时扮演聚合器和做市商的角色,还带一点MEV机器人的味道。以太坊上的大型求解器之一Barter就是个好例子。收到订单后,它会在40多个流动性来源中寻找路线,包括自动做市商(AMM)池、其他聚合器、借贷池,以及Wintermute等做市商的私有报价。然后它自己提交交易,而且提交方式能防止机器人拦截。据团队介绍,截至2026年初,经过Barter的交易额已超过330亿美元,CoW Swap相当一部分订单流是通过私有报价成交的。

从中能清楚地看到,意图不是一种定价公式,而是一种执行交易的方式。哪里价格好,求解器就去哪里拿,可能是池子、订单簿,也可能是做市商自己的资产负债表。代价是集中化。如果大多数拍卖都被两三个求解器拿下,用户就又要依赖一小群中间人,只不过这些中间人技术更高明。

:::p{html} 市场正在如何变化 :::

聚合也在改变市场本身的结构。在Solana上,Jupiter自2021年上线以来累计路由了超过1.28万亿美元,但到2026年8月底,它在该链聚合器中的单日份额已降到68%,有些日子OKX拿走了多达37%的交易量。经过聚合器和求解器的流量越多,用户就越不清楚自己的交易到底在哪个平台成交,DEX本身也越来越像中间人的流动性来源。对用户来说这基本是好事,因为中间人在执行价格上相互竞争。 :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s6 label="自我检测" correct=3 explanation=" 三明治攻击靠的是交易顺序,机器人抢在你之前买入,你以更高的价格买进,机器人再在你之后卖出。在CoW Swap的批次里,一个代币对所有参与者只有一个清算价格,执行顺序也就不再重要。另外,订单不会进入机器人通常盯着的公开交易队列。这能防的是三明治攻击,而不是所有形式的MEV。"} 为什么在CoW Swap的同一批次里,机器人没法对你的交易发起三明治攻击?

  • CoW Swap只允许大户参与,机器人过不了审核
  • 批次里的每笔交易都按各自单独的滑点执行
  • 协议封禁了以太坊上所有已知机器人的地址
  • 每批中代币只有一个价格,交易顺序无关紧要 :::

:::section{mins=9} CEX还是DEX:什么时候用哪个 :::

:::lead 中心化交易所(CEX)和去中心化交易所(DEX)与其说是对手,不如说是互补。从法币入场、在深度订单簿(Order Book)上交易流动性好的币对,用CEX更顺手;想把资产留在自己钱包里、交易任意代币,就该用DEX。 :::

:::p 争论Binance和Uniswap哪个更好,就像争论火车和自行车哪个更好,答案取决于你要去哪儿。最清楚的比较方法,是按具体要做的事一项项对照。 :::

:::p{html}

任务CEXDEX
用法币买币可以,这是主要途径只能通过内置的第三方服务
BTC或ETH大额交易订单簿深,价差小可以,最好走聚合器
新币或小市值代币上币之后才能买流动性池(Liquidity Pool)一建好就能交易
永续合约(Perpetual Futures)有有,Hyperliquid等平台
资产托管交易所替你保管兑换时自己保管,存款模式下存放在合约里
注册和KYC必须合约层面不需要,但前端可能限制访问
与DeFi打通不能能,代币可以直接用在其他协议里
:::

:::p{html} 大多数人会先在受监管的交易所用法币买入稳定币(Stablecoin)或ETH,再提到自己的钱包里,网络选目标协议所在的那条链,很多时候是二层网络(L2,2.5),之后再从钱包出发使用DEX和DeFi。提币之前,先确认交易所支持提到这条网络,而且你要用的代币和协议在这条网络上确实存在。交易所只是入口,不是存钱的地方。为什么不该把资金在交易所放得比实际需要更久,我们在5.4 §2里详细讲过。 :::

:::p 永续合约则是另一番景象,基于订单簿的去中心化交易所在使用体验上已经和CEX相差无几。其中规模最大的是Hyperliquid,据The Block统计,2026年5月它的交易量首次达到所有CEX合约交易量的6.63%。永续合约DEX之间的份额每个月起伏很大,还要看统计时纳入了哪些交易所,所以某个具体日期的准确数字,最好去DefiLlama查。杠杆和清算我们放到6.6卡片再讲,现在只要记住,DEX早就不只是用来兑换(Swap)的地方了。 :::

:::p{html} 不过DEX仍有短板。在BTC、ETH这类波动大的币对上,单笔交易一旦到了几千万美元,大型CEX的订单簿通常更深,而DEX上的价格主要靠套利跟着CEX走。反过来,在DEX上通过深度池或做市商(Market Maker)报价兑换大额稳定币,有时反而更划算,所以要比较扣除所有费用后你实际到手的金额。无需许可的上币机制同样是把双刃剑,DEX上的新币陷阱遍地,从买了卖不掉的代币到典型的跑路(Rug Pull)都有(4.3 §4)。 :::

:::callout 拿城里的游泳馆和城外的湖来比一比。游泳馆有闸机,要凭身份证办卡,有固定的开放时间,救生员坐在高椅上盯着。好处是水很干净,池边直接标着水深。湖随时都能去,没人查证件,想游到哪边岸上都行。可那里没有救生员,也没人检查过湖底,水下哪里有树桩,只能你自己去发现。有经验的游泳者两边都去。在游泳馆学习和训练更方便,但要想住在水边、想往哪儿游就往哪儿游,只有湖能做到。 :::

:::keypoints{label="要点"}

  • CEX的主要风险来自把资产交给中间方托管。在DEX上,签什么、用哪个合约由你自己负责,此外还有协议代码和代币本身的风险。所以资金在交易所停留的时间越短越好,在DEX上则要格外留意自己签的是什么。
  • 套利把DEX和CEX的价格绑在一起,两边明显的价差很少能持续太久。如果某个代币在DEX上便宜得可疑,先确认是不是同一个代币,再看池子里的流动性够不够。
  • 永续合约搬到链上之后,大家才看清,拖累订单簿的从来不是去中心化,而是网络太慢。足够快的链一出现,这套模式不需要中介也能跑起来。
  • 从交易所提币时选错网络或地址,和兑换出错一样无法挽回。第一次往新地址或新网络转账,先转一小笔试试。 :::

:::details{badge=深入 title="交易量怎么统计,永续合约走向何方"} :::p{html} 为什么数字对不上 :::

不到三年,DEX和CEX的交易量之比涨到了原来的三倍左右,但具体数字很大程度上取决于谁来统计。The Block记录的最高值是2026年7月的24.1%。CoinGecko按自己的方法统计,早在2025年6月的Meme币热潮中就看到过24.5%的峰值,之后又回落到13%–14%。要弄清差距从哪来,分子和分母都得看。

分母是CEX的交易量,关键在于纳入了哪些交易所。只算数据经过核实的大型交易所,分母变小,比值就上升;把小平台也算进来,比值就下降,而其中一些平台的交易量被认为有水分。分子也有自己的问题,DEX上很大一部分成交来自机器人,包括套利者和三明治攻击(Sandwich Attack),它们把同一笔钱来回倒腾。经过聚合器(Aggregator)的交易很容易被算两次,聚合器一次,流动性池一次,所以DefiLlama把聚合器的交易量单独列出。看这类数据时,一定要弄清分母里放了什么,分子又是怎么清洗的。

:::p{html} 一笔交易到底花多少钱 :::

对普通用户来说,具体一笔交易的成本比任何交易量之比都重要。假设你买3000美元的ETH。在CEX上要付交易手续费,许多大型交易所大约是0.1%,也就是3美元左右,再加上一点价差,以及提币到自己钱包的手续费,金额视网络而定。在二层网络的DEX上,你付的是池子的手续费,ETH/USDC通常是0.05%,约1.5美元,再加上价格影响(Price Impact)和Gas费,而那里的Gas费连一美分都不到。几千美元的流动性币对,两边差别通常不大,决定因素不是手续费,而是这笔钱接下来要用在哪里。到了几十万美元的规模,起决定作用的是深度,这时值得把大型交易所订单簿、聚合器和做市商报价三处的最终到手金额比一比。回程的成本也别忘了算。如果之后还要换回法币,还得再付一次交易所手续费,加上提现到银行卡的费用,便宜兑换省下的钱可能就没了。

:::p{html} DEX上的永续合约 :::

合约市场的差距还要更大。据CoinGecko统计,永续合约DEX与CEX永续合约的交易量之比在2025年11月达到12%的峰值,背后是Lighter和Aster上的空投挖矿,交易者为了拿到未来的奖励拼命刷高交易量。此后去中心化永续合约的交易量明显下滑,正好说明激励能把统计数据吹得多大。

Hyperliquid能保住领先地位,靠的是另一种模式。它是一条独立的区块链,订单簿和撮合引擎直接在网络层运行,所以订单执行速度几乎和CEX一样快。HIP-3升级之后,外部团队只要质押50万枚HYPE,就能在Hyperliquid上开设自己的市场。市场创建者自己选择价格来源,并分得一部分手续费;如果市场因为创建者的失误出了问题,验证者可以投票销毁其部分质押。股票和大宗商品合约就是这样出现在Hyperliquid上的,2026年5月,这类市场的成交额超过620亿美元。

:::p{html} 边界正在模糊 :::

与此同时,两者的边界正从两头变得模糊。中心化交易所把链上交易直接做进自己的App,用户不用离开熟悉的界面,就能从Base或Solana上的流动性池买币。OKX的聚合器已经在Solana上和Jupiter争夺兑换业务。DEX这边则借助意图(Intent)、Gas抽象,以及用邮箱或密码代替助记词登录,在便利性上向CEX看齐。

对你来说,这意味着关键问题不再是选CEX还是DEX,而是弄清每一笔交易里钱由谁保管、谁能冻结它。如果代币在你自己的钱包里、由合约执行交易,那就是链上模式,哪怕按钮放在交易所的App里。如果余额是交易所显示给你的,那就是由中介托管,哪怕这笔交易随后被路由到了DEX。 :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s7 label="自我检测" correct=0 explanation=" 池子合约只接收代币,所以银行卡里的钱得先通过交易所或法币入金通道变成加密资产。只要交易所支持Base网络,直接提到Base就省掉了单独走一次跨链桥。DEX的流动性池要求代币放在你自己的钱包里。用交易所账户进不了池子,而能发到池子地址的也只有代币。"} 你想用银行卡买500欧元的ETH,存进Base上的流动性池。哪条路径最合理?

  • 在CEX买入ETH,直接提到你在Base网络上的钱包
  • 用银行卡直接付款给Base上的池子合约,让它自己买ETH
  • 把ETH留在交易所,用交易所账户给池子添加流动性
  • 通过银行转账把欧元直接汇到流动性池的地址上 :::

:::section{mins=10} DEX版图:各家占据哪块地盘 :::

:::lead 每家大型去中心化交易所(DEX)都有自己的地盘。Uniswap是全能型选手,Curve守住稳定币市场,PancakeSwap称雄BNB Chain,Aerodrome和Velodrome则在2026年10月22日合并为Aero,如今同时运行在七条网络上。 :::

:::p 既然Uniswap的现货交易量比后面三家加起来还大,为什么还会有这么多DEX?因为流动性会向特定的网络和特定类型的资产聚集,每个细分领域都长出了自己的交易场所: :::

:::p{html}

  • Uniswap。通用型DEX,支持40多条网络上的任意ERC-20代币,现货交易量排名第一。
  • PancakeSwap。BNB Chain上的主要交易场所,现货交易量排名第二,个别月份曾超过Uniswap。据CoinGecko统计,2025年6月BNB Chain代币交易火热,PancakeSwap在主要DEX中拿下了64.5%的交易量。
  • Curve。基于StableSwap公式,专做稳定币和等价代币的池子,比如USDC和USDT、ETH和stETH。Curve的交易量没那么大,但要在稳定币之间兑换几百万美元,它仍是最便宜的地方之一。
  • Aero。由Base上最大的DEX Aerodrome和OP Mainnet上的Velodrome合并而成。两者合计约占EVM网络现货交易量的17%,合并后的统一协议于2026年10月22日在七条网络上线。
  • Solana。这里的交易发生在Meteora、Raydium和Orca上,聚合器(Aggregator)Jupiter架在它们之上,承接了这条网络上大部分的兑换。
  • Hyperliquid。自建区块链,链上运行订单簿(Order Book),是DEX中永续合约(Perpetual Futures)的龙头。
:::

:::p 新手该从哪里入手?在EVM网络上日常兑换,用Uniswap或聚合器就够了;在Solana上可以先从Jupiter开始;稳定币之间的大额兑换适合用Curve。没弄懂§5之前,先别去做流动性提供者(LP),永续合约DEX最好留到6.6卡片再碰。 :::

:::p 还要提防仿冒站。每个热门DEX都有几十个分叉项目,名字和Logo都很像,有时甚至部署在同一条网络上。连接钱包之前,用你的书签或项目官方页面核对网址,别去点搜索广告。 :::

:::callout 交响乐团听起来浑然一体,可每件乐器都有自己的声部。小提琴几乎全程担纲旋律,定音鼓一停就是四十小节,只在高潮时才进来,低音提琴单独听谁也注意不到,可少了它,整个声音就散了。指挥从不会让小号去演奏竖琴的声部。DEX版图也是这样运作的。Uniswap几乎在每条网络上都奏着主旋律,Curve为稳定币稳稳托住低音,Aero在自己的主场Base上声音最响,聚合器则担任指挥,每一笔交易都由它决定谁该进来。 :::

:::keypoints{label="要点"}

  • 流动性会吸引更多流动性。大DEX价格更好,交易者就会过来,流动性提供者跟着交易者走,所以想在一条网络上挑战本地龙头非常难。
  • 资产类型和网络一样决定DEX的定位。稳定币兑换、新币交易和合约交易需要的机制各不相同,没有哪一家能在三个领域同时称王。
  • 在ve模型里,DEX代币成了争夺影响力的工具。谁握有投票权,谁就能决定奖励流向哪里,所以各个协议愿意花钱买这些票,把流动性拉进自己的池子。
  • 交易量排名靠前,既不代表安全,也不保证你这笔交易能拿到最优价格。价格取决于具体池子的深度,所以兑换前比较报价,比挑最有名的平台更重要。 :::

:::details{badge=深入 title="ve模型、流动性战争及其代价"} :::p{html} veCRV如何运作 :::

2020年,Curve首创了投票托管(Vote-Escrow)模型。持有者把CRV锁定一周到四年不等,换取veCRV。锁得越久,票数越多,锁满四年时1枚CRV换1枚veCRV,之后随着解锁日期临近,投票权重线性衰减。veCRV不能出售,CRV也只有等锁定期结束才能取回。

有了投票权,就能每周决定新增CRV的代币排放(Emissions)流向哪些池子,而把流动性吸引进池子的正是这些奖励。此外,veCRV持有者还能分到协议手续费;如果自己也提供流动性,还能拿到最高2.5倍的加速奖励。对稳定币项目来说,在Curve上有一个深度池,意味着自己的代币能稳住锚定、方便地换成USDC,所以这些选票值得争夺。

:::p{html} Curve战争与投票市场 :::

各个协议起初大量买入CRV并锁仓,后来发现租用投票权更便宜。Convex就是这样出现的,它汇集用户的CRV永久锁定,代表用户投票,再发放自己的代币作为回报。到2022年,大约一半的veCRV都通过Convex投票。再往上一层是Votium这类贿选激励(Bribe)平台,各协议在那里公开向Convex的投票权持有者付钱,换取他们为自己的池子投票。

第二个重要玩家是Stake DAO。它推出了流动性锁仓(Liquid Locker),由协议永久锁定CRV,再发给用户sdCRV代币,这种代币可以转账、出售,也能用在其他DeFi协议里。veCRV最别扭的地方由此得到解决,锁定的代币到期前取不出来,sdCRV却随时可以在市场上卖掉,只是有时相对CRV会有折价。据团队介绍,2026年春季约有1.2亿veCRV通过Stake DAO投票。Balancer、Frax、Pendle等采用ve模型的协议也适用同样的机制。

Stake DAO还运营着自己的投票市场Votemarket。需要流动性的协议为投给自家池子的选票悬赏,投票权持有者自己挑选为哪些报价投票。这一切都在合约里公开进行,任何人都能看到一票值多少钱。对普通CRV持有者来说,这些中间方把治理变成了收入来源,但交出选票的同时,他们也让出了对协议的一部分影响力,因为实际上谁出价最高,就是谁在投票。

假设一周流向某个池子的排放价值10万美元奖励,那么协议只要花更少的钱买到所需选票就是赚的。一票多少钱由市场决定,在争夺最激烈的时候,协议每花1美元贿选,通常能换来超过1美元的排放。这场竞赛后来被称为Curve战争(Curve Wars)。

:::p{html} ve(3,3)以及Aero带来的变化 :::

Velodrome以及后来的Aerodrome在这个思路上发展出了ve(3,3)模型。这里的一周叫一个纪元(Epoch),纪元结束时,投票者拿走所投池子的全部手续费和激励,流动性提供者则获得代币排放。这样一来,投给真正有交易的池子才划算,由此形成一个闭环,手续费吸引选票,选票把奖励导向池子,奖励吸引流动性,流动性又产生新的手续费。锁仓代币的持有者还会分到一部分新排放,以免自己的份额被稀释。正是这套模型让Aerodrome成为Base上最大的DEX。

Aero合并于2026年10月22日完成,AERO持有者获得新代币的94.5%,VELO持有者获得5.5%。分配比例依据此前52周的收入,Aerodrome为2.6亿美元,Velodrome为1500万美元。

合并的同时,Aero取消了ve(3,3)模型赖以运转的每周投票。锁仓头寸变成了sAERO,奖励改为持续分配。sAERO持有者把奖励预算投向他们预期能带来收入的池子,只要这一分配继续有效,就能分到这部分收入。池子的奖励按美元计算,上限可以设为其预测收入的若干倍,超出上限的部分干脆不铸造。这一改动直接针对ve(3,3)的最大弱点,即池子的交易活动撑不起代币排放。新设计是否奏效,接下来几个月就能看出来。

由此还能推出,如果ve(3,3)交易所的网站上某个池子显示200%的年化收益率(APR),这个数字的大头几乎总是来自交易所代币的排放,而不是交易手续费。奖励用一种持续增发的代币支付,领到的人往往马上卖掉,所以你按美元计算的实际收益,取决于你卖出时这个代币值多少钱。只有来自手续费的那部分收益才算可持续,前端通常会单独列一行显示。

:::p{html} ve模型的弱点 :::

ve模型也有自己的弱点。奖励用新铸造的代币发放,如果池子的交易量跟不上排放速度,持有者就会因稀释而亏损。冲着奖励来的流动性也会随奖励离开,所以被称为雇佣兵流动性。此外,权力会集中在积攒了大量选票的人手里,锁了好几年的代币在市场下跌时也卖不掉。

2023年夏天的事件很能说明问题。7月底,Vyper编译器的一个漏洞让攻击者从几个Curve池子里卷走了数千万美元,CRV价格随之暴跌。Curve创始人Michael Egorov曾以CRV作抵押,在多个借贷协议上借了大笔贷款,这下全都面临风险。这么大的仓位一旦被清算,价格会跌得更狠,于是Egorov赶紧通过场外交易把CRV卖给大买家来还债。选票价值押在单一代币价格上的模式,恰恰在大家最依赖它的时候暴露了脆弱。协议那次挺了过来,但这件事很好地解释了,为什么投资者评估ve模型时不只看收益率,还要看选票和抵押品有多集中。 :::

:::further{label="延伸阅读"}

:::quiz{id=q-5-5-s8 label="自我检测" correct=1 explanation=" StableSwap让曲线在平衡点附近几乎是平的,所以稳定币之间即使兑换几百万美元,价格也几乎不动。这类交易仍然值得通过聚合器比一比价格,因为Uniswap上也有很深的USDC/USDT池子。至于Hyperliquid,它主要做的是合约交易,而不是Ethereum上的现货稳定币。"} 某个DAO的金库需要在Ethereum上把200万USDC换成USDT,滑点越小越好。哪个平台正是为这类兑换而设计的?

  • Hyperliquid,因为它的订单簿是目前市面上最深的
  • Curve,它的StableSwap公式在1美元附近几乎不推动价格
  • 刚建的Uniswap V4池子,带一个会实时调整费率的陌生钩子(Hook)
  • Solana上随便一个手续费最低的Meme币发射平台 :::