Web3 - オラクル基礎編: ブロックチェーンと現実世界の架け橋
一.オラクル(Oracle)とは
ブロックチェーンの世界では、スマートコントラクトは「自動実行プログラム」の一種ですが、自然な制限があります:オフチェーンデータに直接アクセスできません。これは、スマートコントラクトが天気データ、金融データ、物流状況、さらには乱数を必要とする場合、直接取得できないことを意味します。
オラクル(Oracle)はこの問題を解決するために使用されます。これは「情報の仲介者」であり、オフチェーンデータをオンチェーンに持ち込むか、逆にオンチェーンの情報をオフチェーンに送信する役割を担っています。
例を挙げると
あなたが分散型保険契約を開発していると仮定しましょう。ユーザーは「暴雨保険」を購入でき、ある日降雨量が50mmを超えると、契約は自動的に支払いを行います。
しかし問題が発生します。スマートコントラクトはその日の天気をどうやって知るのでしょうか?自分で天気APIにアクセスすることはできません------これにはオラクルが必要です。オラクルは複数の天気APIからデータを収集し、最終的な結果をブロックチェーンに提出することで、契約がこれらのデータに基づいて意思決定を行えるようにします。
二.スマートコントラクトがオフチェーンデータに直接アクセスできない理由
ブロックチェーンの分散化と決定性の設計により、外部データを処理する際にいくつかの核心的な問題に直面します:
分散化の破壊
📡ブロックチェーンの核心は「分散化」ですが、スマートコントラクトが単一のデータソース(特定のAPIなど)に依存している場合、そのデータソースは単一障害点となり、操作される可能性があります。
📡例えば、ある天気APIがハッカーに攻撃されて誤ったデータを返すと、スマートコントラクトは誤った意思決定をする可能性があります。
一貫性の問題
📡ブロックチェーンはすべてのノードが同じ計算結果を得る必要がありますが、外部APIのデータは時と場所によって異なる可能性があります。
📡例えば、あるブロックチェーンノードが中国にあり、別のノードがアメリカにある場合、同じAPIにアクセスしても異なる為替レートデータを得ることがあり、これがコンセンサスの失敗を引き起こす可能性があります。
データの可用性の問題
📡もしAPIが突然ダウンした場合、それに依存するすべてのスマートコントラクトが正常に動作できなくなる可能性があります。
データの改ざん不可性
📡ブロックチェーン上のデータは変更できませんが、オフチェーンAPIのデータは変更可能です。
📡例えば、ある分散型取引所が特定のAPIに依存してETH/USDの価格を提供している場合、APIプロバイダーが故意に価格を改ざんすると、取引が操作される可能性があります。
三.オラクルの仕組み オラクルの核心的な役割は、オンチェーンの契約が安全かつ信頼性を持ってオフチェーンデータを取得できるようにすることです。典型的な作業フローは以下の通りです:
1.オンチェーンでデータをリクエスト
スマートコントラクトまたはユーザーがリクエストを開始し、オラクルに「特定のデータを取得したい」と伝えます。このリクエストはブロックチェーンに保存され、すべてのオラクルノードに通知されます。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract WeatherOracleRequester {
event WeatherRequest(uint256 requestId, string city, address callbackAddress);
uint256 public nextRequestId;
function requestWeather(string memory city) external {
uint256 requestId = nextRequestId++;
emit WeatherRequest(requestId, city, address(this));
}
}
この例では、契約がemitイベントを通じてリクエストをブロードキャストし、オフチェーンのオラクルノードがこのリクエストをリッスンします。
2.オラクルがリクエストをリッスン
オフチェーンのオラクルノードはブロックチェーン上のリクエストをリッスンし、タスクを抽出します。例えば、次のようなリクエストを見つけるかもしれません:
リクエストID:101
データタイプ:天気データ
都市:上海
APIデータソース:https://weatherapi.com/shanghai
3.オラクルがオフチェーンデータを取得
各オラクルノードはリクエストに従って、複数のデータソースからデータを取得します。例えば:
WeatherAPI.com:降雨量 52mm
OpenWeather.com:降雨量 51mm
LocalWeather.com:降雨量 53mm
4.データの検証と集約
異なるデータソースが異なる結果を返す可能性があるため、オラクルはデータの正確性を確保するために集約アルゴリズムを使用します:
中央値を取る:52mm
加重平均(異なるAPIの重みを考慮)
外れ値を除去(特定のAPIの結果が大きく偏っている場合は除外)
5.オラクルがデータをオンチェーンに提出
オラクルは処理されたデータをブロックチェーンに提出します。例えば:
contract WeatherOracle {
event WeatherResponse(uint256 requestId, uint256 rainfall);
function submitWeatherData(uint256 requestId, uint256 rainfall) external {
emit WeatherResponse(requestId, rainfall);
}
}
6.スマートコントラクトがデータを使用
スマートコントラクトはWeatherResponseイベントをリッスンし、それに基づいてロジックをトリガーします:
contract WeatherInsurance {
mapping(address => uint256) public balances;
function claimInsurance(uint256 rainfall) public {
require(rainfall > 50, "No payout, rainfall too low");
payable(msg.sender).transfer(balances[msg.sender]);
}
}
降雨量が50mmを超えると、契約は自動的にユーザーに保険金を支払います。
四.オラクルの応用シーン
1.DeFiオラクル(分散型金融)
DeFiプロトコルは外部価格データを必要とします。例えばETH/USDの価格。一般的なオラクルにはChainlink、Pyth、Band Protocolがあり、信頼性のある市場データを提供します。
2.保険と天気予報機
分散型保険(Arbol、Etheriscなど)は、天気オラクルを使用して保険金の支払いを決定します。
3.サプライチェーンと物流
スマートコントラクトはオラクルを通じてサプライチェーンの状態を取得できます。例えば、貨物が配達されたかどうか。
4.乱数オラクル
オンチェーンで乱数を生成するのは難しいため、宝くじやNFTのミンティングなどは通常Chainlink VRFのような乱数オラクルに依存しています。
五.オラクルデータがすべてのマイナーのノードで一貫性を保つ方法は?
1.ブロックチェーンの状態モデル
オラクルがデータを更新すると、そのデータはスマートコントラクトに保存されます。
すべてのマイナーは取引を実行する際に、同じ状態を読み取ります。
2.データ同期メカニズム
オラクルがデータを提出すると、すべてのノードが同期して更新されます。
例えば、99番目のブロックでオラクルがETH/USDの価格を3000ドルに更新します。
100番目のブロックでは、AマイナーでもBマイナーでも3000ドルを読み取り、差異はありません。
六.まとめ
オラクルはブロックチェーンと現実世界をつなぐ橋であり、スマートコントラクトがオフチェーンデータにアクセスできるようにします。
スマートコントラクトが外部APIに直接アクセスできないため、オラクルはリクエストをリッスンし、データを取得し、データを検証し、データを提出することでこの問題を解決します。
オラクルの核心的な課題はデータの真実性、分散化、一貫性であり、一般的な解決策には分散型オラクル、データ集約、コンセンサスメカニズムが含まれます。
オラクルはDeFi、保険、サプライチェーン、NFT、乱数生成などの分野で広く利用されています。
今後、オラクル技術の進化に伴い、Web3アプリケーションはさらにスマートになり、ブロックチェーンは現実世界との相互作用がより密接になるでしょう!
The Web3コミュニティの紹介
The Web3は、Web3技術ソリューションの設計と開発に特化したコミュニティであり、個人や企業に専門的な向上を提供するチュートリアルの設計、開発、トレーニングサービスを提供しています。さらに、The Web3はプロジェクトのセキュリティ監査、投資研究分析、プロジェクトの孵化など、全方位のサポートも提供しています。
- The Web3は三つのコアセクションで構成されています:
- 「The Web3コミュニティ」 :教育訓練に特化し、130名の優秀な開発エンジニアと30名以上の卓越したプロダクトマネージャーを成功裏に育成しました。
- 「The Web3セキュリティラボ」 :DappLink、FishCake、Parapack、RootHashなどの著名なプロジェクトに専門的なセキュリティ監査サービスを提供しています。
- 「The Web3キャピタル」 :累計200万ドル以上の投資を行い、Web3の革新プロジェクトの孵化と成長を積極的に推進しています。














