3

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) ?

読んでくれてありがとう

4

2 に答える 2

3

価格フィード コントラクトは、実際にはチェーンリンク ノードのグループによって個別に更新され、コントラクトはそのコントラクトから読み取られます。

あなたが呼び出すとき、getLatestPriceそれは実際にはそのコントラクトから読んでいるだけです。

さらに、価格フィード コントラクトは、特定のしきい値と偏差に基づいて更新されます。特にテストネットでは、かなり散発的に更新されます。


あなたのために別の質問をすることができれば、TypeErrorそれが理想的です、ありがとう!

于 2021-07-17T13:45:38.370 に答える