无常损失通俗解释:流动性池、LP 代币与成本

用通俗的话讲清无常损失:x*y=k 流动性池如何运作、LP 代币与手续费是什么、损失从何而来,以及“添加流动性”任务前该计算什么。

CoinDropster 编辑团队 · 更新于:

无常损失通俗解释:它是你的代币放在流动性池里的价值,与你把它们留在钱包里不动的价值之间的差额。当一种代币相对另一种代币的价格发生变化时,这个差额就会出现,这也是“添加流动性”任务比看上去更贵的原因。下面依次说明:流动性池如何运作、损失从哪里来、存入前该算什么,以及周围还有哪些风险。

本文解释机制和成本的计算方法,不建议你提供或避免提供流动性。示例中的数字均为假设,仅作说明。文中没有任何价格或收益预测,也不保证任何奖励。这不是财务、税务或法律建议。

流动性池如何运作

经典的去中心化交易所(AMM)没有订单簿,也没有人类交易对手,而是有一个流动性池:一个存放两种代币的智能合约。兑换都与这个池子进行,价格遵循一条简单规则:两种代币数量的乘积保持不变,即 x * y = k。交易者取走一种代币时,必须放入另一种,两者的比例随之移动。池内价格就是这样跟随市场的:某种代币被大量买入,相对于交易对就会变贵,套利者再把价格与其他市场拉平。

池子由流动性提供者(LP)充实。他们按等值存入两种代币,换回 LP 代币,这是证明其池内份额的凭证。销毁 LP 代币即可取回自己的份额,但取回的是此刻池中的比例,而不是你开始时的比例。无常损失就存在于这个差别里。

LP 的收入来自每笔兑换的手续费:兑换金额中很小的一部分按份额分给提供者。手续费比例取决于具体的池子和协议。

假设示例:损失从哪里来

取一个整数的示意,与任何真实代币无关。池中有 10 个代币 A 和 1,000 个稳定币 S,即 1 个 A 值 100 S,k = 10,000。整个池子价值 2,000 S,假设你的份额是 100%(便于计算)。

假设 A 的市场价格翻倍,涨到 200 S。套利者会从池中取走 A,直到池内价格与市场一致。在价格为 200 时,条件 x * y = 10,000 给出大约 7.07 个 A 和 1,414 S。计算如下:

  • 在池中:7.07 个 A 按 200 S 计,加 1,414 S,合计约 2,828 S。
  • 如果只是持有:10 个 A 按 200 S 计,加 1,000 S,合计 3,000 S。
  • 差额:约 172 S,大约是持有价值的 5.7%。

这就是无常损失:在这个例子里,池子交出了一部分“上涨”的代币,换成了稳定币。有三点要记住。第一,损失是相对于“只是持有”来衡量的,而不是相对于零:仓位的金额可能增长,却依然落后于持有。第二,它是对称的:价格腰斩得到同样的比例,约 5.7%。第三,它只在一种意义上是“无常”的:如果价格回到起点,损失就消失;如果你在价格已变化时退出,损失就成为实际损失。作为对比,同样的模型下价格变化四倍时,差额为 20%:价格偏离越远,差额越大。

手续费的作用方向相反。要抵消示例中的 172 S,池子在你持有期间必须为你收取同样多的手续费。够不够取决于交易量,没人能提前知道。

集中流动性简述

在一些协议里,提供者选择的不是整个价格区间,而是其中一段。价格在区间内时,同样的资金参与更多的交易量,手续费因此增加,但对价格变化的敏感度也更高。价格越出边界后,仓位会完全变成两种代币之一,并在价格回来之前不再产生手续费。区间窄意味着单位资本的手续费更多、风险也更大,还需要盯着仓位并在必要时重新调整,而这又要付一次 gas。

无常损失之外的风险

  • 智能合约风险。池子就是代码。漏洞可能导致资金损失,与价格无关。审计能降低概率,但不能归零。
  • 代币风险。如果交易对的另一边是不知名的代币,它的价格可能跌到接近零,池中的流动性最终变成贬值资产。更糟的情况是:合约里有特殊规则、无法自由卖出的代币。
  • 授权。存入代币需要给合约授权。多余的和无限额的授权应当撤销,详见 关于撤销代币授权的文章。
  • 假池子和假网站。代币名称相似的池子或钓鱼界面看上去与真的一样。合约地址的来源要独立核实。
  • 税务影响。存入和取出在你所在的司法辖区可能被视为需要记录的事件;记录方法见 关于空投税务与记录的文章。

为什么“添加流动性”任务要花钱

项目有时把提供流动性写进标准,因为协议自身需要它。但对你来说,这是清单中最贵的任务之一:它需要的是资本,而不只是 gas。存入前要算的项目:

  1. 进出的 gas。授权、存入、可能的区间调整、取出。退出同样是一笔交易,在手续费高的网络上,可能吃掉小额仓位的相当一部分。
  2. 无常损失情景。用你自己的数字估算:价格向任一方向变化两倍会怎样,就像上面的例子。如果你无法接受这种损失,说明仓位太大。
  3. 代币的市场风险。你同时持有两种资产,每一种都可能下跌。这是与无常损失分开的风险。
  4. 机会成本。同样的资金本可以放在别处,或者留在钱包里。
  5. 持有时间。如果标准要求把仓位持有数周,损失和风险会在这段时间里不断累积。

这些项目加起来,就是一项任务的真实价格,应当拿它与你对可能奖励的估值比较,同时记住奖励并没有被承诺。进行这种比较的通用方法见 关于参与空投是否值得的文章;流动性任务与其他活动类型的关系见 关于空投任务类型的文章。

如何与目录结合

为任务提供流动性之前,最好先弄清项目处于哪个阶段。CoinDropster 目录中的项目页面会显示其状态:Potential、Confirmed、Snapshot、Verification、Reward available 或 Distributed。到了 Snapshot 或更后面的阶段,新的操作通常不再影响结果,为它们支付 gas 和仓位风险就没有多大意义。应用内带进度和截止日期的清单能帮你不漏步骤,状态变更跟踪则省去每天检查。资本方面的决定在你自己,应建立在自己的计算上,而不是别人的承诺上。查看跟踪中的空投 →