上一篇我们站在柜台外面换币,这一篇走到柜台里面。假设你手上有 10 个 TRX 和 100 USDT,打开一个 TRX/USDT 池子的添加流动性页面,旁边挂着一个不低的年化收益率。看着看着,脑子里已经开始安排退休,连退休后每天几点起床都想好了。
点下确认,你就成了 LP。LP 是 Liquidity Provider,意思是给兑换池提供库存的人。别人每在这个池子里换一次币,付的交易费里就有一份按比例归你。
听上去像存钱吃利息,账却完全不同。存款到期,拿回的还是那么多钱。LP 撤出时拿回的币数量会变,而且变的方向通常不讨喜,币涨了,你手里的它变少;币跌了,你手里的它变多。
这篇只想回答一个问题,做 LP 到底在赚谁的钱,又把什么让给了别人。结论先放在这里。LP 的收入是交易费,代价是价格变动时,池子会按落后于市场的价格把你的币换给套利者。交易费能不能盖过这块差价,才决定做 LP 是否比原样拿着更划算。下面用一只简化的池子,把这笔账从头算一遍。
池子是一个自动换币的摊子,你的钱就是库存
设想一个只交易 TRX 和 USDT 的池子。想买 TRX 的人往里放 USDT、取走 TRX,想卖的人反过来。没有人坐在柜台后面报价,价格由池子里两种币的数量决定。上一篇讲过最常见的规则,两边数量相乘的结果保持不变,所以谁取走一边,就得往另一边补足。
在常见的 V2 池子里,你按当前比例放进两种币,会拿到一份代表份额的 LP 凭证。它说明你有权按份额取回池中资产,本身不是平白多出来的一笔钱。把凭证的估值和背后的资产各算一次,就把同一笔钱算了两遍。

撤出时,你拿回的是那一刻池子里对应份额的资产。如果这段时间很多人买走 TRX,池子里的 TRX 少了、USDT 多了,你那一份也一样。没人偷拿库存,规则就是这样运转的。
可以把它想成机场里的换汇小摊。客人换走哪种钱,摊上那种钱就变少,这一点和池子一样。区别在于,真摊主会盯着外面的汇率随时改牌价,池子不会。池子只认自己库存的比例,外面行情变了,它的报价要等有人来交易才会挪动。下一节的损失,就从这个区别里来。
TRX 涨了一倍,你的仓位只涨了四成多
以下数字都是假设,不代表 TRX 的实际价格。开始时每个 TRX 值 10 USDT,你放进 10 TRX 和 100 USDT,合计 200 USDT。为了看清结构,假设整个池子就是这一份仓位,没有手续费,也没有别人加钱撤钱。两边数量相乘,10 × 100,等于 1,000。
后来外面的市场把 TRX 推到 20 USDT。池子不知道这件事,里面仍是 10 TRX 对 100 USDT,报价还停在 10 附近。谁先发现,谁就来池子里用 USDT 买便宜的 TRX,一直买到池内价格接近 20 才停手。这个人就是套利者。
买到哪里停,可以算出来。乘积要保持 1,000,USDT 数量又要是 TRX 数量的 20 倍,所以 TRX 数量的平方等于 1,000 除以 20,也就是 50。开平方约 7.0711 个 TRX,对应 USDT 约 7.0711 × 20 = 141.4214 个。
按新价格算,仓位值 7.0711 × 20 + 141.4214,约 282.84 USDT,比开始的 200 多了四成多。可如果当初什么都不做,原样拿着 10 TRX 和 100 USDT,现在值 10 × 20 + 100 = 300 USDT,涨了五成。两者相差约 17.16 USDT。
这 17.16 去了哪里,看套利者那边就清楚了。他从池子取走 10 − 7.0711 ≈ 2.9289 个 TRX,付进 141.4214 − 100 ≈ 41.42 USDT,平均每个约 14.14。拿到外面按 20 卖,值约 58.58 USDT,比付出去的多 17.16。在这个没有手续费的模型里,你相对持有少掉的钱,正好落进了套利者的口袋。
真实池子里,套利者要付池子手续费和网络费用,还得和其他人抢,价格也往往是很多笔交易一点点推上去的,不会由一个人一口吃完。这些会改变具体金额,但方向不变,价格每次挪动,池子都是那个按旧价出货的一方。

17.16 除以原样持有时的 300,约 5.72%,这就是这个模型里的无常损失。分母用 300 而不用最初的 200,因为它衡量的是比原样持有少了多少,账户相对本金赚没赚是另一个问题。钱包也不会另扣一笔叫无常损失的费用,它只体现在你拿回来的币上。
Uniswap 对无常损失的定义同样以原样持有为参照。记住这个参照物,很多收益截图的歧义就能拆开。赚到交易费,和整体跑输持有,完全可以同时发生。
这个差距只和价格变了多少倍有关。价格变成原来的 r 倍时,无常损失比例等于 1 减去 2√r ÷ (1 + r)。代入 r = 2,2 × 1.4142 ÷ 3 ≈ 0.9428,差距约 5.72%,和上面一步步算的一致。涨到 1.5 倍时约 2.0%,涨到 4 倍时是 20%。价格走得越远,差距涨得越快。
跌一半时,同一块差距换了个方向
把假设反过来,TRX 从 10 USDT 跌到 5 USDT。这回是套利者从外面低价买 TRX 卖进池子。TRX 数量的平方等于 1,000 除以 5,也就是 200,仓位变成约 14.1421 TRX 和 70.7107 USDT,总值约 141.42 USDT。原样拿着则是 10 × 5 + 100 = 150 USDT。
两者相差 8.58 USDT,比例还是 5.72%,因为跌一半和涨一倍在公式里是对称的。套利者往池子卖进约 4.1421 个 TRX,拿走约 29.29 USDT,这些 TRX 在外面只值 20.71 USDT,差出来的 8.58 又归了他。
这次两种做法都比最初的 200 少,但 LP 手里的 TRX 从 10 个变成了 14 个多。市场不断卖出 TRX 时,池子按规则把它们接了下来。币越来越多,看着像赚了,其实是一路在接下跌的那一边。
无常这个名字听着很温柔,仿佛耐心等一等,损失就会懂事地离开。在最简模型里,价格回到起点,差距确实会消失。但价格没有义务回来,你也不一定等得起。在差距存在时撤出,它就实实在在落在你拿回的币上。不撤出也不等于没发生,只是账还没结。
如果你特别看好 TRX,希望它上涨时自己仍拿着原来的数量,那做 LP 和直接持有是两种方向相反的选择。LP 会在上涨途中一点点卖掉它,下跌途中一点点接回来。
手续费要收多少,才补得上这块差距
现在把手续费加回来。费率 0.3% 是 V2 池子常见的档位,但交易者付的钱不一定全归 LP。拿 SunSwap V2 来说,撰写时每笔收 0.3%,其中 0.05% 用于回购销毁 SUN,剩下的 0.25% 才归 LP,见SunSwap 的回购公告,具体以官方当前参数为准。按这个比例,每有人换 1,000 USDT 的币,约 2.5 USDT 留给 LP,按份额分。在常见的 V2 池子里,这笔费用通常直接加进池子库存,不会单独打到你钱包里,撤出时随份额一起拿回。
回到涨一倍的例子。要追平原样持有,手续费至少得补上 17.16 USDT,相当于本金 200 的约 8.6%。池子大小不影响这个比例,换成大一点的池子更贴近现实。假设整个池子总值 20,000 USDT,你的 200 占 1%,那池子总共要收约 1,716 USDT 的手续费,你才分得到 17.16。按 LP 实际分到的 0.25% 倒推,这段时间里池子要成交约 68.6 万 USDT。价格走得更远,这个门槛还会更高。
反过来,如果累计净手续费只有 10 USDT,简单加上去是 282.84 + 10 = 292.84,仍比原样持有的 300 少。这里只是近似,真实的手续费进了池子以后也会参与后续的换算,需要按具体机制计算。
所以评估一个仓位,至少要摆三张账。第一张记下投入时的币数和价格。第二张算原样持有到今天值多少。第三张是实际仓位价值,加上已领和未领的手续费与奖励,再扣掉操作成本。只看第三张里的奖励栏,等于开店只报营业额,不报进货成本和库存。数字看着热闹,老板钱包未必高兴。
如果净手续费确实超过了差距,做市就跑赢了持有。这里不预设一定亏或一定赚,只是先定一个公平的比较方法。没有参照物,任何绿色数字都能被当成成功。
页面上的高年化,常常是把一天拉成一年
上一节算出了需要多少手续费,页面上的年化数字其实就是在描述手续费收得有多快。问题在于它常常是短期结果的换算。池子今天交易特别活跃,费用多,页面就可能把这一天的速度乘成一年。
这像早餐店某天排了长队,老板把这一天的利润乘 365,拿去决定明年开多少分店。行情、活动、资金流入都会变,年化一高,更多 LP 会涌进来,同样的手续费被更多人分,每份就薄了。
有些页面还把激励代币算进年化。奖励领了多少枚、按什么价格估值、什么时候能领,各是一个变量。奖励币价格下跌时,昨天截图里的高收益不会替今天补差价。
APR 和 APY 也要分清。APR 一般按不复利算,APY 则假设收益按某个频率再投入。用纯算术举例,假设每月固定赚 1%,不复利一年是 12%;每月连本带利再投入,是 1.01 的 12 次方减 1,约 12.68%。真实池子的回报不会固定,这组数字只说明两种口径的差别,不代表收益预测。
小额仓位还得算复投的成本。如果一次领取、兑换、再加仓花的费用已经超过那次收益,复投越勤,本金越少。页面按理想条件算出的 APY,不一定是你照着操作能拿到的结果。
V3 区间让收费更集中,差距也来得更快
上一篇讲过 V3 的价格区间。作为 LP,你可以只在某一段价格范围里提供资金。把钱集中在当前价格附近,同样的本金能接住更多成交,分到更多手续费。代价是价格变动时,库存换手也更集中,上面算的那种差距会被放大。
区间也不是越窄越聪明。价格一旦涨过上沿,你的仓位会全部变成 USDT,相当于 TRX 在上涨途中被卖光;跌破下沿,则全部变成 TRX,整段下跌都接住了。出了区间,仓位不再参与交易,也不再收手续费。店还开着,客人已经去了另一条街。

所以下跌时挂一个窄区间,并不能当成自动抄底。价格可能很快穿过下沿,仓位变成满手下跌的那种币,随后连手续费也停了。本来想收过路费,最后变成守着库存等价格回来。
SUN V3 的说明把区间仓位称为非同质化头寸,通常用 NFT 表示。这里的 NFT 是仓位凭证,和收藏头像没什么关系。每个仓位的区间不同,所以不能像 V2 凭证那样按数量互换。
价格回到区间后,仓位会重新开始收费。你也可以自己挪区间,但挪一次就要撤出、必要时兑换、再重新加入,每一步都有网络资源消耗和价格影响。频繁调区间,手续费赚了几块,操作费花了更多,并不稀奇。
也正因为区间的存在,前面 5.72% 那个公式不能直接套到 V3 上。区间越窄,同样的价格变化造成的差距越大,出区间后的持仓也完全不同。先把最简单的模型弄懂,再按具体区间去算,别让一个熟悉的数字盖住新的条件。
稳定币池,波动小也不等于没有风险
两边都是接近 1 美元的稳定币时,价格比例平常几乎不动,前面那种差距确实小很多。但稳定币自己有发行方、储备、兑付和合约方面的风险。稳定是它努力维持的目标,数学并不保证。
2023 年硅谷银行出事期间,USDC 一度脱锚。Circle 当时披露有 33 亿美元储备存款在该行,后来说明这笔资金能够取回。Circle 的公告记录了这段经过。
放到池子里看,当市场担心其中一种稳定币,大家会把它换成另一种。池子照样按规则接单,结果 LP 手里积累的,恰好是市场正在甩掉的那一种。这和前面 TRX 下跌时的机制一模一样,只是平时价格太稳,让人忘了它存在。
原本想用两种稳定币减少波动,脱锚时却可能接住更多走弱的那一边。所以看稳定币池,除了平日价格贴不贴近 1,还要了解发行方、储备和兑付方式。过去一直很稳,回答不了极端情况下谁来承担损失。
加入之前,先把退出流程走一遍
先核对两个代币的合约地址、池子版本、费用档位和自己选的区间,再看授权给了哪个合约。你在哪个页面加流动性,和资金最终进入哪个合约,不一定是同一个直观的地址。第六篇讲的授权习惯,在这里一样适用。
加完流动性,钱包首页可能突然少了一大笔余额。先去对应协议里查看仓位,别因为普通代币栏里看不到,就认定资产丢了。反过来,钱包里显示一张凭证,也不能证明底层资产安全,凭证值多少,取决于它最终能取回什么。
如果再把 LP 凭证存进奖励合约,关系又多一层。原始代币在池子里,份额凭证在奖励合约里,钱包里可能只剩一条存入记录。退出时要按顺序先取回凭证,再移除流动性。别对着空空的钱包重复授权、重复入金。
V3 仓位还要分清减少流动性、领取手续费、取回资产这几个操作,具体流程看所用界面。看到领取,不代表本金也一起出来了;待领取的余额,也不全是新增的收益。
第一次只是学习的话,可以先在纸上算几种情形。价格涨一倍、跌一半、稳定币脱锚、区间被跑出去,各自会拿回什么。哪一种你说不清楚,哪一种就是还不该急着投钱的地方。
回到开头那个问题。LP 赚的是换币的人付的手续费,让出去的是价格变动时被套利者拿走的那段差价。能赚,是因为你提供了库存,也承担了库存被动换手的后果,并没有什么银行一直没告诉你的秘密按钮。把这两边都算清楚,再看那行年化数字,就不会急着替自己安排退休了。