You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何两个Uni V3池字节码存在差异?如何通过字节码验证Uni V3池身份?

为什么同工厂部署的Uni V3池运行时字节码不一致

这是Uniswap V3的原生设计导致的,不同V3池的运行时字节码本身就会存在差异,你并没有操作错误,核心原因有两点:

  • Uni V3池合约在编写时,将token0、token1、fee、tickSpacing这四个池子独有的参数定义为了immutable类型,这类参数不会存在合约存储中,而是会在合约部署的时候直接写入运行时字节码的固定位置。每个池子的这四个参数都不相同,最终生成的运行时字节码自然会存在差异。
  • 你手里的参考字节码属于编译完成后还未填充immutable参数的模板字节码,和实际部署、填充完独有参数的线上字节码当然无法匹配。

正确校验Uni V3池的方案

不要直接全量对比运行时字节码,可以选择下面两种更可靠的校验方式:

  • 固定字节码片段校验:将获取到的运行时字节码去掉末尾用于存储immutable参数的固定长度片段,只对比前面的逻辑代码部分,同工厂部署的所有V3池这部分内容是完全一致的。
  • 接口+工厂校验:先调用待校验地址的factory()方法,返回值和官方Uni V3工厂地址对比一致后,再尝试调用token0()、token1()、fee()这三个V3池独有的方法,如果都能正常返回有效值,就可以确认是合法的Uni V3池。

内容的提问来源于stack exchange,提问作者Adam B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:09:01