Кто-нибудь знает, почему 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 .

Другие вопросы по тегам