Chainlinkオラクルマシン技術解析:ブロックチェーンと現実世界をつなぐ橋梁

robot
概要作成中

オラクルマシン技術解析:Chainlinkを例にして

ブロックチェーンエコシステムにおいて、オラクルマシンは重要なインフラストラクチャの役割を果たしており、オンチェーンのスマートコントラクトに外部情報を提供しています。スマートコントラクトとブロックチェーンの外部世界をつなぐ橋渡しとして、オラクルマシンの主な機能はスマートコントラクトにデータを提供することです。

例えば、私たちがイーサリアムネットワーク上に特定の日の原油取引量データを取得する必要があるスマートコントラクトを作成したとします。スマートコントラクト自体はこのようなオフチェーンの現実世界のデータを直接取得することができないため、この場合はオラクルマシンを通じて実現する必要があります。この場合、スマートコントラクトは必要な日の原油取引量をイベントログに書き込みます。その後、オフチェーンでこのイベントログを監視し、購読するプロセスが開始されます。取引のリクエストがリスニングされたとき、そのプロセスはオンチェーントランザクションを提出し、コントラクトの関連メソッドを呼び出し、指定された日の原油取引量情報をスマートコントラクトにアップロードします。

! チェーンリンク(オラクル解説シリーズのパート1)](https://img-cdn.gateio.im/webp-social/moments-ced3348559da0aabbf1c67c4d84ddc88.webp)

Chainlinkの概要

ブロックチェーンのオラクルマシン分野では、Chainlinkが最大の市場シェアを占めています。Chainlinkは分散型のオラクルプロジェクトであり、その主な役割は安全で信頼性のある方法でブロックチェーンに現実世界のデータを提供することです。Chainlinkは基本的なオラクル原理に基づいて、LINKトークンを中心に経済的インセンティブを通じて良性循環のエコシステムを構築しています。ChainlinkのオラクルはLINKトークンの送金によってトリガーされ、LINKはイーサリアムネットワーク上のERC677契約です。LINK ERC677トークンに基づいて完了したオラクル機能はリクエスト/レスポンスモデルに属します。

! オラクル解説シリーズのチェーンリンク(パート1)](https://img-cdn.gateio.im/webp-social/moments-30dffd84ae22b9fa8f93929cd523ef99.webp0192837465674839201

ERC677トークンのtransferAndCallメカニズム

Chainlinkがオラクルマシンのフレームワークを設計する際に最も重要視したのは、ユーザーがサービスを提供するオラクルマシンにどのように料金を支払うかということです。標準的なERC20トークンでは、サービス提供後の支払いニーズを満たすことができないため、Chainlinkはオラクルマシンサービスのシナリオに適したERC677標準を提案しました。

ERC677は、標準ERC20の基盤の上にtransferAndCallメソッドを追加しました。このメソッドは、支払いとサービスリクエストを一つにまとめ、オラクルマシンビジネスシーンのニーズを満たします。ユーザーがtransferAndCallで送金を行う際、ERC20の送金に加えて、受取先のアドレスがコントラクトアドレスであるかどうかを判断し、もしそうであれば、そのアドレスのonTokenTransferメソッドを呼び出します。

注意すべきは、ユーザーがオラクルマシンサービスを要求する前に、そのオラクルマシンが信頼できるかどうかを確認する必要があるということです。なぜなら、オラクルマシンはサービスを提供する前に前払いの料金を請求する必要があるからです。

! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp(

チェーン上オラクルマシンリクエスト処理

オラクルマシンの消費者がtransferAndCallメソッドを使用して料金を支払い、サービスをリクエストする際、オラクルマシン契約内のonTokenTransferメソッドはまず一連の安全チェックを行います。これらのチェックには、転送がLINKトークンであることの確認、データの長さが制限を超えていないかの判断、関数セレクタが正しいかのチェックなどが含まれます。

すべてのセキュリティチェックが通過した後、契約はdeleGatecallを通じてオラクルマシン契約のoracleRequestメソッドを呼び出します。このメソッドは、ユニークなrequestIdを生成し、有効期限を設定し、関連情報をcommitmentsマッピングに保存します。最後に、リクエストデータを含むOracleRequestイベントが発行され、CBOR(Concise Binary Object Representation)エンコーディング形式が使用されます。

! チェーンリンク(オラクル解説シリーズのパート1)])https://img-cdn.gateio.im/webp-social/moments-d05f88f78a86510920ca9cb9cb97fcd6.webp(

オフチェーンノードの応答

オフチェーンノードがOracleRequestイベントを検出すると、リクエストの具体的な情報を解析し、ネットワークAPIを介して必要なデータを取得します。その後、ノードはオラクルマシン契約のfulfillOracleRequestメソッドを呼び出し、データをオンチェーンに提出します。

fulfillOracleRequestメソッドは、最初にコール者の権限を検証し、リクエストの有効性を確認するなど、一連のチェックを行います。チェックが通過すると、引き出し可能な金額が記録され、commitmentsマッピングからそのリクエストが削除され、リクエスターコントラクトのコールバック関数が呼び出されます。

! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp(

価格オラクルマシンの例

Chainlinkが提供するTestnetConsumerコントラクトのrequestEthereumPriceメソッドを例に挙げると、このメソッドは指定されたAPIからETH/USD取引価格を取得する機能を実装しています。それはsendChainlinkRequestToメソッドを呼び出すことでリクエストを発信し、オラクルマシンコントラクトのonTokenTransferメソッドをトリガーします。

オフチェーンノードは、リクエスト情報を取得した後、APIを呼び出して価格データを取得し、次にfulfillOracleRequestメソッドを通じてデータをオンチェーンに提出します。最終的に、データはコールバック関数を介して消費者コントラクトに返されます。

開発者にとって、既存の通貨ペアの価格を使用する必要がある場合は、Chainlinkが提供するPrice Feed(すなわちAggregatorProxy)を直接使用できます。各取引ペアには個別のPrice Feedがあり、価格精度の取得、取引ペアの説明、最新の価格データなど、複数のクエリ方法を提供しています。

ほとんどのアプリケーションシナリオでは、契約は最新の価格を読み取るだけで済むため、latestRoundDataメソッドを呼び出す必要があります。通常、USDを基準とした取引ペアの価格精度は8桁に統一されており、異なるトークンの精度処理の問題を簡素化しています。

! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(

LINK-6.31%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 4
  • 共有
コメント
0/400
SerumSquirtervip
· 17時間前
価格データは本当に安くない
原文表示返信0
ShitcoinConnoisseurvip
· 07-21 00:45
linkは私の真実の愛でしょう
原文表示返信0
MercilessHalalvip
· 07-21 00:30
リンクは肉を食べるのを待って起きます
原文表示返信0
DeFiDoctorvip
· 07-21 00:27
外部データウイルスの脅威が大きいため、ノードは定期的に健康診断を受けることをお勧めします。
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)