オラクルシステムの最初の工程は、現実世界やインターネットから必要なデータを取得することです。取得されるデータには、取引所の価格、金融市場の指数、天候情報、スポーツの結果、IoTデバイスからのデータなどが含まれます。
実際の運用では、オラクルは単一の情報源に依存せず、複数のソースからデータを収集するのが一般的です。これは、単一ソースのデータが誤っていたり、遅延したり、改ざんされるリスクがあるためです。複数の情報源からデータを取得することで、システムの信頼性を高め、リスクを低減できます。
主なデータソースには、以下が挙げられます。
データの収集は通常、オラクルノードが担当します。これらのノードは専用ソフトウェアを稼働させ、外部データソースを常時監視し、最新情報をオラクルネットワークに送信して処理を進めます。
オラクルが単純にデータをブロックチェーンへアップロードするだけでは、システムはエラーや改ざんの影響を受ける可能性があります。そのため、多くのオラクルシステムはオンチェーン化前にデータの検証や集約を行います。
この工程は通常、複数ノードの協調によって実施されます。各ノードが収集したデータを提出し、平均値や中央値などのアルゴリズムで集約します。こうすることで、一部のノードが不正確なデータを提出しても、最終結果への影響を抑えられます。
一部のオラクルネットワークでは、さらに下記のような追加セキュリティ機能を導入しています。
これらの仕組みにより、オラクルシステムは悪意あるデータ改ざんを一定程度防ぎ、全体的なデータ品質を向上させることができます。
検証・集約後、オラクルノードは最終的なデータをブロックチェーンに提出し、特定のスマートコントラクトへ書き込みます。この工程は一般に「プライスフィード」と呼ばれます。
スマートコントラクト側から見ると、オラクルデータは外部から直接取得されるのではなく、オンチェーンのデータコントラクトに保管されています。他のDeFiプロトコルは、このコントラクトのインターフェースを呼び出すことで最新データを取得できます。
たとえば、レンディングプロトコルがアカウントの清算要否を判断する場合、以下のようなロジックを実行します。
このように、オラクルはオンチェーンアプリケーションの主要なデータ入力ポイントとなり、スマートコントラクトが現実世界の情報をもとに自動的にロジックを実行できるようになります。
金融アプリケーションにおいては、データの即時性も非常に重要です。価格更新が遅いと、清算の遅延や裁定機会の増加、さらにはシステミックリスクを引き起こす可能性もあります。そのため、オラクルシステムは一般的に特定のデータ更新メカニズムを導入しています。
用途によって求められる更新頻度は異なります。リアルタイムに近い価格更新を必要とするプロトコルもあれば、データの安定性を重視するものもあります。効率とコストのバランスを取るため、オラクルは複数の更新戦略を組み合わせて運用します。
主なメカニズムには、以下が挙げられます。
これらの設計では、ネットワークコスト、データ精度、市場の変動性などを考慮する必要があります。更新頻度が高すぎるとオンチェーン取引コストが増大し、逆に遅すぎると価格の遅延が大きくなります。
そのため、効率・コスト・セキュリティのバランスを取ることが、オラクルシステム設計の重要な課題となります。