Uniswap

Uniswap V3:獲取現貨價格文件似乎不完整

  • May 4, 2022

我第一次在 Uniswap 的 V3 上工作,並試圖獲得一個池的目前價格。

我正在使用本教程頁面https://docs.uniswap.org/sdk/guides/fetching-prices,這似乎確實在嘗試我想要的。

此外,該方法中的註釋token0Price指出:

/**
  * Returns the current mid-price of the pool in terms of token0, i.e. the ratio of token1 over token0
  */

但是,當我呼叫此函式時,我收到的是:

Price {
 numerator: JSBI(8) [
   445412081,   346709960,
   584891573,   611262682,
   360319882,   934240370,
   1035473620,  1369,
   sign: false
 ],
 denominator: JSBI(7) [ 0, 0, 0, 0, 0, 0, 4096, sign: false ],
 baseCurrency: Token {
   chainId: 3,
   decimals: 6,
   symbol: 'USDC',
   name: 'USD Coin',
   isNative: false,
   isToken: true,
   address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
 },
 quoteCurrency: Token {
   chainId: 3,
   decimals: 18,
   symbol: 'WETH',
   name: 'Wrapped Ether',
   isNative: false,
   isToken: true,
   address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'
 },
 scalar: Fraction {
   numerator: JSBI(1) [ 1000000, sign: false ],
   denominator: JSBI(2) [ 660865024, 931322574, sign: false ]
 }
}

如何將此 Price 對象 JSBI 數組轉換為池的實際價格?

這些 JSBI 對像有一個方法toSignificant,使用它將大數字轉換為數字文字。

// toSignificant(significantDigits?: number, format?: object, rounding?: Rounding): string;

const p = pool.token0Price.toSignificant(6);

將返回一個精度為 6 位的浮點數。

引用自:https://ethereum.stackexchange.com/questions/127486