费率档位不是随便填:Uniswap v3 的费档由谁开启、怎么核对 图 1
费率档位不是随便填:Uniswap v3 的费档由谁开启、怎么核对 · 图 1

在 Uniswap v3 里建池子时要填一个费率,看起来像自由填写项,实际上不是。池子的费率必须取自工厂合约已启用的档位,而哪些档位存在,本身是治理与权限决定的结果。做市之前把这条链路看清楚,能省掉两类常见损失:一是建了个没有第二人加入的孤池,二是选了个与交易对波动不匹配的档位,长期收不到够付损耗的费用。

先看合约层。工厂合约维护两张映射:从费率值到该档位的 tick 间距,以及从代币对、费率、间距到池子地址。feeTier 取值为整数基点,只有先在工厂里把某个档位启用,才有资格用这个费率去创建池子;启用新档位的函数由工厂管理员权限调用。文档也写明,官方推荐的三档是万分之五、千分之三和百分之一,更多档位需要治理投票开启。于是费率不只是一个数字,它背后站着一个已经存在的 tick 间距配置。

这就是常被忽略的第二层:同一个费率档位绑定固定的 tick 间距。v3 把价格切成一格一格的 tick,池子只在离散的价格上记账,间距决定相邻可交易价格的最小间隔。间距越宽,同一费率下池子覆盖的价格区间越粗,单个 tick 的价格粒度越钝;间距越窄,价格分辨率越细,代价是同一仓位涉及更多格子、更多计算。选费率时其实同时选了价格粒度,官方把两者配对写进工厂,正是为了避免用户自由组合出病态配置。

第三层是同一档位的多个池子。给定一对代币和一个已启用费率,链上通常只允许存在一个对应的池子,但不同链部署、不同工厂实例下会出现地址不同的同名池。这就是假池与相似池的土壤:骗子可以用同一个代币对与同一个费率,在另一条链或用另一套工厂部署一个地址完全不同、流动性极浅的池子。核验办法只有一个——用官方工厂合约算出这个费率档位下的池子地址,或直接从官方工厂的 getPool 查询,别拿搜索结果或别人发来的地址当入口。

再看选错档位的代价。费率直接进了价格公式,档位高意味着每笔兑换给 LP 的补贴多,也意味着该池子对做市意愿的假设更高:波动大、价差宽的交易对适合高档位,紧跟挂钩的资产适合低档位。反过来,若在一个日内波动极小的资产对上开了高档位,价格影响费收入会被套利者拿走绝大部分,LP 长期收益甚至不如低位档加更密的流动性布置;而在剧烈波动的长尾对上只开低档位,则要靠不断调整区间来补费率不足,燃料和跟踪误差都会上来。

还有一个实务细节:费率档位与流动性分布的耦合。因为费率决定 tick 间距,档位选择间接决定了同样的资金能把价格带铺多密。这也是为什么同一个交易对在不同档位下的深度曲线形状不同:低档位池子往往价格带更细密,档位间跳转的燃料成本更高。用池子做量价判断时,最好把同交易对的不同费率池放在一起看,把成交量与深度放在各自档位内部比,跨档合并统计会得出误导结论。

建池前的核对清单其实很短。第一步确认这条链上官方工厂地址,用 getFeeAmountTickSpacing 查这个费率是否已启用;第二步用 getPool 查这个代币对与该费率是否已有池,有池就不该再建;第三步看这个档位在这条链上惯例配什么 tick 间距,与官方主链配置对照;第四步如果你计划的费率属于需治理开启的档位,先确认治理已经启用它,别指望一个未启用费率能被建出来。

最后是把机制放回策略层:费率档位是协议替你预先设定的一根杠杆,你能做的是在已启用的档位里挑一个与交易对性格匹配的,而不是发明一个新档位。真正的操作空间在区间选择、再平衡节奏和未领手续费的归集上,而不是在费率数字上做一次无人跟随的孤注。

本文只讨论合约机制与参数结构,示例数字不构成收益承诺,本文内容不构成投资建议;提供流动性可能出现费用不足以覆盖损耗的情况,决策前请核对链上合约参数与自身承受能力。

费率档位不是随便填:Uniswap v3 的费档由谁开启、怎么核对 图 2
费率档位不是随便填:Uniswap v3 的费档由谁开启、怎么核对 · 图 2