ブロックチェーンのオラクル問題とは何か?

Chainlink Japan
Chainlink Community
Jan 4, 2021

本記事はChainlinkオフィシャルブログに公開された“What Is the Blockchain Oracle Problem?”の和訳です。

Chainlink公式より許可をいただいた上で記事を翻訳・公開しています。

ブロックチェーンのオラクル問題は、Ethereumのようなネットワーク上のスマートコントラクトが、さまざまな市場やユースケースで大量導入を実現するために克服すべき最も重要な障壁の1つです。

以前ブロックチェーン教育シリーズで説明したように、ブロックチェーン上で実行されるスマートコントラクトは、複数の異なる当事者が契約上の契約を共有し、価値を交換する方法を再定義する大きな可能性を秘めています。スマートコントラクトエコノミーとは別に、より大きな非ブロックチェーンデジタルエコノミーがあります。このデジタルインフラの副産物として、世界がどのように機能しているかを洞察するためのデータやAPIが増え続けています。例えば、インターネットの検索結果から社会で話題になっているトピックを表示したり、IoTセンサーから一般的な交通パターンを表示したりすることができます。

ブロックチェーンベースのスマートコントラクトと伝統的なデータとAPIエコノミーは、データ駆動型自動化の将来のビルディングブロックになる可能性を秘めていますが、問題はこの2つの世界をどのように結びつけるかということです。これは「オラクル問題」の核心に迫るものであり、この記事の焦点となります。

この記事では、以下の5つの重要なセクションに分けて解説します。

  • オラクル問題を定義する
  • オラクルの機能の概要
  • Ethereumのようなブロックチェーンがネイティブなオラクルソリューションを提供しない理由について議論する
  • 集中型オラクルのセキュリティリスクを特定する
  • 安全で信頼性の高い分散型オラクルのスタンダードであるChainlinkを紹介する

オラクル問題

オラクル問題は、非常にシンプルな制限を中心に展開されます。ブロックチェーンは組み込み機能として外部システムからデータをプルしたり、外部システムにデータをプッシュしたりすることができません。そのため、ブロックチェーンはインターネットに接続されていないコンピュータのように孤立したネットワークです。ブロックチェーンが分離されていることで、ネットワークは台帳の内部に保存されているデータを使って、非常に基本的な真偽の問題について合意を形成するだけで済むため、非常に安全で信頼性の高いものとなりますー例えば、公開鍵保有者は対応する秘密鍵で取引に署名したのか、公開アドレスは取引をカバーするのに十分な資金を持っているのか、取引の種類は特定のスマートコントラクト内で有効なものなのかなどです。ブロックチェーンコンセンサスの焦点が非常に狭いことが、スマートコントラクトが従来のシステムよりもはるかに高い確実性を持って書かれた通りに正確に実行され、決定論的であると呼ばれる理由です。

しかし、スマートコントラクトが潜在的なユースケースの90%以上を実現するためには、外部との接続が必要です。例えば、金融スマートコントラクトは決済を決定するために市場情報を必要とし、保険スマートコントラクトは保険契約の支払いを決定するためにIoTやウェブデータを必要とし、貿易金融コントラクトは支払いを解除するタイミングを知るために取引書類やデジタル署名を必要とし、多くのスマートコントラクトは従来の決済ネットワーク上で不換紙幣で決済したいと考えています。これらの情報はいずれもブロックチェーン内で生成されるものではなく、これらの伝統的なサービスに本質的にアクセスできるものでもありません。

ブロックチェーン(オンチェーン)と外部の世界(オフチェーン)の接続をブリッジするには、「オラクル」と呼ばれる追加の別のインフラストラクチャが必要です。

ブロックチェーンオラクルは何を行うのか?

ブロックチェーンオラクルとはブロックチェーンとデータプロバイダ、Web API、エンタープライズバックエンド、クラウドプロバイダ、IoTデバイス、電子署名、決済システム、その他のブロックチェーンなどのオフチェーンシステム間の通信を容易にする安全なミドルウェアです。オラクルは、いくつかの重要な機能を網羅しています。

  • リスニング — ブロックチェーンネットワークを監視して、オフチェーンデータに対するユーザーやスマートコントラクトのリクエストがないかチェックします。
  • 抽出 — サードパーティのウェブサーバーでホストされているオフチェーンAPIなど、1つまたは複数の外部システムからデータを取得します。
  • フォーマット — APIから取得したデータをブロックチェーン読み取り可能なフォーマットにフォーマットすることで、2つのシステムの相互通信を可能にする(入力)、またはブロックチェーンデータを外部APIと互換性のあるものにする(出力)。
  • 検証 — データ署名、ブロックチェーントランザクション署名、TLS署名、TEE(Trusted Execution Environment)認証、ゼロナレッジ証明などを組み合わせて、オラクルのサービスのパフォーマンスを証明するための暗号証明を作成します。
  • 計算 — 複数のオラクルから中央値を計算したり、複数のタイプのデータ(個人のリスクプロファイル、市場金利、資本コストなど)から保険の見積もりを作成するような、より複雑なタスクを実行するなど、データに対して何らかの計算を実行します。
  • ブロードキャスト — スマートコントラクトの使用のためにデータとそれに対応する証明をオンチェーンで送信する手段として、ブロックチェーン上のトランザクションに署名してブロードキャストします。
  • 出力(オプション) — 従来の決済ネットワークへの支払い指示の中継やサイバー物理システムへの影響など、スマートコントラクトの実行時に外部システムにデータを送信します。

上記の機能を提供するためには、オラクルシステムはブロックチェーン上でオンチェーンとオフチェーンの両方を同時に動作させなければなりません。オンチェーンコンポーネントは、ブロックチェーン接続の確立(リクエストのリスニング)、データのブロードキャスト、プルーフの送信、ブロックチェーンデータの抽出、そして時にはブロックチェーン上で計算を行うためのものです。オフチェーンコンポーネントは、リクエストの処理、外部データの取得とフォーマット、外部システムへのブロックチェーンデータの送信、そして潜在的にはより高度なオラクルネットワークでの計算を行うためのものです。

複数のソースから気象データを取り込み、集約されたデータポイントを使用してブロックチェーン上で保険契約の実行をトリガーし、従来の支払い方法で支払いを行う作物保険のためのChainlinkオラクルによって稼働するスマートコントラクトです

ブロックチェーンがオラクル問題を解決できない理由

ブロックチェーンはいくつかの特定の設計原理により、高い安全性と信頼性を持っています。上述したように、それらは証明可能な真か偽かを示す独自の環境内でのみ生成されたデータを使用して、非常に基本的な質問についての意思決定を形成する必要があるだけです。さらにそれらは、ネットワーク内のすべてのノードによって同じデータの部分を冗長に検証することと、1つのノードまたはノードの小グループがコンセンサスアルゴリズム(PoW, PoSなど)のルールを変更できないこと、およびシビルがネットワークを攻撃すること、例えばハッシュパワーの51%の制御を得ることを保証することの両方を保証するために、分散化を使用します。これらの特性は、特に高度に分散化されたシビル耐性のあるネットワークにおいて、決定論の周りの強力な保証を提供します。

しかし、ブロックチェーンは主観の領域を掘り下げ始めたり、ネットワーク内のすべてのノードがアクセスできない外部データを必要とする質問への回答にはあまり適していません。例えば、「ビットコインの市場価格は?」や「ニューヨークの天気は?」というような単純な質問をしても、どのようなデータソースを使用しているか、どのようなデータソースからデータを要求しているかによって、さまざまな答えが返ってくることがあります。そこで問題となるのは、何が正しい答えなのか?です。

ブロックチェーンのベースレイヤーに主観性を導入することで、セキュリティ、信頼性、ガバナンスの問題を含むパンドラの箱が開けられ、ブロックチェーンが提供しようとしている価値提案(コンピューティングトランザクションの公平な決定性)を危険にさらすことになります。

大きな懸念事項の1つは、すべてのノードが同じデータへのアクセス権を持っているわけではない場合に、どのようにして高品質のデータを確保するかということです。ビットコインの価格の基本的なデータリクエストでさえ、ウェブサイトや単一の取引所を見るだけでは、データをフィルタリングし、すべての取引環境を考慮したマーケットカバレッジを作成してきた数十年の経験を持つプロのデータアグリゲータの高品質のサービスを維持するための金銭的なインセンティブがある有料APIサブスクリプションほど正確で信頼性の高いものではないため、非常に難しいものになります。

誰でも疑似匿名ノードを走らせることができ、誰もが平等に回答を提出する機会を持っているにもかかわらず、彼ら全員が高品質なオフチェーンAPIのサブスクリプションを購入しようとは思わないかもしれませんし、簡単に強制できるわけでもないため、ブロックチェーンノードから提出されたオフチェーンデータを管理し、品質管理を実施することは非常に困難です。

もう一つの大きな懸念事項はスケーラビリティです。新しいデータソースをネットワークに追加したり、既存のデータ集計方法を調整したりする必要があるたびに、ネットワーク内のすべてのノードに同意を得てソフトウェアをアップグレードしてもらうために、大規模なソーシャルガバナンスの調整が必要になります。このガバナンスのオーバーヘッドは摩擦を増大させ、ブロックチェーンの他のコア機能(PoSやシャーディングなど)の開発を遅らせ、オラクルのイノベーションのスピードを制限します。結局のところ、ブロックチェーンのベースレイヤーに複雑さがあればあるほど、ブロックチェーン上で動作するすべてのアプリケーションに対する攻撃の対象となり、リスクが増大します。オラクルを使用していない、あるいは対立するデータ要求に関与していないアプリケーションであっても十字砲火に巻き込まれ、オラクルの問題でチェーン全体が停止した場合には潜在的に混乱をきたす可能性があります。

このような理由から、オラクルは主要なブロックチェーンのベースレイヤーに統合されるのではなく、別個のネットワークとして動作しています。これにより、ブロックチェーンはブロックチェーンのコンセンサスに特異的に焦点を当てることで、より低い攻撃面を持ち、決定論を保持することができます。一方オラクルはチェーン全体を危険にさらすような依存性や制限を生み出すことなく、複雑で主観的なオフチェーンの世界から決定論を生み出すために必要な柔軟性を持っています。

中央集権的なオラクルが大きなリスクを導入する

スマートコントラクトの全体的なポイントは、人間の執行による確率的な実行とは対照的に、契約の条件を技術的に執行することで決定論を達成することです。この目的を達成するために、ブロックチェーンは単一の障害点を持つことはできず、コントラクトのエンドツーエンドのライフサイクル全体を通してこれらの特性を維持するためにオラクルに拡張しなければなりません。単一の中央集権型オラクルが契約の結果を決定する入力を制御できるならば、なぜ数百万ドルの契約が完全に分散化されたブロックチェーン上でスマートコントラクトとして機能するのでしょうか?

スマートコントラクトでは中央集権型のオラクルが障害の中心となります

スマートコントラクトアプリケーションの開発チーム自身がオラクルを実行しているか、サードパーティのオラクルサービスに依存しているかにかかわらず、どちらのシナリオでも、オラクルの制御を通じてコントラクトに影響を与えるために、単一のエンティティに過剰な力を与えています。中央集権型のオラクル運用者は善意で運用しているかもしれませんが、ダウンタイム、DDOS攻撃、ハッキング、偶発的な機能不全など、今日の一般的な中央集権型の問題にさらされており、これらはすべてユーザーの資金を大きなリスクにさらしています。

最も高貴な中央集権的なエンティティであっても一度契約の価値がスケールすると、圧力を受ける可能性があり、賄賂、脅迫、規制圧力の可能性を開くことになり、最終的には中央集権型オラクルの運用に関与する一人の人間が不正を行うことを必要とするだけです。このモデルはスケーラブルではなく、分散型インフラストラクチャが安全で信頼性の高い自動化の重要なドライバーであるという考えにはフィットしません。

これらの欠点を克服するためには、オラクルの問題を解決する方法がブロックチェーンのコンセンサスを達成することと比較して多くの違いがあることを考えると、異なる方法ではありますが、オラクルはブロックチェーンと同じセキュリティと信頼性の保証を作成する必要があります。

Chainlink: 安全で信頼性の高いオラクルのスタンダード

オラクルレイヤに決定論をもたらすために、Chainlinkは分散型オラクルネットワークを開発しました。この分散型オラクルネットワークは、任意の組み合わせで使用できる多数の異なる保証を提供し、あらゆるユースケースにカスタマイズされたオラクルソリューションを提供します。

  • オープンソース — オープンソーステクノロジーであることで、より広いブロックチェーンコミュニティがChainlinkのソースコードや機能のセキュリティや信頼性を独立して検証し、その改善に貢献することができます。
  • External Adapter — ノードがAPIキーを安全に保存し、アカウントログインを管理できるようにすることで、スマートコントラクトはパスワード/クレデンシャルで保護されているものも含め、あらゆる外部システムやAPIからデータを取得することができます。
  • 分散化 — ノードとデータソースのレベルで分散化を採用することで、1つのノードやデータソースが単一の障害点とならないことを保証し、データが時間通りに配信され、操作されにくい状態が維持されることをユーザーに強く保証します。
  • データ署名 — ノードがスマートコントラクトに提供するデータを暗号化して署名することで、ユーザーはどのノードがデータを送信したかを識別し、過去の履歴を見てパフォーマンスの質を判断することができます。
  • サービスアグリーメント — 要求するスマートコントラクトとオラクルプロバイダーの間で、オラクルサービスの条件とパフォーマンスに対する罰則/報酬を概説した拘束力のあるオンチェーン契約を使用することで、ユーザーはオフチェーンのデータ要求に対して強制力のある保証を得ることができます。
  • 評価システム — 署名付きオンチェーンデータを評価システムに入力することで、成功したジョブ、提供したクライアント、平均応答時間などの様々なメトリクスに基づいて、どのノードが良いノードで、どのノードが悪いノードであるかをユーザーが情報に基づいて判断することができます。
  • 認証サービス — ノードが任意の数の認証を取得することで、ユーザーへのセキュリティと信頼性を高めることができ、KYC、ノードの地理的位置、インフラストラクチャのセキュリティレビューなど、特定の重要な保証を提供することができます。

これらは、Chainlinkが提供する多くの機能の一部に過ぎず、安全性と信頼性の高いオラクルメカニズムを保証するための一連の保証をユーザーに提供しています。今後の教養記事ではChainlinkネットワークをより完全に理解していただくために、それぞれの機能をより深く掘り下げていきます。

Chainlink上にこれらの重要な機能を構築することで、あらゆるブロックチェーン上のスマートコントラクトは、決定論のコアバリューを犠牲にすることなくオフチェーンデータにアクセスすることができ、データ駆動型自動化の未来を構築するための強固な基盤を提供することができます。

Twitterをフォローして今後の記事リリースの通知を受けたり、TelegramRedditに参加してChainlinkに関する一般的なニュースを入手したり、Discordで技術的な議論に参加したりすることができます。

Chainlink日本語リソース

--

--