Lesson 1

イーサリアムオラクル(イーサリアムオラクル)の紹介

このコースへようこそ。イーサリアムオラクルの世界を探求する旅を始めるにあたり、ブロックチェーンネットワークが外部世界と通信する方法を学ぶことになります。オラクルは、スマートコントラクトの確実性と常に変化する現実世界をつなぐ橋のような存在です。このコースの目標は、オラクルの複雑さを解読し、理解しやすくアプローチできるようにすることです。

オラクル(Oracles)の意味は何ですか?

イーサリアムの分散型ネットワークとスマートコントラクトは、現実世界から完全に隔離されています。 この隔離は一貫性、セキュリティ、誠実性を確保しています。 しかし、これは制限をもたらします: これらのスマートコントラクトは独自で外部データにアクセスまたは検証することができません。 では、契約の実行が金の現在価格、特定都市の天候条件、または選挙結果に依存する場合はどうでしょうか?

オラクルはこのギャップを埋める。使者として、彼らは実世界の情報を収集し、検証し、スマートコントラクトに提供することで、分散型アプリケーションの可能性を拡大させます。

次の状況を想像してください:

Solidity//モックスマートコントラクトには外部データコントラクトGoldPriceBetが続きます { Oracle OracleInstance;//オラクルインスタンスリアルタイムゴールドインスタンスアドレス賭け手;uint256賭け金;Function placeGoldPriceBet(uint PredictedPrice)外部ペイアブル{        bettor = msg.sender;        wagerAmount = msg.value;        //ここで通常、オラクルを呼び出して現在の金価格を取得します    }}

コードコメント:

  • オラクルOracleInstance;これは私たちのためのプレースホルダーですゴールドプライスベット金(Oracle)契約の現在の価格を取得するために対話する契約。
  • placeGoldPriceBet関数を使用すると、ユーザーは価格を予測して賭けをすることができます金の。理想的には、賭けをした後、オラクルが呼び出されて、金のリアルタイムの価格を取得し、結果を決定します。

多様なオラクルエコシステム

大まかに言えば、オラクルは主に2つのカテゴリに分けられます:

中央集権的なオラクル

単一のエンティティまたは組織によって運用される集中型オラクルは効率的で、データを迅速に取得できます。しかし、彼らのアキレス腱は信頼です。スマートコントラクトの実行は、この中央集権的なエンティティの整合性に依存します。データが操作されたり、誤ったりすると、予期しない結果が生じる可能性があります。

デセントラライズされたオラクル

中央集権システムの欠点を緩和するために、分散型オラクルが登場しました。ここでは、複数のオラクルからなるネットワークがデータを提供します。スマートコントラクトは、平均値や中央値などの集約方法を使用して値を算出することがあります。これらのオラクルはデータソースを分散させることで、人為的な操作や単一障害点に伴うリスクを軽減します。

Solidity//柔軟なオラクルフレームワークを活用した説明的なスマートコントラクト契約商品価格フィード{分散型オラクル[] OracleArray; //分散型オラクルの配列関数deriveAveragePrice()外部ビューを返します(uint256){uint256 cumulativeValue = 0; for(uint i = 0; i < oracleArray.length; i++){cumulativeValue += oracleArray[i].fetchPrice();} return cumulativeValue/ oracleArray.length;}}

コードコメント:

  • DecentralizedOracle [] OracleArray; this is an array that stores multiple instances of decentralized oracles.
  • 平均価格を導出する関数は、OracleArray内のすべてのオラクルから得られた平均価格を計算します。それは各オラクルを通過し、価格を取得し、その後、オラクルの数で割って平均値を求めます。

リアルワールドオラクルアプリケーション

オラクルの潜在的な応用は非常に広範囲で多様です:

  • 金融派生商品:オプションなどの金融商品は、契約を実行するために実世界の資産価格へのアクセスが必要です。
  • スマート保険:フライトが遅れた場合に自動的にユーザーに補償を行う旅行保険スマートコントラクトを想像してみてください。このデータは航空トレーラーから提供されます。
  • サプライチェーン検証:ブロックチェーンに外部データを入力することで、製造から顧客配送まで製品をリアルタイムで追跡することが可能です。
  • 分散型ゲーム:ブロックチェーンベースのオンラインゲームは、スポーツの試合結果などの現実世界のイベントに基づいてゲームの結果に影響を与えるためにオラクルを使用することができます。
    オラクルについて詳しく読むブロックチェーンにおけるオラクルとは何ですか?

金融デリバティブと取引プラットフォーム

金融プラットフォームは、資産価格、金利、その他の経済指標に関するリアルタイム情報が必要です。分散型デリバティブプラットフォームは、オラクルを使用して、先物取引やオプションなどの契約が正確で改ざんできない市場データに基づいて決済されることを保証します。

SoliditySolidityCopy code//便利なオプションのスマートコントラクトの例contract DecentralizedOption { Oracle PriceOracle; uint256 strikePrice = 1000;//値の例 function exerciseOption () external { uint256 currentPrice = priceOracle.fetchCurrentPrice ();       if (currentPrice strikePrice>) { // オプションを実行するロジック } }}

コードコメント:

  • 分散オプションコントラクトはオラクルとやり取りして現在の価格を取得します。
  • ユーザーがオプションを行使すると、契約は現在の価格を事前に定義された執行価格と比較して、結果を決定します。

スマート保険

オラクルは、分散型保険プラットフォームの開発を促進し、作物保険に必要な気象パターン、旅行保険に必要な飛行条件、または地震保険に必要な地震活動などのデータを提供しています。

Soliditycontract FlightDelayInsurance { Oracle FlightStatusOracle; function claimInsurance (string flightNumber) external { string status = flightstatusOracle.getFlightStatus (flightNumber);        if (strcmp (status, " Delayed") == 0) {            // 保険金を請求するロジック        }    }}

コードコメント:

  • フライト遅延保険契約では、オラクルを使用して飛行状況を取得します。
  • フライトの状況によっては、フライトが遅延した場合に被保険者に補償されます。

サプライチェーンの検証

分散型サプライチェーンソリューションの場合、オラクルは原材料の調達から製品の配送までのすべての段階で検証可能なデータを提供し、製品の真正性と倫理的な調達を確保できます。

Soliditycontract supplyChainTracker { Oracle LocationOracle; address ProductOwner; function verifyProductLocation (address ProductID) external view returns (string memory) {        return locationOracle.fetchProductLocation(productID);    }}

コードコメント:

  • この契約では、製品の供給チェーンのどの段階でも製品の場所を取得するためにオラクルを使用しています。
  • 製品を追跡し、その起源と経路を検証するために使用できます。

分散型ゲーム

スポーツイベントの結果や株式市場の動きなど、現実世界のイベントを統合したゲームは、オラクルを使用して必要なデータを取得することで、分散的に構築できます。

SolidityContract SportsBet { Oracle SportsResultOracle; Function placeBet (string teamName) external payable {        // ベットをするためのロジック    } function resolveBet () external {        string winningTeam = sportsResultOracle.getMatchResult();        // 結果に基づいて勝者に報酬を与えるためのロジック    }}

コードコメント:

  • スポーツベットユーザーはスポーツイベントの結果に賭けることができます。
  • それから、オラクルとやり取りして、試合結果を取得し、それに応じてベットを解決します。
    今、私たちはイーサリアムオラクルの世界についての予備的な探求を行っています。後続のコースでは、オラクルをスマートコントラクトに統合する微妙な点について詳しく説明します。この内容がとても興奮させるものであれば、学ぶ意欲を持ち続けてください。分散型データの世界が私たちを招いていますから!
Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
Catalog
Lesson 1

イーサリアムオラクル(イーサリアムオラクル)の紹介

このコースへようこそ。イーサリアムオラクルの世界を探求する旅を始めるにあたり、ブロックチェーンネットワークが外部世界と通信する方法を学ぶことになります。オラクルは、スマートコントラクトの確実性と常に変化する現実世界をつなぐ橋のような存在です。このコースの目標は、オラクルの複雑さを解読し、理解しやすくアプローチできるようにすることです。

オラクル(Oracles)の意味は何ですか?

イーサリアムの分散型ネットワークとスマートコントラクトは、現実世界から完全に隔離されています。 この隔離は一貫性、セキュリティ、誠実性を確保しています。 しかし、これは制限をもたらします: これらのスマートコントラクトは独自で外部データにアクセスまたは検証することができません。 では、契約の実行が金の現在価格、特定都市の天候条件、または選挙結果に依存する場合はどうでしょうか?

オラクルはこのギャップを埋める。使者として、彼らは実世界の情報を収集し、検証し、スマートコントラクトに提供することで、分散型アプリケーションの可能性を拡大させます。

次の状況を想像してください:

Solidity//モックスマートコントラクトには外部データコントラクトGoldPriceBetが続きます { Oracle OracleInstance;//オラクルインスタンスリアルタイムゴールドインスタンスアドレス賭け手;uint256賭け金;Function placeGoldPriceBet(uint PredictedPrice)外部ペイアブル{        bettor = msg.sender;        wagerAmount = msg.value;        //ここで通常、オラクルを呼び出して現在の金価格を取得します    }}

コードコメント:

  • オラクルOracleInstance;これは私たちのためのプレースホルダーですゴールドプライスベット金(Oracle)契約の現在の価格を取得するために対話する契約。
  • placeGoldPriceBet関数を使用すると、ユーザーは価格を予測して賭けをすることができます金の。理想的には、賭けをした後、オラクルが呼び出されて、金のリアルタイムの価格を取得し、結果を決定します。

多様なオラクルエコシステム

大まかに言えば、オラクルは主に2つのカテゴリに分けられます:

中央集権的なオラクル

単一のエンティティまたは組織によって運用される集中型オラクルは効率的で、データを迅速に取得できます。しかし、彼らのアキレス腱は信頼です。スマートコントラクトの実行は、この中央集権的なエンティティの整合性に依存します。データが操作されたり、誤ったりすると、予期しない結果が生じる可能性があります。

デセントラライズされたオラクル

中央集権システムの欠点を緩和するために、分散型オラクルが登場しました。ここでは、複数のオラクルからなるネットワークがデータを提供します。スマートコントラクトは、平均値や中央値などの集約方法を使用して値を算出することがあります。これらのオラクルはデータソースを分散させることで、人為的な操作や単一障害点に伴うリスクを軽減します。

Solidity//柔軟なオラクルフレームワークを活用した説明的なスマートコントラクト契約商品価格フィード{分散型オラクル[] OracleArray; //分散型オラクルの配列関数deriveAveragePrice()外部ビューを返します(uint256){uint256 cumulativeValue = 0; for(uint i = 0; i < oracleArray.length; i++){cumulativeValue += oracleArray[i].fetchPrice();} return cumulativeValue/ oracleArray.length;}}

コードコメント:

  • DecentralizedOracle [] OracleArray; this is an array that stores multiple instances of decentralized oracles.
  • 平均価格を導出する関数は、OracleArray内のすべてのオラクルから得られた平均価格を計算します。それは各オラクルを通過し、価格を取得し、その後、オラクルの数で割って平均値を求めます。

リアルワールドオラクルアプリケーション

オラクルの潜在的な応用は非常に広範囲で多様です:

  • 金融派生商品:オプションなどの金融商品は、契約を実行するために実世界の資産価格へのアクセスが必要です。
  • スマート保険:フライトが遅れた場合に自動的にユーザーに補償を行う旅行保険スマートコントラクトを想像してみてください。このデータは航空トレーラーから提供されます。
  • サプライチェーン検証:ブロックチェーンに外部データを入力することで、製造から顧客配送まで製品をリアルタイムで追跡することが可能です。
  • 分散型ゲーム:ブロックチェーンベースのオンラインゲームは、スポーツの試合結果などの現実世界のイベントに基づいてゲームの結果に影響を与えるためにオラクルを使用することができます。
    オラクルについて詳しく読むブロックチェーンにおけるオラクルとは何ですか?

金融デリバティブと取引プラットフォーム

金融プラットフォームは、資産価格、金利、その他の経済指標に関するリアルタイム情報が必要です。分散型デリバティブプラットフォームは、オラクルを使用して、先物取引やオプションなどの契約が正確で改ざんできない市場データに基づいて決済されることを保証します。

SoliditySolidityCopy code//便利なオプションのスマートコントラクトの例contract DecentralizedOption { Oracle PriceOracle; uint256 strikePrice = 1000;//値の例 function exerciseOption () external { uint256 currentPrice = priceOracle.fetchCurrentPrice ();       if (currentPrice strikePrice>) { // オプションを実行するロジック } }}

コードコメント:

  • 分散オプションコントラクトはオラクルとやり取りして現在の価格を取得します。
  • ユーザーがオプションを行使すると、契約は現在の価格を事前に定義された執行価格と比較して、結果を決定します。

スマート保険

オラクルは、分散型保険プラットフォームの開発を促進し、作物保険に必要な気象パターン、旅行保険に必要な飛行条件、または地震保険に必要な地震活動などのデータを提供しています。

Soliditycontract FlightDelayInsurance { Oracle FlightStatusOracle; function claimInsurance (string flightNumber) external { string status = flightstatusOracle.getFlightStatus (flightNumber);        if (strcmp (status, " Delayed") == 0) {            // 保険金を請求するロジック        }    }}

コードコメント:

  • フライト遅延保険契約では、オラクルを使用して飛行状況を取得します。
  • フライトの状況によっては、フライトが遅延した場合に被保険者に補償されます。

サプライチェーンの検証

分散型サプライチェーンソリューションの場合、オラクルは原材料の調達から製品の配送までのすべての段階で検証可能なデータを提供し、製品の真正性と倫理的な調達を確保できます。

Soliditycontract supplyChainTracker { Oracle LocationOracle; address ProductOwner; function verifyProductLocation (address ProductID) external view returns (string memory) {        return locationOracle.fetchProductLocation(productID);    }}

コードコメント:

  • この契約では、製品の供給チェーンのどの段階でも製品の場所を取得するためにオラクルを使用しています。
  • 製品を追跡し、その起源と経路を検証するために使用できます。

分散型ゲーム

スポーツイベントの結果や株式市場の動きなど、現実世界のイベントを統合したゲームは、オラクルを使用して必要なデータを取得することで、分散的に構築できます。

SolidityContract SportsBet { Oracle SportsResultOracle; Function placeBet (string teamName) external payable {        // ベットをするためのロジック    } function resolveBet () external {        string winningTeam = sportsResultOracle.getMatchResult();        // 結果に基づいて勝者に報酬を与えるためのロジック    }}

コードコメント:

  • スポーツベットユーザーはスポーツイベントの結果に賭けることができます。
  • それから、オラクルとやり取りして、試合結果を取得し、それに応じてベットを解決します。
    今、私たちはイーサリアムオラクルの世界についての予備的な探求を行っています。後続のコースでは、オラクルをスマートコントラクトに統合する微妙な点について詳しく説明します。この内容がとても興奮させるものであれば、学ぶ意欲を持ち続けてください。分散型データの世界が私たちを招いていますから!
Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.