Uniswap
Uniswap V3:獲取現貨價格文件似乎不完整
我第一次在 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 位的浮點數。