Кто-нибудь знает, почему Chainlink PriceFeed возвращает значение цены с типом «int», в то время как цена всегда должна> = 0?
Код для получения последней цены в PriceFeed:
pragma solidity ^0.6.7;
import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
contract PriceConsumerV3 {
AggregatorV3Interface internal priceFeed;
/**
* Network: Kovan
* Aggregator: ETH/USD
* Address: 0x9326BFA02ADD2366b30bacB125260Af641031331
*/
constructor() public {
priceFeed = AggregatorV3Interface(0x9326BFA02ADD2366b30bacB125260Af641031331);
}
/**
* Returns the latest price
*/
function getThePrice() public view returns (int) {
(
uint80 roundID,
int price,
uint startedAt,
uint timeStamp,
uint80 answeredInRound
) = priceFeed.latestRoundData();
return price;
}
}
Обратите внимание, что внутри функции
getThePrice
, линия
int price
, зачем использовать Chainlink
int
типа по цене? Почему не просто
uint
тип? И возможно ли получить отрицательную цену от Chainlink PriceFeed?
1 ответ
Каналы данных Chainlink используют
int
вместо
uint
потому что некоторые цены могут быть отрицательными, например, когда фьючерсы на нефть упали ниже 0 .