Solidity

將 Chainlink 預言機響應 (int256) 轉換為 uint256

  • August 1, 2022

我正在嘗試從 Chainlink priceFeed 合約中獲取最新的 ETH 價格。響應顯示為171617306235作為 BigNumber。所以我有幾個問題需要解決。

1 - 我的局部變數是 uint256。如何將 Chainlink 響應( int256 )分配給 uint256 變數?

2 - 顯然,需要對 Chainlink 響應進行一些計算,以使其成為人類可讀的 ETH 價格。我怎樣才能實現這個目標?例如,我應該如何在我的 JS 或 Typescript 文件中讀取1716.17 美元作為乙太坊價格?

提前致謝

從 chainlink 數據饋送返回的價格包含 8 個附加數字以及價格,例如1716 17306235

如果您只想定價而不是附加數字,那麼

uint256 price = uint256(171617306235) / 100000000;

這將返回1716

如果您還想要價格後的八位數字,您可以像這樣得到

uint256 eightDigits = 171617306235 % 100000000;

它將返回您17306235

如果您在問題中提到的價格後只需要兩位數,那麼

uint256 twoDigits = eightDigits / 1000000;

它會給你17

之後,您可以將它們組合起來並獲得您想要的結果。

添加到阿里的答案

如果您從 Chainlink API 獲取數據並且 API 返回 int256 answer(即價格見參考),也許您應該將本地變數更改為 int256。或者,您可以嘗試使用其中一種來安全地轉換為 uint256。

問題是您是否真的需要將價格數據設為 uint —— 如果需要,請稍後轉換/轉換,而不是在 API 獲取階段。

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