プラグマの堅実さ^0.8.21;
"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"をインポートします。
コントラクト OracleIntegratedContract {
AggregatorV3Interface 内部 priceFeed;
コンストラクタの可視性の削除
constructor(address _priceFeed) {
priceFeed = AggregatorV3Interface(_priceFeed);
}
1.このセグメントでは、契約でChainlink価格フィードを使用することを指定しました。 コンストラクタは、イーサリアムネットワーク上のプライスフィードコントラクトのアドレスを取得します。1.
Oracleからのデータのフェッチ
1.
最新のイーサリアム価格を取得するために契約を延長しましょう。
硬度
function getLatestEthPrice() public view returns (int) {
(,int price,,,) = priceFeed.latestRoundData();
return price;
}
1.Chainlinkアグリゲーターインターフェースの「latestRoundData()」関数は、最新の価格を含むさまざまなデータを提供します。## Oracleレスポンスの処理:受信後のデータの管理
オラクルからフェッチされたデータは、多くの場合、生の形式で提供され、私たちのニーズにすぐには適していない可能性があります。 スマートコントラクト内でこのデータを正しく処理することが重要です。
1.
データの書式設定
1.オラクルがイーサリアムの価格を米ドルで返し、小数点以下がないように10^8を掛けたとします(オラクルの設定では一般的です)。 実際の価格を取得するには、データをフォーマットする必要があります。
硬度
関数getFormattedEthPrice() public view returns (int) {
int rawPrice = getLatestEthPrice();
return rawPrice / 10**8;
}
1.この関数は、生の価格を取得し、それを 10^8 で除算して実際の値を取得します。1.
エラー処理
1.
オラクルがデータのフェッチに失敗する可能性を常に考慮してください。
硬度
関数 safeGetLatestEthPrice() public view returns (int) {
(,int price,,uint256 timestamp,) = priceFeed.latestRoundData();
require(timestamp > 0, “Failed to fetch data from the oracle”);
return price;
}
1.
ここでは、「latestRoundData()」関数もタイムスタンプを提供します。 タイムスタンプが 0 の場合は、オラクルがデータの取得に失敗したことを意味する可能性が高く、「require」ステートメントで処理します。完全なコードは次のようになります。
硬度
SPDX-ライセンス識別子: MIT
プラグマの堅実さ^0.8.21;
"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"をインポートします。
コントラクト OracleIntegratedContract {
AggregatorV3Interface 内部 priceFeed;
コンストラクタの可視性の削除
constructor(address _priceFeed) {
priceFeed = AggregatorV3Interface(_priceFeed);
}
関数 getLatestEthPrice() public view returns (int) {
(,int price,,,) = priceFeed.latestRoundData();
return price;
}
関数getFormattedEthPrice()パブリックビューは(int)を返します {
int rawPrice = getLatestEthPrice();
return rawPrice / 10**8;
}
関数 safeGetLatestEthPrice() public view returns (int) {
(,int price,,uint256 timestamp,) = priceFeed.latestRoundData();
require(timestamp > 0, "Failed to fetch data from the oracle");
return price;
}
}
```
このレッスンを修了すると、Remix内で基本的なOracle統合スマートコントラクトが作成されているはずです。 このコントラクトは、最新のイーサリアム価格を取得し、返されたデータを処理します。 次のレッスンでは、このコントラクトを展開し、ベストプラクティスとニュアンスをさらに掘り下げます。
プラグマの堅実さ^0.8.21;
"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"をインポートします。
コントラクト OracleIntegratedContract {
AggregatorV3Interface 内部 priceFeed;
コンストラクタの可視性の削除
constructor(address _priceFeed) {
priceFeed = AggregatorV3Interface(_priceFeed);
}
1.このセグメントでは、契約でChainlink価格フィードを使用することを指定しました。 コンストラクタは、イーサリアムネットワーク上のプライスフィードコントラクトのアドレスを取得します。1.
Oracleからのデータのフェッチ
1.
最新のイーサリアム価格を取得するために契約を延長しましょう。
硬度
function getLatestEthPrice() public view returns (int) {
(,int price,,,) = priceFeed.latestRoundData();
return price;
}
1.Chainlinkアグリゲーターインターフェースの「latestRoundData()」関数は、最新の価格を含むさまざまなデータを提供します。## Oracleレスポンスの処理:受信後のデータの管理
オラクルからフェッチされたデータは、多くの場合、生の形式で提供され、私たちのニーズにすぐには適していない可能性があります。 スマートコントラクト内でこのデータを正しく処理することが重要です。
1.
データの書式設定
1.オラクルがイーサリアムの価格を米ドルで返し、小数点以下がないように10^8を掛けたとします(オラクルの設定では一般的です)。 実際の価格を取得するには、データをフォーマットする必要があります。
硬度
関数getFormattedEthPrice() public view returns (int) {
int rawPrice = getLatestEthPrice();
return rawPrice / 10**8;
}
1.この関数は、生の価格を取得し、それを 10^8 で除算して実際の値を取得します。1.
エラー処理
1.
オラクルがデータのフェッチに失敗する可能性を常に考慮してください。
硬度
関数 safeGetLatestEthPrice() public view returns (int) {
(,int price,,uint256 timestamp,) = priceFeed.latestRoundData();
require(timestamp > 0, “Failed to fetch data from the oracle”);
return price;
}
1.
ここでは、「latestRoundData()」関数もタイムスタンプを提供します。 タイムスタンプが 0 の場合は、オラクルがデータの取得に失敗したことを意味する可能性が高く、「require」ステートメントで処理します。完全なコードは次のようになります。
硬度
SPDX-ライセンス識別子: MIT
プラグマの堅実さ^0.8.21;
"@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"をインポートします。
コントラクト OracleIntegratedContract {
AggregatorV3Interface 内部 priceFeed;
コンストラクタの可視性の削除
constructor(address _priceFeed) {
priceFeed = AggregatorV3Interface(_priceFeed);
}
関数 getLatestEthPrice() public view returns (int) {
(,int price,,,) = priceFeed.latestRoundData();
return price;
}
関数getFormattedEthPrice()パブリックビューは(int)を返します {
int rawPrice = getLatestEthPrice();
return rawPrice / 10**8;
}
関数 safeGetLatestEthPrice() public view returns (int) {
(,int price,,uint256 timestamp,) = priceFeed.latestRoundData();
require(timestamp > 0, "Failed to fetch data from the oracle");
return price;
}
}
```
このレッスンを修了すると、Remix内で基本的なOracle統合スマートコントラクトが作成されているはずです。 このコントラクトは、最新のイーサリアム価格を取得し、返されたデータを処理します。 次のレッスンでは、このコントラクトを展開し、ベストプラクティスとニュアンスをさらに掘り下げます。