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

Uniswap V3:如何通过指定Tick计算正确的代币价格?

如何通过Uniswap V3的Tick计算正确的ETH兑USDC价格

你遇到的问题核心是没有考虑Token的小数位数以及Tick对应的价格方向,Uniswap V3的Tick公式计算的是原生单位的价格,而非我们日常看到的法币计价单位,以下是具体的解决步骤:

1. 明确池中的Token0、Token1及小数位数

Uniswap V3的池子会按Token地址的字典序排序,地址更小的为Token0,另一个为Token1。以你使用的USDC/WETH池为例:

  • Token0是USDC(小数位数:6,即1 USDC = 10^6 原生单位)
  • Token1是WETH(小数位数:18,即1 ETH = 10^18 原生单位)

2. 理解Tick对应的原生单位价格

Uniswap V3的价格公式 p(i) = 1.0001^i 计算的是1原生单位Token0 可兑换的原生单位Token1数量(即 Token1原生 / Token0原生)。

你查询到的Tick值为205930,代入公式得到:

1.0001^205930 ≈ 876958666.47

这个值的意思是:1个原生USDC(0.000001 USDC)可以兑换约876958666.47个原生WETH(0.000000000000000001 ETH)。

3. 换算为实际的ETH/USDC价格

我们需要把原生单位转换为日常使用的单位,计算1 ETH 等于多少 USDC:

  1. 先计算1原生WETH对应的原生USDC数量:1 / 876958666.47 ≈ 1.1403e-9 原生USDC/原生WETH
  2. 换算为1 ETH(10^18 原生WETH)对应的USDC数量:
    10^18 * 1.1403e-9 / 10^6 = 1140.3 USDC/ETH
    

这个结果和你提到的实际价格(1200.49 USDC/ETH)接近,差异是因为Tick是实时变化的,你查询时的Tick对应的就是这个价格。

4. 通用换算公式

如果要计算任意Token对的实际价格,可套用以下逻辑:

  • 若要得到 1单位Token1 兑换多少 Token0(比如ETH/USDC):
    实际价格 = (10^decimals_token0) / (1.0001^tick * 10^decimals_token1)
    
  • 若要得到 1单位Token0 兑换多少 Token1(比如USDC/ETH):
    实际价格 = (1.0001^tick * 10^decimals_token1) / (10^decimals_token0)
    

关于Uniswap文档示例的说明

文档中的示例使用了简化的Tick值(100000),仅用于演示计算逻辑,并非真实市场的Tick数据,所以得到的22015.5 USDC/WETH是简化计算的结果,无需对应实际价格。


内容的提问来源于stack exchange,提问作者Ritzy Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:55:21