
オラクル:ブロックチェーンは外の世界の出来事をどう知るのか
スマートコントラクトは、残高や署名、自分自身の状態を完璧に確認できます。できないのは、何かを調べにいくことです。ETH が何ドルなのか、試合に誰が勝ったのか、昨日マドリードで雨が降ったのかもわかりません。ブロックチェーンは意図的に閉じた世界になっています。すべてのノードが同じデータから同じ結果にたどり着かなければならず、外の世界はその保証を与えてくれないからです。
それでも、レンディングプロトコルには価格が、ステーブルコインには為替レートが、保険コントラクトには現実世界の出来事が必要です。閉じたチェーンと外の世界をつなぐ橋はオラクルと呼ばれ、分散型金融のなかでも最も攻撃を受けやすい部分のひとつです。
オラクルの役割
オラクルとは、外部のデータをチェーン上に置き、コントラクトが読めるようにする仕組み全般を指します。一般的には次のように動きます。
- ひとつまたは複数のデータ提供者が情報を集めます。たとえば、多数の取引所の ETH/USD 価格です。
- 提供者はその情報に署名し、定期的に、または値が十分に変化したときに、チェーン上のオラクルコントラクトへ送信します。
- ほかのコントラクトがそのオラクルコントラクトから最新の値を読み取り、それに基づいて動作します。
コントラクトはオラクルを全面的に信頼します。オラクルが ETH は 10 ドルだと言えば、それを読むレンディングプロトコルは ETH を 10 ドルとして扱い、その前提で清算や貸し出しを行います。
オラクル問題
これが根本的な難しさです。プロトコルのコードがどれほど完璧でも、信頼性はそのデータの信頼性を超えられません。価格を供給するのがただひとつの情報源なら、コントラクトを分散化してもあまり意味がありません。
オラクルの設計は、さまざまな方法でこの依存を減らそうとしています。
- 複数の独立した報告者の回答を集約し、ひとつの誤った、あるいは侵害された情報源が結果を動かせないようにします。
- 多数の基礎データソースを使い、操作された取引所がひとつあっても価格がゆがまないようにします。
- オンチェーンの平均価格を分散型取引所から一定期間にわたって算出し、長時間動かすのを難しくします。
- 経済的なペナルティを、誤ったデータを送った報告者に科します。
オラクルはどう悪用されるのか
DeFi における最大級の損失の多くは、通常の意味でのコントラクトのバグではなく、オラクルの失敗によるものでした。
- スポット価格の操作。あるプロトコルが、小さな取引プールひとつから現在価格を読み取っているとします。攻撃者はひとつのトランザクションの中で多額を借り入れ、そのプールの価格を動かし、偽の価格に基づいて借り入れや清算を行い、取引を元に戻します。すべてトランザクションが終わる前に完了します。フラッシュローンを使えば、自己資金がまったくなくてもこれが可能です。
- 流動性の薄い市場。主に小さなプールひとつで取引されるトークンは安価に価格を動かせ、それを担保として受け入れるプロトコルはすべてその弱点を引き継ぎます。
- 古いデータ。相場が急変する中で更新が止まったオラクルは、もはや存在しない価格での借り入れを許してしまうことがあります。
- 侵害された報告者や管理者キーによって、オラクルがデータを取得する先が変えられてしまうことがあります。
同じ考え方はブリッジにも当てはまります。システムの安全性は、ほかの場所で何が起きたかを伝える構成要素の安全性を超えられません。
なぜあなたに関係があるのか
あなたがオラクルと直接やり取りすることはありませんが、多くのプロトコルで、あなたの資金がどうなるかを決めているのはオラクルです。
- レンディング:担保の価値、そして清算されるかどうかは、オラクルから来ています。
- ステーブルコイン:いくつかの設計は、目標の価格を保つために価格フィードに依存しています。
- デリバティブと合成資産:決済価格はオラクルから来ています。
実際のお金でプロトコルを使う前に、知っておく価値があることがあります。価格はどこから取得しているのか。実績のある複数ソースのフィードか、それとも単一のプールか。フィードの更新が止まったらどうなるのか。これらの質問に明確に答えられないプロトコルは、あなたに見えないリスクを取るよう求めているのです。
オラクルと SSP
SSP 自体は、あなたの資金を守るためにオラクルに依存していません。コインは 2/2 マルチシグのボールトに保管され、それを動かせるかどうかは、外部の価格ではなく、あなたの 2 台のデバイスからの署名だけで決まります。
SSP に表示される価格、つまり選択した通貨でのポートフォリオ評価額は、表示用にすぎません。トランザクションの内容にも、その有効性にも影響しません。
WalletConnect を通じて DeFi プロトコルに資金を持ち込むとき、オラクルはあなた自身の問題になります。そこでは SSP が署名内容を表示し、両方のデバイスでの承認を求めますが、プロトコルの価格フィードが健全かどうかまでは評価できません。その確認はあなたの役目であり、コントラクトとその管理者を検証することもその一部です。
率直なまとめ
ブロックチェーンは自分の外を見ることができないため、オラクルがデータを持ち込みます。そして、そのデータに頼るすべてのコントラクトはオラクルの弱点を引き継ぎます。DeFi の大規模なエクスプロイトの多くは、コードを破るのではなく価格フィードを操作したものでした。
価格に依存するプロトコルを使うときは、その価格がどこから来ているのかを確かめてください。よく集約された複数ソースのオラクルは、単一のプールよりもはるかにだまされにくいものです。そして、データの出どころがひとつしかない「分散型」のコードは、見た目ほど分散化されていません。


