# オラクルマシンシステム:スマートコントラクトと現実世界の架け橋ブロックチェーンエコシステムにおいて、オラクルマシンは非常に重要な役割を果たします。それはミドルウェアシステムとして、チェーン上のスマートコントラクトに外部情報を提供し、ブロックチェーンの世界と現実世界をつなげることができます。オラクルマシンのコア機能は、スマートコントラクトに必要な外部データを提供することです。例えば、私たちがイーサリアムネットワーク上に特定の日の原油取引量データを取得する必要があるスマートコントラクトを作成したとします。スマートコントラクト自体は、このようなオフチェーンの現実世界のデータを直接取得することができないため、オラクルマシンを利用する必要があります。この場合、スマートコントラクトは必要な日付の原油取引量をイベントログに書き込みます。その後、オフチェーンでこのイベントログを監視し、購読するプロセスが起動します。取引のリクエストを監視した際に、そのプロセスはオンチェーン取引を提出することで、関連する方法を呼び出し、指定された日付の原油取引量情報をスマートコントラクトにアップロードします。! チェーンリンク(オラクル解説シリーズのパート1)](https://img-cdn.gateio.im/social/moments-ced3348559da0aabbf1c67c4d84ddc88)## Chainlink:オラクルソリューションをリード現在のブロックチェーン市場において、Chainlinkはシェアが最も高いオラクルマシンプロジェクトです。分散型オラクルシステムとして、Chainlinkは最も安全な方法でブロックチェーンに現実世界で生成されたデータを提供することを目指しています。基本的なオラクルの原理の上に、ChainlinkはLINKトークンを中心に経済的インセンティブ駆動のエコシステムを構築しています。Chainlinkオラクルマシンのトリガーは、LINKトークンの転送によって実現されます。LINKはイーサリアムネットワーク上のERC677コントラクトであり、LINK ERC677トークンに基づいて行われるオラクルマシン機能はリクエスト/レスポンスモデルに属します。! オラクル解説シリーズのチェーンリンク(パート1)](https://img-cdn.gateio.im/social/moments-30dffd84ae22b9fa8f93929cd523ef990192837465674839201ERC677トークンのtransferAndCallメカニズム)Chainlinkはオラクルマシンのフレームワークを設計する際、まずユーザーがオラクルマシンにサービス料金を支払う方法を考慮しました。標準的なERC20トークンが「サービス提供後に支払う」というニーズに応えられないため、Chainlinkはオラクルマシンサービスシナリオに適したERC677標準を提案しました。ERC677は、標準ERC20の基盤にtransferAndCallメソッドを追加しました。このメソッドは、支払いとサービス要求を一つにまとめ、オラクルマシンのビジネスシーンのニーズを満たします。ユーザーがtransferAndCallで送金を行う際、ERC20の送金に加えて、受取先アドレスがコントラクトアドレスであるかどうかを判断し、もしそうであれば、そのアドレスのonTokenTransferメソッドを呼び出します。注意すべきは、ユーザーがオラクルマシンサービスをリクエストする前に、そのオラクルマシンが信頼できるかどうかを確認する必要があるということです。なぜなら、オラクルマシンはサービスを提供する前に料金を請求する必要があるからです。! オラクル解説シリーズのチェーンリンクパート1]###https://img-cdn.gateio.im/social/moments-36eedcde4ebee55bf1c0e6c5f02934df() チェーン上のオラクルマシンリクエストフローオラクルマシンの消費者がtransferAndCallメソッドを使用して料金を支払い、サービスをリクエストする際、オラクルマシンコントラクト内のonTokenTransferメソッドは一連のセキュリティチェックを実施します。これには、送金がLINKトークンであることの検証、データの長さが制限を超えていないかの確認、データが正しい関数セレクタを含んでいるかの検証などが含まれます。チェックが通過した後、オラクルマシン契約はユニークなrequestIdを生成し、リクエストに関連する情報をcommitmentsマッピングに保存します。最後に、契約はリクエストの詳細データを含むOracleRequestイベントを発信します。! チェーンリンク(オラクル解説シリーズのパート1)]###https://img-cdn.gateio.im/social/moments-d05f88f78a86510920ca9cb9cb97fcd6() オフチェーンノード応答メカニズムチェーン外ノードがOracleRequestイベントをリッスンした後、リクエストの具体的な情報を解析し、API呼び出しを通じて必要なデータを取得します。その後、ノードは取引を提出することによって、オラクルマシン契約のfulfillOracleRequestメソッドを呼び出し、データをチェーン上に提出します。この方法は、呼び出し元が承認されたノードであるかどうかの確認、リクエストIDの有効性の検証など、一連の検証を行います。検証が通過すると、コントラクトは引き出し可能なトークンの数量を記録し、commitmentsマッピングからそのリクエストIDを削除します。最後に、契約は要求者契約のコールバック関数を呼び出し、データを消費者契約に返します。価格オラクルマシンの場合、これは通常、現在の価格データを更新することを含みます。! オラクル解説シリーズのチェーンリンクパート1]###https://img-cdn.gateio.im/social/moments-dae23b36c6a83626aa95ba58fa8dbee5(## 価格オラクルマシンの簡素な使用開発者にとって、既存の通貨ペアの価格データを使用するだけで、API URLを自分で指定する必要がない場合、Chainlinkが提供するPrice Feedを直接使用できます。各取引ペアには独立したPrice Feed)、別名Aggregator(があり、実際にはAggregatorProxyスマートコントラクトです。これらのスマートコントラクトは通常、以下の主要なクエリメソッドを提供します:- decimals)(: 価格データを返す精度の桁数- description)(:取引ペアの名前を返します- version)(: プロキシが送信されるアグリゲーター タイプを示します- getRoundData)_roundId(:ラウンドIDに基づいて過去の価格データを取得する- latestRoundData)(:最新の価格データを取得するほとんどのアプリケーションシーンでは、契約は最新の価格を読み取るだけで済むため、latestRoundData)(メソッドを呼び出す必要があります。このメソッドが返すanswerパラメータが最新の価格です。注目すべきは、大部分のアプリケーションがトークン価格を読み取る際に、USDを基準単位としていることです。この場合、価格データの精度は通常8桁の小数に統一されており、異なるトークン間の精度処理の問題を簡素化しています。! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/social/moments-1994fff156354700fda0609f9e317726(
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トークンであることの検証、データの長さが制限を超えていないかの確認、データが正しい関数セレクタを含んでいるかの検証などが含まれます。
チェックが通過した後、オラクルマシン契約はユニークなrequestIdを生成し、リクエストに関連する情報をcommitmentsマッピングに保存します。最後に、契約はリクエストの詳細データを含むOracleRequestイベントを発信します。
! チェーンリンク(オラクル解説シリーズのパート1)]###https://img-cdn.gateio.im/webp-social/moments-d05f88f78a86510920ca9cb9cb97fcd6.webp(
) オフチェーンノード応答メカニズム
チェーン外ノードがOracleRequestイベントをリッスンした後、リクエストの具体的な情報を解析し、API呼び出しを通じて必要なデータを取得します。その後、ノードは取引を提出することによって、オラクルマシン契約のfulfillOracleRequestメソッドを呼び出し、データをチェーン上に提出します。
この方法は、呼び出し元が承認されたノードであるかどうかの確認、リクエストIDの有効性の検証など、一連の検証を行います。検証が通過すると、コントラクトは引き出し可能なトークンの数量を記録し、commitmentsマッピングからそのリクエストIDを削除します。
最後に、契約は要求者契約のコールバック関数を呼び出し、データを消費者契約に返します。価格オラクルマシンの場合、これは通常、現在の価格データを更新することを含みます。
! オラクル解説シリーズのチェーンリンクパート1]###https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp(
価格オラクルマシンの簡素な使用
開発者にとって、既存の通貨ペアの価格データを使用するだけで、API URLを自分で指定する必要がない場合、Chainlinkが提供するPrice Feedを直接使用できます。各取引ペアには独立したPrice Feed)、別名Aggregator(があり、実際にはAggregatorProxyスマートコントラクトです。
これらのスマートコントラクトは通常、以下の主要なクエリメソッドを提供します:
ほとんどのアプリケーションシーンでは、契約は最新の価格を読み取るだけで済むため、latestRoundData)(メソッドを呼び出す必要があります。このメソッドが返すanswerパラメータが最新の価格です。
注目すべきは、大部分のアプリケーションがトークン価格を読み取る際に、USDを基準単位としていることです。この場合、価格データの精度は通常8桁の小数に統一されており、異なるトークン間の精度処理の問題を簡素化しています。
! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(