从 v2 池子搬到 v3 池子,界面上是一个按钮,合约里是一串有严格顺序的动作。官方迁移合约把这件事写成了一笔交易,理解它的执行顺序,比理解两个版本公式的差异更能解释迁移当天你为什么会看到价格跳一下、为什么会有一小笔零头退回钱包。
第一步是烧掉旧份额。合约先把你授权的 v2 流动性份额从你地址拉进那对 v2 池子本身,然后调用池子的销毁函数,把份额换回两种底层资产。这一步没有区间概念:v2 的份额对应的是整条价格曲线上的比例持仓,销毁时就按池子当前的余额配比领回一篮子币,两种资产各拿一部分。到这里,你的仓位已经从凭证变成两种币,且这些币停在迁移合约的地址上,不在你手里。
第二步是按百分比切分。合约参数里有一个迁移比例,取值在一到一百之间,官方用它支持只搬一部分仓位的场景。两种资产分别按这个百分比算出要送进 v3 的数量,剩下的部分留在合约里稍后退回。这个设计让分批迁移成为可能,但也意味着你要理解比例作用在两种资产各自的到账量上,不是作用在仓位价值上——如果价格在你两次操作之间偏移,两次迁移实际搬动的资金结构并不相同。
第三步是授权。合约对两种代币分别向仓位管理器发起一笔额度授权,上限就是准备送进去的数量。这一步解释了为什么迁移这类看似一键的操作会要求你确认授权类签名:仓位管理器铸仓时要用转账方式把币收进去,需要额度。也正因为有这一步,任何在迁移工具上被诱导签下的、对未知合约的无限授权,都不能用迁移是一次性操作来安慰自己。
第四步是铸 v3 仓位。合约带上你选的两种代币、费率、上下价格边界、期望投入量、最低到账量、接收地址和一个截止时间,调用仓位管理器的铸仓函数。这里有两处关键约束:最低到账量构成滑点保护,如果铸仓实际需要的资产数量超过你设的下限,整笔交易回滚,前面所有动作一起撤销;截止时间则保证这笔交易不会在内存池里躺到价格面目全非之后还被打包。你在界面上调的滑点容忍,最终就落在这两个数字上。
第五步是退零头,也是这一步最能说明集中流动性的代价。因为 v3 的仓位只在指定区间内工作,v2 领回来的两种资产不一定会被全部用上:如果当前价格落在你选的区间之外,那一侧的资产根本进不了仓位,合约会把多出来的部分把授权清零并退回你的地址。合约代码里这一步还处理了授权残留问题——用不完的那部分会把额度改回零,避免账户里留下一条永久有效的授权。所以看到迁移后钱包里多出一小笔某种币,多半不是错误,而是区间和当前价格错配留下的残量。
从这条链路可以推出几件迁移当天该做的事。第一,选区间之前先看当前价格与流动性分布,若你选的区间把价格留在边界外,等于做了一次主动减仓:一部分资产被退回,仓位只剩单边暴露。第二,迁移会真实动用两个池子:销毁 v2 份额会把池子的余额配比往回拉,铸 v3 仓位则在另一个池子里改变深度,两笔冲击叠在同一笔交易里,你的成交价与两处的中间价都不会完全一致,别用静态报价当预期。第三,同一交易里协议版本切换也意味着费用口径切换:v2 是单一档费率,v3 按你选的费率档与 tick 间距计,未领手续费的累积方式随之改变,迁移前该先把 v2 那边未领的费用结清。
还有一处常被误解:这个合约不会替你处理已经在 v2 里锁进流动性挖矿合约的份额。如果你的 v2 份额正被某个激励合约锁着,得先从那类合约里领回,再走迁移流程;否则迁移在第一步转账就会失败。同理,如果这对代币的 v3 池子尚未创建或尚未初始化,铸仓那一步会直接回滚,需要先建池。
最后一层判断标准是值不值得搬。集中流动性的收益来自把资金压在有效区间,代价是需要定期调仓、承受跌出区间后的单边暴露,以及每次调仓的燃料和滑点。搬过去之后如果没有任何维护动作,长期表现可能不如留在 v2。一个务实的评估方法是:把你过去几个月在 v2 的实际手续费收入除以平均占用资金,再与 v3 在同等维护频率下的模拟结果比较,别拿别人晒出的高倍率区间当基准。
把动作顺序记成一句话:先烧旧份额、按比例切、发授权、铸新区间仓位、退回残量。这条链路没有魔法,每一段都在合约里明文可查,你能做的是在点确认之前把区间、滑点、截止时间和授权范围逐项核对。
本文只讨论合约机制与操作流程,示例数字不构成收益承诺,本文内容不构成投资建议;提供流动性可能出现费用不足以覆盖损耗的情况,迁移前后请核对链上参数并自担风险。

发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。