# オラクルマシン技術詳解:Chainlinkを例にオラクルマシンはブロックチェーン分野においてスマートコントラクトと外部世界をつなぐ重要なインフラです。これはミドルウェアシステムとして、チェーン上のスマートコントラクトに外部データ情報を提供することができます。オラクルマシンのコア機能は、ブロックチェーン上のスマートコントラクトにデータを供給することです。! チェーンリンク(オラクル解説シリーズのパート1)](https://img-cdn.gateio.im/social/moments-ced3348559da0aabbf1c67c4d84ddc88)例えば、私たちがイーサリアムネットワーク上に特定の日付の原油取引量データを取得する必要があるスマートコントラクトをデプロイしたと仮定します。スマートコントラクト自体はオフチェーンの現実世界データに直接アクセスできないため、オラクルマシンを利用する必要があります。具体的なプロセスは、スマートコントラクトが必要な日付の原油取引量データの要求をイベントログに書き込むことから始まります。その後、オフチェーンでこのイベントログを監視し、サブスクライブするプロセスが起動します。取引内のリクエストが検出されると、このプロセスはチェーン上のトランザクションを提出することで、契約の関連メソッドを呼び出し、指定された日付の原油取引量情報をスマートコントラクトにアップロードします。! オラクル解説シリーズのチェーンリンク(パート1)](https://img-cdn.gateio.im/social/moments-30dffd84ae22b9fa8f93929cd523ef990192837465674839201オラクルマシン市場において、Chainlinkは最大の市場シェアを占めています。分散型のオラクルマシンプロジェクトとして、Chainlinkは最も安全な方法でブロックチェーンに現実世界で生成されたデータを提供することを目的としています。Chainlinkは基本的なオラクルマシンの原理に基づき、LINKトークンを通じて経済的インセンティブによる良性循環のエコシステムを構築しています。ChainlinkオラクルマシンはLINKトークンの送金によってトリガーされる必要があります。LINKはイーサリアムネットワーク上のERC677コントラクトであり、LINKトークンに基づいて実行されるオラクルマシン機能はリクエスト/レスポンスモデルに属します。! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/social/moments-36eedcde4ebee55bf1c0e6c5f02934df(ERC677トークン標準はERC20の基礎の上にtransferAndCallメソッドを追加しました。このメソッドは支払いとサービスのリクエストを一つにまとめ、オラクルマシンのビジネスシーンのニーズを満たします。ユーザーがtransferAndCall送金を行うと、ERC20の送金に加えて、受取先アドレスがコントラクトアドレスであるかどうかを判断し、もしそうであればそのアドレスのonTokenTransferメソッドを呼び出します。! チェーンリンク(オラクル解説シリーズのパート1)])https://img-cdn.gateio.im/social/moments-d05f88f78a86510920ca9cb9cb97fcd6(オラクルマシンサービスをリクエストする前に、ユーザーはそのオラクルマシンの信頼性を確認する必要があります。なぜなら、オラクルマシンは消費者にサービスを提供する前に支払いを受ける必要があるからです。オラクルマシンの消費者がtransferAndCallメソッドを使用して料金を支払い、サービスをリクエストすると、オラクルマシン契約のonTokenTransferメソッドは一連のセキュリティチェックを行います。これには、送金がLINKトークンであるかの検証、データ長の制限チェック、function selectorの検証などが含まれます。チェックを通過した後、deleGatecallを介してオラクル契約のoracleRequestメソッドが呼び出されます。! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/social/moments-dae23b36c6a83626aa95ba58fa8dbee5(oracleRequestメソッドはユニークなrequestIdを生成し、期限を設定し、OracleRequestイベントを発行します。このイベントはリクエストデータを含み、CBORエンコーディング形式を採用しています。オフチェーンノードはこのイベントをリスンし、リクエスト情報を解析し、APIを通じて必要なデータを取得し、最後にトランザクションを提出することでfulfillOracleRequestメソッドを呼び出し、データをオンチェーンに提出します。! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/social/moments-1994fff156354700fda0609f9e317726(fulfillOracleRequestメソッドは、一連の検証を行います。これには、呼び出し元の権限の確認、リクエストの有効性の検証などが含まれます。検証が通過した後、引き出し可能なトークンの数を記録し、リクエスト元のコントラクトのコールバック関数を呼び出してデータを返します。! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/social/moments-bb84d77f358852f47e9adf3e74ba5bf9(開発者にとって、既存の通貨ペアの価格データのみを使用したい場合は、公式が提供するPrice Feedインターフェースを直接呼び出すことができます。各取引ペアには個別のPrice Feed)、すなわちAggregator(があり、実際にはAggregatorProxyコントラクトです。開発者はlatestRoundData)(メソッドを呼び出すことで最新の価格データを取得でき、その中のanswerパラメーターが最新の価格となります。ほとんどのUSD建ての取引ペアは精度が8桁に統一されており、異なるトークン間の精度処理が簡素化されています。! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/social/moments-527bd8714534f5f06ccdd9afe40b253a(
Chainlinkオラクルマシン:ブロックチェーンとリアルワールドをつなぐブリッジ
オラクルマシン技術詳解:Chainlinkを例に
オラクルマシンはブロックチェーン分野においてスマートコントラクトと外部世界をつなぐ重要なインフラです。これはミドルウェアシステムとして、チェーン上のスマートコントラクトに外部データ情報を提供することができます。オラクルマシンのコア機能は、ブロックチェーン上のスマートコントラクトにデータを供給することです。
! チェーンリンク(オラクル解説シリーズのパート1)](https://img-cdn.gateio.im/webp-social/moments-ced3348559da0aabbf1c67c4d84ddc88.webp)
例えば、私たちがイーサリアムネットワーク上に特定の日付の原油取引量データを取得する必要があるスマートコントラクトをデプロイしたと仮定します。スマートコントラクト自体はオフチェーンの現実世界データに直接アクセスできないため、オラクルマシンを利用する必要があります。具体的なプロセスは、スマートコントラクトが必要な日付の原油取引量データの要求をイベントログに書き込むことから始まります。その後、オフチェーンでこのイベントログを監視し、サブスクライブするプロセスが起動します。取引内のリクエストが検出されると、このプロセスはチェーン上のトランザクションを提出することで、契約の関連メソッドを呼び出し、指定された日付の原油取引量情報をスマートコントラクトにアップロードします。
! オラクル解説シリーズのチェーンリンク(パート1)](https://img-cdn.gateio.im/webp-social/moments-30dffd84ae22b9fa8f93929cd523ef99.webp0192837465674839201
オラクルマシン市場において、Chainlinkは最大の市場シェアを占めています。分散型のオラクルマシンプロジェクトとして、Chainlinkは最も安全な方法でブロックチェーンに現実世界で生成されたデータを提供することを目的としています。Chainlinkは基本的なオラクルマシンの原理に基づき、LINKトークンを通じて経済的インセンティブによる良性循環のエコシステムを構築しています。ChainlinkオラクルマシンはLINKトークンの送金によってトリガーされる必要があります。LINKはイーサリアムネットワーク上のERC677コントラクトであり、LINKトークンに基づいて実行されるオラクルマシン機能はリクエスト/レスポンスモデルに属します。
! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/webp-social/moments-36eedcde4ebee55bf1c0e6c5f02934df.webp(
ERC677トークン標準はERC20の基礎の上にtransferAndCallメソッドを追加しました。このメソッドは支払いとサービスのリクエストを一つにまとめ、オラクルマシンのビジネスシーンのニーズを満たします。ユーザーがtransferAndCall送金を行うと、ERC20の送金に加えて、受取先アドレスがコントラクトアドレスであるかどうかを判断し、もしそうであればそのアドレスのonTokenTransferメソッドを呼び出します。
! チェーンリンク(オラクル解説シリーズのパート1)])https://img-cdn.gateio.im/webp-social/moments-d05f88f78a86510920ca9cb9cb97fcd6.webp(
オラクルマシンサービスをリクエストする前に、ユーザーはそのオラクルマシンの信頼性を確認する必要があります。なぜなら、オラクルマシンは消費者にサービスを提供する前に支払いを受ける必要があるからです。オラクルマシンの消費者がtransferAndCallメソッドを使用して料金を支払い、サービスをリクエストすると、オラクルマシン契約のonTokenTransferメソッドは一連のセキュリティチェックを行います。これには、送金がLINKトークンであるかの検証、データ長の制限チェック、function selectorの検証などが含まれます。チェックを通過した後、deleGatecallを介してオラクル契約のoracleRequestメソッドが呼び出されます。
! オラクル解説シリーズのチェーンリンクパート1])https://img-cdn.gateio.im/webp-social/moments-dae23b36c6a83626aa95ba58fa8dbee5.webp(
oracleRequestメソッドはユニークなrequestIdを生成し、期限を設定し、OracleRequestイベントを発行します。このイベントはリクエストデータを含み、CBORエンコーディング形式を採用しています。オフチェーンノードはこのイベントをリスンし、リクエスト情報を解析し、APIを通じて必要なデータを取得し、最後にトランザクションを提出することでfulfillOracleRequestメソッドを呼び出し、データをオンチェーンに提出します。
! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-1994fff156354700fda0609f9e317726.webp(
fulfillOracleRequestメソッドは、一連の検証を行います。これには、呼び出し元の権限の確認、リクエストの有効性の検証などが含まれます。検証が通過した後、引き出し可能なトークンの数を記録し、リクエスト元のコントラクトのコールバック関数を呼び出してデータを返します。
! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-bb84d77f358852f47e9adf3e74ba5bf9.webp(
開発者にとって、既存の通貨ペアの価格データのみを使用したい場合は、公式が提供するPrice Feedインターフェースを直接呼び出すことができます。各取引ペアには個別のPrice Feed)、すなわちAggregator(があり、実際にはAggregatorProxyコントラクトです。開発者はlatestRoundData)(メソッドを呼び出すことで最新の価格データを取得でき、その中のanswerパラメーターが最新の価格となります。ほとんどのUSD建ての取引ペアは精度が8桁に統一されており、異なるトークン間の精度処理が簡素化されています。
! オラクル解説シリーズのチェーンリンク(パート1)])https://img-cdn.gateio.im/webp-social/moments-527bd8714534f5f06ccdd9afe40b253a.webp(