Oracle Problemとは何か?
The Oracle Problemは、ブロックチェーンが外部データを必要とするが自力で取得できないときに生じる悩みです。コードは信頼不要に動くはずなのに、ETHの価格や今日の天気を知るためには何かを信頼しなければなりません。鍵のかかった台所がスープを作る前に窓口の人に雨が降っているかどうかを尋ねるようなものです。
「適当なAPIを差し込めば終わりだ」――そんなに簡単ではありません。単一の 集中型 ソースからデータを取得すると、新たな障害点や偏りが生じる可能性があり、まさにOracle Problemが警告する事柄です。
Oracle Problemの仕組み
Oracle Problemはチェーン上のコードがチェーン外の情報を必要とするときに現れます。簡単な流れは次の通りです:
- ステップ 1: スマートコントラクトの呼び出しが、BTCの価格や試合のスコアなどのデータを必要とします。
- ステップ 2: オラクルが複数のソース、たとえば複数の取引所からデータを取得してまとめます。
- ステップ 3: オラクルがデータをチェーン上に投稿し、コントラクトが読み取れるようにします。
- ステップ 4: コントラクトが動作し、例えばローンの清算や支払いの実行を行います。
- ステップ 5: フィードが誤っている、遅れている、あるいは操作されていると、結果が歪み、価値が不適切に動きます。
これが、Oracle Problemが外部からの事実をチェーンに持ち込む際に信頼を損ねないようにする問題である理由です。イメージは伝わったはずです。
なぜOracle Problemが重要か
暗号資産が実用的に機能することを重視するなら、これは無視できません。
- 利点: オラクル設計を改善すると資金のロジックが正しく保たれ、清算、支払い、取引が公平なデータに基づいて行われます。
- 視点: 価格フィード、スポーツ賭け、更新されるNFT属性の背後にある静かな問題です。失敗すると事態はすぐに悪化します。
- 関連性: これは 分散型金融(DeFi)、ゲーム、予測市場、さらにはオンチェーン保険でも見られます。
複数のソースから取得し、頻繁に投稿し、計算方法を公開する 分散型 オラクルネットワークを優先してください。透明性が信頼を支えます。
Oracle Problemの主な特徴
このテーマを形作る要素は次の通りです:
- 信頼: データが外部の当事者から来る場合でも、信頼を最小化しようとする点です。
- 最終性: データがチェーンに載ると実質的に 不変 となり、誤った入力が残ってしまいます。
- 遅延: フィードは古い情報による誤った処理を防ぐために十分に新しく、同時にチェーンを過剰に書き込まないようにする必要があります。
- 多様性: 複数の独立したソースや提供者が単一障害点を減らします。
- インセンティブ: レポーターには報酬と罰則を設け、真実と整合する仕組みが必要です。
バリエーション
Oracle Problemは、必要とするデータやフローによってさまざまな形を取ります:
- インバウンド: 価格や天気のような現実世界のデータがチェーンに入るケース。
- アウトバウンド: コントラクトの決定が支払いネットワークやゲームサーバーに送られるケース。
- プッシュ: フィードが要求されなくても一定間隔でチェーンを更新する方式。
- プル: コストを抑えるために必要なときだけコントラクトがデータを要求する方式。
- 署名付き: データ提供者がチェーン外で値に署名し、誰でも出所を検証できる方式。
- 委員会: 複数のレポーターが合意してから値を投稿する方式。
Oracle Problemは単なる技術的問題ではありません。社会的な問題でもあります。誰を信頼するか、報酬はどうなっているか、不正が起きたらどうなるか。これらに答えがないと、コードの約束が崩れることがあります。
例
貸出プロトコルが価格フィードを読み、ETHが1パーセント下落してローンが清算され、数時間後に単一の取引所が異常だったためフィードが誤っていたと判明する。これが典型的なOracle Problemです。
豆知識
「オラクル」は古代の神託を告げる預言者に由来します。暗号分野では価格や天候情報を彼らに求めます。詩的さは減りますが、ずっと検証可能です。
まとめ
一言で言えばOracle Problem: ユーザーにただ信じさせるのではなく、外部の事実をチェーンに持ち込むこと。ここがうまくいけば、他の要素も噛み合い始めます。
