問題一覧に戻る
上級高度なパターン
問題93: オラクルパターン
Solidityのオラクル統合を学習 - スマートコントラクトの外部データアクセス。オラクルはブロックチェーンと現実世界のデータを橋渡しし、価格フィード、気象データ、API結果が必要なDeFiプロトコルに不可欠。Chainlinkは信頼性の高いデータフィードを持つ分散オラクルネットワークを提供。AggregatorV3Interfaceは集約と検証機能を内蔵した価格データアクセスを可能に。オラクルの理解は、データ駆動型アプリケーション、自動取引システム、意思決定に外部情報が必要なコントラクト構築に重要です。
pragma solidity ^0.8.0;
interface AggregatorV3Interface {
function latestRoundData()
external
view
returns (uint80, int, uint, uint, uint80);
}
contract OracleConsumer {
// Chainlink価格フィードインターフェース
AggregatorV3Interface internal ;
constructor(address _priceFeed) {
// オラクル接続をセットアップ
priceFeed = AggregatorV3Interface();
}
function getLatestPrice() public view returns (int) {
// 最新価格データを取得
(
,
int price,
,
,
) = priceFeed.latestRoundData();
// 価格値を返す
return ;
}
function getFormattedPrice() public view returns (uint256) {
// 価格を取得して検証
int price = ();
require(price > 0, "Invalid price");
// 正のuintに変換
return uint256();
}
}