1

我使用 IUniswapV3PoolState.slot0 返回 sqrtPriceX96 并勾选 Uniswap V3 中的不同对。结果对于 ETH/DAI 来说是非常合理的。但对于 ETH/USDT 和 ETH/USDC,情况就大不相同了。这不是因为代币的顺序,而是价格的最终结果(在考虑了平方根和 Q96 之后)相差 10^(-12)。所以我会得到大约 3200 美元的 ETH/DAI,而 ETH/USDT 和 ETH/USDC 会得到 3200*10^(-12) 美元。有什么我想念的吗?谢谢!

4

1 回答 1

0

EVM 兼容的区块链使用定点数学。您在 UI 中看到的浮点值是抽象的,从技术上讲,一切都是整数;为表示小数而保留的特定位数。不同的 ERC-20 代币保留不同的小数位数。

  • WETH 和 DAI 有 18 位小数
  • USDT 和 USDC 有 6 位小数。

如果您拥有具有 6 位小数的资产 X 和具有 18 位小数的资产 Y,则必须针对这一事实更正以 X 表示的 Y 价格。

让我们使用price = y/x,调整小数位数的价格将是price_adjusted = y/x * 10^(-12)。要了解原因,请参阅此处的第 3.3.2 节

在此处输入图像描述

于 2022-01-14T12:29:41.743 回答