Solidity
將 Chainlink 預言機響應 (int256) 轉換為 uint256
我正在嘗試從 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
之後,您可以將它們組合起來並獲得您想要的結果。
添加到阿里的答案
- 作為 API 響應參考的一部分,可以通過程式方式獲取價格饋送答案中的小數
- 小數位數也可以手動從合約地址參考頁面….只需點擊相關網路旁邊的“顯示更多詳細資訊”。
如果您從 Chainlink API 獲取數據並且 API 返回 int256
answer
(即價格見參考),也許您應該將本地變數更改為 int256。或者,您可以嘗試使用其中一種庫來安全地轉換為 uint256。問題是您是否真的需要將價格數據設為 uint —— 如果需要,請稍後轉換/轉換,而不是在 API 獲取階段。