这是我第一次在 Remix 上部署合约以及学习如何在 Solidity 上编码。
我已经阅读了本指南并成功部署了提供的智能合约模板:
pragma solidity ^0.6.7;
import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";
contract PriceConsumerV3 {
AggregatorV3Interface internal priceFeed;
/**
* Network: Kovan
* Aggregator: BTC/USD
* Address: 0x6135b13325bfC4B00278B4abC5e20bbce2D6580e
*/
constructor() public {
priceFeed = AggregatorV3Interface(0x6135b13325bfC4B00278B4abC5e20bbce2D6580e);
}
/**
* Returns the latest price
*/
function getThePrice() public view returns (int) {
(
uint80 roundID,
int price,
uint startedAt,
uint timeStamp,
uint80 answeredInRound
) = priceFeed.latestRoundData();
return price;
}
}
但是,我以为在部署了上面的模板之后,每当我点击getLatestPrice 按钮时,该货币对的价格就会立即更新,我错了,第一次点击后价格竟然“冻结”了。
所以,我想知道在上面的模板中必须输入什么来实现这个目标
此外,我尝试通过在下面timeStamp
键入来打印,但在编译时,Remix 编译器回复:return timeStamp;
return price;
TypeError:返回参数类型 uint256 不能隐式转换为预期类型(第一个返回变量的类型)int256。返回时间戳;^--------^
因此,出于好奇,如何将 uint256 变量转换为 int256 变量,以便获取每个更新价格的时间戳(每次单击getLatestPrice button
)?
谢谢阅读