This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Chainlink:オラクルマシンはブロックチェーンと現実世界をどのように接続するか
ブロックチェーンにおけるオラクルマシンシステムの重要性とChainlinkの実装メカニズム
オラクルマシンはブロックチェーン分野の重要な基盤インフラであり、チェーン上のスマートコントラクトに外部情報を提供することができます。スマートコントラクトとブロックチェーンの外部世界をつなぐミドルウェアとして、オラクルマシンは非常に重要な役割を果たしており、その主な機能はブロックチェーン上のスマートコントラクトにデータを提供することです。
例えば、私たちがイーサリアムネットワーク上に特定の日の原油取引量データを取得する必要があるスマートコントラクトをデプロイしたとします。スマートコントラクト自体はオフチェーンの現実世界のデータに直接アクセスできないため、この機能を実現するためにオラクルマシンを介する必要があります。この場合、スマートコントラクトは必要な日の原油取引量をイベントログに書き込みます。その後、オフチェーンでこのイベントログを監視し、購読するプロセスが起動します。取引のリクエストをリスニングすると、このプロセスはチェーン上のトランザクションを提出し、コントラクトの関連メソッドを呼び出して、指定された日の原油取引量情報をスマートコントラクトにアップロードします。
! チェーンリンク(オラクル解説シリーズのパート1)](https://img-cdn.gateio.im/webp-social/moments-ced3348559da0aabbf1c67c4d84ddc88.webp)
Chainlinkは現在、ブロックチェーン分野で市場占有率が最も高いオラクルマシンプロジェクトです。これは分散型のオラクルシステムであり、最も安全な方法でブロックチェーンに現実世界で生成されたデータを提供することを目的としています。Chainlinkは基本的なオラクルの原理に基づき、LINKトークンを通じて経済的インセンティブ駆動の良性エコシステムを構築しました。ChainlinkのオラクルはLINKトークンの転送によってトリガーされ、LINKはイーサリアムネットワーク上のERC677契約です。LINK ERC677トークンに基づいて実現されたオラクル機能はリクエスト/レスポンスモデルに属します。
! オラクル解説シリーズのチェーンリンク(パート1)](https://img-cdn.gateio.im/webp-social/moments-30dffd84ae22b9fa8f93929cd523ef99.webp0192837465674839201
ERC677トークン標準は、Chainlinkがオラクルマシンサービスのニーズを満たすために提案したものです。これは、標準ERC20の基礎の上にtransferAndCallメソッドを追加し、支払いとサービスリクエストを一つにまとめています。ユーザーがtransferAndCallを通じて送金を行うと、ERC20の送金機能に加えて、受取アドレスが契約アドレスであるかどうかを判断し、もしそうであれば、そのアドレスのonTokenTransferメソッドを呼び出します。
! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp(
Chainlinkの実装では、オラクルマシンの消費者がtransferAndCallメソッドを使用して料金を支払い、サービスを要求する際、オラクルマシン契約のonTokenTransferメソッドが最初に一連の安全チェックを行います。これには、転送がLINKトークンであることの確認、データの長さが制限を超えていないかのチェック、関数セレクタの検証などが含まれます。チェックが通過すると、deleGatecallを介して現在のオラクルマシン契約のoracleRequestメソッドが呼び出されます。
! チェーンリンク(オラクル解説シリーズのパート1)])https://img-cdn.gateio.im/webp-social/moments-d05f88f78a86510920ca9cb9cb97fcd6.webp(
oracleRequestメソッドは、ユニークなrequestIdを生成し、有効期限を設定し、関連情報をcommitmentsマッピングに追加します。最も重要なのは、リクエストデータを含むOracleRequestイベントを発行することで、これはCBOR)形式のエンコードを使用して(簡潔バイナリオブジェクトとして表現されます。
! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp(
オフチェーンノードはこれらのOracleRequestイベントを監視します。新しいリクエストが検出されると、ノードはイベント内の情報を解析し、API呼び出しを介して必要なデータを取得し、その後オラクル契約のfulfillOracleRequestメソッドを呼び出してデータをオンチェーンに提出します。このメソッドは一連の検証を行い、その後リクエスト元の契約のコールバック関数を呼び出して、結果を消費者契約に返します。
! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(
開発者にとって、既存の通貨ペアの価格を使用するだけであれば、Chainlinkが提供するPrice Feed)、つまりAggregator(を直接使用できます。各取引ペアには個別のPrice Feedがあり、実際にはAggregatorProxyコントラクトです。これらのコントラクトは、価格の精度、説明、バージョン、最新の価格データなどを取得するためのいくつかのクエリメソッドを提供します。ほとんどのアプリケーションシナリオでは、コントラクトは最新の価格を読み取る必要があるだけであり、つまりlatestRoundData)(メソッドを呼び出します。
! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-bb84d77f358852f47e9adf3e74ba5bf9.webp(
注目すべきは、USDを基準とした取引ペアは、その価格精度が通常8桁に統一されているため、異なるトークン間の精度処理の問題が簡素化されることです。この設計により、開発者は複雑なAPI呼び出しやデータ形式の変換を処理することなく、スマートコントラクト内でリアルタイム価格データをより便利に使用できるようになります。
! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-527bd8714534f5f06ccdd9afe40b253a.webp(