aurpal

无常损失是什么:BNB 放进池子,撤出来为什么少了

aurpal 编辑组 · 最近更新 2026 年 9 月
aurpal 指南标题卡:无常损失是什么:BNB 放进池子,撤出来为什么少了

放进去 1 枚 BNB,撤出来怎么只剩 0.8 枚多?

池子没出错,也没有谁偷偷拿走你的币。撤回来的 USDT 比放进去时多了一截,按当时的价格折算,钱包里的总值多半还涨了。它只是比「当初什么都不做、一直拿着」少了一点。少掉的这一点,就是大家常说的无常损失。

讲无常损失的文章,大多拿美元算价值差。可打开钱包,你最先看到的是币数:BNB 少了零点几枚,另一种币多出几百。这篇换个算法,按撤出来「还剩几枚 BNB」算一遍,再把撤池那天该一起算的几笔账摆在一起。池子里那一侧通常记的是 WBNB,不是原生 BNB,这层区别 钱包里的 WBNB 是什么 讲过,下文一律叫 BNB。以下内容根据官方资料核对,数字都是举例推算。

币数是池子按公式重新配的

两种币一进池子,就不再各算各的了。Uniswap 帮助中心说得很直白:流动性池的智能合约用 x*y=k 这个式子让余额保持恒定。x 和 y 是池里两种币的数量,不计交易手续费、也没人加减流动性时,两者的乘积 k 就不变。

外面市场上 BNB 涨了,池子里的价格不会自己跟上去。币安 FAQ「什么是无常损失?」那一页是这样解释的:套利者可以一直执行套利交易,直到池里的代币价格与更广泛市场的价格重新一致,而这会导致流动性提供者产生无常损失。落到你的池子里,就是有人往里放 USDT、把相对便宜的 BNB 换走。一来一回,池里的 BNB 越来越少,USDT 越来越多,乘积还是那个 k。

你加池时拿到的 LP 代币(有的池子给的是 NFT),记的是你占整个池子多少份额,不是几枚 BNB。撤出时按份额分两种币,PancakeSwap 中文文档的原话是「交易确认后,您将收到交易对中的两种代币」。池子这时是什么比例,你就按什么比例领回去。

所以 BNB 枚数变少这件事,只是看着吓人。它背后是另一种币同时变多,值得算的是两边加起来,跟一直拿着相比差了多少。

1 枚 BNB 配 600 USDT:七种价格各拿回几枚

先把假设摆清楚:存入 1 枚 BNB 和 600 USDT,假设存入那一刻 1 BNB = 600 USDT(举例价格,不是行情);不算期间分到的手续费,也不算 gas。之后 BNB 的价格变成原来的 r 倍。

按 x*y=k 推下去,撤回的 BNB 是 1/√r 枚,USDT 是 600×√r;跟一直拿着相比的差额是 2√r/(1+r) − 1。不想看公式,直接看表。

BNB 价格变成撤回 BNB(枚)撤回 USDT撤回合计(USDT)一直拿着(USDT)相差
300(0.5 倍,跌一半)1.4142424.26848.53900−5.72%
450(0.75 倍)1.1547519.621039.231050−1.03%
540(0.9 倍)1.0541569.211138.421140−0.14%
660(1.1 倍)0.9535629.291258.571260−0.11%
900(1.5 倍)0.8165734.851469.691500−2.02%
1200(2 倍,翻倍)0.7071848.531697.061800−5.72%
2400(4 倍)0.5120024003000−20.0%

表是本站 2026 年 9 月 28 日按上面的公式推算的,忽略了手续费和 gas,属于数学推导,不是任何平台给的数据。

最反直觉的是方向:BNB 涨,你拿回的枚数变少;BNB 跌,枚数反而变多。跌一半那一行,撤出来有 1.41 枚,币是多了,可每枚只值 300。只想「多攒几枚 BNB」的人,最容易在这一行看错账。

再看最后一列,涨跌两头都是负数,而且对得上:跌一半和翻倍,差额都是 −5.72%。币安那一页也强调过,无论价格朝哪个方向变,都会发生无常损失,它唯一关注的是相对于存入时点的价格比率。价格只在 ±10% 上下晃,差额在 0.1% 左右,几乎感觉不到;涨到 4 倍,就是整整两成。

这个 −20% 可以拿币安 FAQ 自己的例子对一下。那个例子里存入 1 ETH 和 100 USDC,占池子 10% 的份额;ETH 涨到 400 USDC 后,可以提取 0.5 ETH 和 200 USDC,合计 400 美元(不含手续费),一直拿着则值 500 美元,少了 100。价格同样变成 4 倍,少掉的同样是 20%。

「无常」两个字,撤出那一刻就没了

为什么叫「无常」?币安那页的说法是,资金池中资产之间的价格偏离最终可能反转。紧跟着还有一句提醒:反转并不一定会发生。Uniswap 帮助中心的写法差不多,价格可能回到你当初提供流动性时的水平,也可能不回;不回,这个差就是无常损失。

换成钱包里的话说:币还在池子里的时候,上表最后一列那个数跟着价格来回变,价格比率回到存入时的样子,差额也就回到零。你点下撤出、交易上链,拿回的就是那一刻池子里的两种币,差额从一个会变的数,变成一个定下来的数。链上交易发出去撤不回,撤完再想按原来的比例放回去,那是一次新的加池,起点价格也换成了新的。

这一步我们的看法是:账面上出现负数,本身不是撤的理由。你原本打算拿多久、这笔钱什么时候要用,比那个百分比更该拿来做决定。当然,价格会不会回来谁也说不准,这一点上面两份资料都写得很清楚。

撤池那天,三笔放一起算

上面的表故意没算两样东西。撤池前真要算账,得把它们加回来。

第一笔,期间分到的交易手续费。币安那页写的是,流动性提供者作为回报,会获得交易者向资金池支付的部分交易手续费,还说在许多情况下,赚取的手续费可以抵消损失,流动性提供者仍可获得收益。PancakeSwap 文档的说法是,添加流动性后「您将获得该交易对的交易手续费,并获得 NFT 或 LP 代币」。至于分成比例,我们没查到能引用的官方数字,所以这里不写;你自己的池子分到多少,以前端页面当时的显示为准。

第二笔,无常损失本身。就是上表最后一列,按你撤出那一刻的价格比率算。

第三笔,每一次上链确认付的 gas。每次上链确认都要付 BNB 作 gas。按 PancakeSwap 中文文档的加池步骤,先点「Enable」启用代币,钱包会要你确认;再点「Add」,钱包还要确认一次,加池至少两次。V2 池撤出时,先点「Enable」,文档用的词是钱包要求您「签署」,然后点「Confirm」再确认一次。签署那一步扣不扣 gas,文档没写,我们也不替它下结论。每次要多少 BNB,看当时的网络情况,可以拿 gas 费估算工具 算一下;钱包里记得留够原生 BNB,原因见 BNB gas 费要留多少?一笔大概多少钱。

三笔合起来,跟一直拿着相比,是这样一个粗算:

撤池得失 ≈ 期间分到的交易手续费 − 无常损失 − 加池和撤池那几次上链确认的 gas

本金越小,那几次确认的 gas 在这张账里占的比重越大。还有一种情况:撤池交易发出去却显示 Fail,gas 照扣、币还在池里,别急着连点,见 链上交易失败 out of gas 怎么办?常见报错对照。

设了价格区间的池子,多一种结局

有些池子加流动性时要你自己设一个价格区间。PancakeSwap 文档在这里写了一句:「尽管不建议这样做,您仍可以通过点击“Full Range”(全区间)按钮,向整个价格区间提供流动性。」

区间设窄了会怎样,以 Uniswap 文档对集中流动性的说明为例:价格走出仓位的区间后,这部分流动性不再活跃,也不再赚手续费;价格往一个方向走时,交易者要走其中一种资产,LP 手里另一种越积越多,直到整个仓位只剩一种资产;价格回到区间内,流动性重新活跃,才又开始赚手续费。Uniswap 帮助中心也提到,多数情况下,把流动性集中在一个价格区间,会增加发生无常损失的机会。

落到 BNB/USDT 上:区间卡在当前价上下很窄的一段,BNB 一路涨出去,你的仓位会变成全是 USDT,一枚 BNB 都不剩,出界这段时间也分不到手续费;跌出去则反过来,全变成 BNB。这和上面那张表是同一个方向,只是走得更彻底。

如果你只是想长期多拿 BNB,并不打算赚交易手续费,BNB 链上质押:收益从哪来、要锁多久 少了「另一种币」这一层变量:价格怎么走,你手里的仍是 BNB,它有它自己的规矩,那篇写了。双币池赚的是成交手续费,代价是币数跟着价格变。两条路摆在这儿,哪条合适,看你打算拿这枚币做什么。拿着 BNB 本身有哪些风险,另见 持有 BNB 的风险。

本文对照的三份资料(均于 2026 年 9 月 28 日打开核对):币安 FAQ:什么是无常损失?(页面标注更新于 2026-09-07)、PancakeSwap:如何添加/移除流动性、Uniswap 文档:集中流动性(英文)。

本文是一般性科普,不构成投资建议,也不评价任何池子值不值得参与。表中价格与结果都是举例推算,没有计入手续费收入和 gas;真实的撤回数量以你撤池时前端页面和链上记录为准。链上交易一旦发出无法撤回,加池、撤池前请核对交易对、数量和合约地址。


接着看

钱包里的 WBNB 是什么 · BNB 链上质押:收益从哪来、要锁多久 · 链上交易失败 out of gas 怎么办?常见报错对照 · gas 费估算(工具)

文中数字只取当天的官方页面并写明日期,拿不准的直说以官方为准。全站唯一一条币安邀请链接在注册教程里。署名:aurpal 编辑组