チェーンリンクはオフチェーンソースからどのようにデータを収集するのですか? — データフィードについての解説
スマートコントラクトはブロックチェーンの技術革新で、当事者間の複雑な合意を自動的で信頼できる形で実行することが可能です。ただし、スマートコントラクトはオフチェーンデータへのアクセスができないという制限があり、それがコントラクトの結果に大きな影響を与える可能性があります。ここで役立つのがチェーンリンクのデータフィードです。
チェーンリンクのデータフィードは、スマートコントラクトが正しく機能するために必要な実世界のデータソースへの安全で信頼性の高いアクセスを提供します。これにより、市場価格や天気状況、その他コントラクトの結果に影響を与える外部イベントなどのオフチェーンデータへのアクセスがスマートコントラクトに可能になります。チェーンリンクのデータフィードを統合することで、スマートコントラクトはより複雑なユースケースを実行し、これまで不可能だった新しい可能性を解き放つことができます。
このブログでは、チェーンリンクがオフチェーンソースからデータを収集するアプローチ、データの正確性を保証するためのコンセンサスの役割、そしてそのデータがスマートコントラクトにどのように提供されるかについて詳しく見ていきます。我々は、チェーンリンクのデータフィードが分散型アプリケーションに新しい可能性をどのように解き放っているかについて探究します。
関連記事
オラクルとは何か?そしてチェーンリンクはオプティマルなソリューションを提供するためにどのようにリーダーシップをとっているのか?
チェーンリンクのアーキテクチャ
チェーンリンクは、オフチェーンレポーティングと分散データモデルという二つのアーキテクチャモデルを使用して、オフチェーンソースからデータを取得し、それをスマートコントラクトに転送します。
オフチェーンレポーティング
チェーンリンクはオフチェーンレポーティング(OCR)を活用して、オフチェーンソースからの分散データ収集を保証します。OCRは特定のデータフィードに対してデータを提供する責任を持つ複数のノードオペレーターを関与させます。プロトコルの実行は主に、チェーンリンクノード間のピアツーピアネットワーク上でオフチェーンで行われます。ノードは定期的に新しいリードノードを選出し、残りのプロトコルを進行させます。通信中には、軽量なコンセンサスアルゴリズムが稼働し、各ノードがそのデータ観測を報告し署名します。
リードノードは定期的にフォロワーに新たな署名済みの観測を提供するよう依頼し、それを一つの報告に集約します。次にこの報告をフォロワーに送り返し、その有効性を検証するよう依頼します。求められる数のフォロワーが署名して報告をリードに送り返し、承認すると、リードはクォーラムの署名を持つ最終報告をまとめます。
続いて、リードノードは集約された報告をオンチェーンアグリゲーターに送るトランザクションを提出します。各報告には多くのノードの観測が含まれており、ノード達のクォーラムによって署名されていなければなりません。
すべてのノードはブロックチェーンで最終報告を監視し、伝送中のどの単一障害点も排除します。指定されたノードが特定の期間内に送信を確認できない場合、他のノードも最終報告を送信できるようにラウンドロビン・プロトコルが効果を発揮し、そのうちの1つが確認されるまで効果を発揮します。
一つのラウンドごとにたった一つのトランザクションを提出することには、多数の利点があります。これには、チェーンリンクのオラクルネットワークによるネットワーク混雑の低減、個々のノードオペレーターによるガスコストの削減、ノードネットワークのスケーラビリティの向上、データフィードのよりタイムリーな更新(各ラウンドが複数のトランザクションの確認を待つ必要がなくなるため)などが含まれます。
分散データモデル
分散型オラクルネットワークには3つのコンポーネントが含まれます:
- アグリゲータコントラクト
- プロキシコントラクト
- 消費者コントラクト
アグリゲータコントラクト
報告がオンチェーンアグリゲーターに伝えられた後、検証プロセスがあり、アグリゲーターは必要な数のノードが報告に署名していること、そしてこれらの署名の有効性を確認します。その後、アグリゲーターは中央値を消費者コントラクトにブロックのタイムスタンプとラウンドIDと共に公開します。
アグリゲーターはオラクルネットワークによってのみ更新され、二つの閾値条件のうちの一つが満たされた場合に限ります:
-
偏差閾値: ノードによって新しい集約ラウンドは、オフチェーン値がオンチェーン値から定義された偏差閾値よりも大きく逸脱した場合に開始されます(各価格フィードは異なる偏差閾値をもっています。それについてはdata.chain.linkで確認できます)。これにより、価格フィードの更新された値がオンチェーン上で正確に反映されることが保証されます。例えば、ETH/USDの場合、オフチェーン価格が0.5%から逸脱すると新たなデータ集約ラウンドが始まり、同じプロセスを繰り返します。
-
ハートビート閾値: 偏差閾値に加えて、価格逸脱が偏差閾値以内であっても、ハートビート閾値に達した時点で新しいデータ集約ラウンドが開始されます。ハートビート閾値は、二つの連続するデータ更新の間の指定された時間間隔です。
消費者コントラクト
消費者は、アグリゲーターインターフェイス(例えばAggregatorV3Interface
)を継承する私たちのスマートコントラクトで、データフィードのアグリゲーターの公開関数のうちの一つを呼び出します。
プロキシコントラクト
プロキシコントラクトは、特定のデータフィードのアグリゲーターを指すオンチェーンプロキシです。プロキシを使用することで、下層のアグリゲーターをサービス中断なしにアップグレードできます。
結論
結論として、チェーンリンクはスマートコントラクトがオフチェーンデータソースに安全にアクセスできるようにする分散型インフラを提供します。これは、さまざまなソースからデータを取得して検証する独立したノードオペレーターのネットワークを使用することで実現します。分散型アプローチを使用することで、チェーンリンクは単一障害点を排除し、データの信頼性と正確さを保証します。これにより、スマートコントラクトは信頼を持って実行され、ブロックチェーン技術の新たなユースケースとアプリケーションの範囲を広げることができます。
この包括的なガイドは、全てのスキルレベルの開発者に役立つように設計されており、幅広い開発者にとって有益であることを意図しています。提供される情報は、すべての読者にとって理解しやすく、実用的であることを目的としています。
このコンテンツが役立った場合は、拍手してフィードバックを残すことを検討してください。あなたの提案やコメントは大変ありがたいもので、これらの記事をあなたや他の読者にとってさらに価値のあるものにするのに役立ちます。
今後の記事と新しいコンテンツの情報を得るために、フォローしてください。
ありがとうございました
@alymurtazamemon
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/alymurtazamemon/how-does-chainlink-collect-data-from-off-chain-sources-data-feeds-explained-540m