オラクル(ブロックチェーンオラクル)
別名: ブロックチェーンオラクル · oracle · 価格オラクル
定義
オラクルとは、価格や天気、試合結果など、ブロックチェーンの外にあるデータをスマートコントラクトに届ける仕組みのことです。
オラクルの仕組み
スマートコントラクトは、ブロックチェーンの外の情報を自分で取りに行くことができません。たとえばレンディングでは担保の時価、無期限先物のDEXでは清算の基準価格が必要で、それをオラクルが提供します。Chainlinkは代表的なオラクルネットワークです。
信頼性の高いオラクルは、複数の取引所やデータ提供者の価格を集めて中央値などを取り、1か所の異常な価格に左右されにくくしています。更新の頻度や、価格がどれだけ動いたら更新するかも設計の重要なポイントです。
オラクルが誤った価格を伝えると、正常なポジションが清算されたり、攻撃者が不当に資金を引き出したりできてしまいます。過去のDeFiハッキングには、流動性の薄い単一DEXの価格をオラクルとして使っていたことが原因のものもあります。
具体例
あるレンディングが、ETH価格を流動性の薄い1つのDEXだけから取得しているとします。攻撃者がフラッシュローンでそのDEXのETHを大量に買い、価格を一時的に3,000ドルから6,000ドルに吊り上げます。プロトコルは担保の10 ETHを6万ドルと評価し、本来の3万ドルを大きく超える額を貸してしまいます。複数の市場の価格を集計するオラクルなら、1つのDEXの異常値はほぼ無視されます。
よくある失敗
- オラクルの価格は取引所の画面と常に一致すると思い込むこと。
- DeFiを選ぶときに、どのオラクルを使っているかを確認しないこと。
- 急変動時にオラクルの更新遅れで清算価格がずれる可能性を考えないこと。
学んで試す
よくある質問
なぜスマートコントラクトは外部データを直接取得できないのですか?
ブロックチェーンでは、全ノードが同じ計算をして同じ結果になる必要があります。外部サイトの値は取得のたびに変わる可能性があるため、オラクルがデータを取引としてチェーン上に書き込む方式をとります。
オラクル問題とは何ですか?
ブロックチェーン自体が安全でも、外部データの正しさはオラクルに依存するという課題のことです。データ源の分散や複数ノードでの検証などで対策されています。