Maticネットワーク上でChainlinkオラクルを使用する方法を説明する

Chainlink
本文约4747字,阅读全文需要约19分钟
Matic DeFiアプリケーションでChainlinkオラクルを使用する方法、およびChainlink価格フィードを使用して、オラクルの脆弱性やフラッシュローン攻撃などのリスクに対して脆弱ではない高品質で

今年初めに Matic が発売されて以来オンラインそれ以来、このネットワークは、安全でスケーラブルなインフラストラクチャと即時トランザクションにより、イーサリアム開発者にとって急速に人気の第 2 層ソリューションになりました。 Matic の高性能かつ低料金のインフラストラクチャは、DeFi アプリケーションの大規模な導入を促進する実行可能なプラットフォームを提供します。また、ブロックチェーンオラクルの分野でも、Chainlink は DeFi プロトコルで推奨されるオラクル ソリューションとなっています。Chainlink Price Feedsすでに数十億ドルの価値が確保されています。この技術記事では、Matic DeFi アプリケーションで Chainlink オラクルを使用する方法と、Chainlink Price Feed を使用して、アプリケーションが脆弱性のない高品質で改ざん防止のデータにアクセスできるようにする方法を説明します。Oracleの脆弱性とフラッシュローン攻撃最初のレベルのタイトル

スケーラブルで安全な DeFi プロトコルの必要性

DeFiプロトコルは今年爆発的な成長を遂げており、DeFiの総ロックボリューム(TVL)は1月の6億8000万ドルから現在までに急増しています。140億ドル以上。しかし、この成長に伴い、オンチェーントランザクションのレベルが増加し、自らの利益のためにこれらのプロトコルを悪用しようとする破壊者からの望ましくない注目が生じます。

イーサリアムはスケーラビリティが限られており、スループットが低く、DeFi の成長によりオンチェーン トランザクションの数が増加しています妨げるブロックチェーンのパフォーマンス。これによりトラフィックの影響が生じ、DeFiプロトコルはユーザーエクスペリエンスが低下し、手数料が高く、トランザクション時間が遅くなるという問題が発生します。

取引速度の遅さと取引手数料の高さは、DeFiが主流になることを妨げる2つの制限要因です。 Matic などのレイヤー 2 ネットワークは、スケーラビリティが向上し、高スループット、低コストのトランザクションを備えているため、DeFi 開発の次の段階を開くことができます。 Matic サイドチェーンも構成可能で、EVM と完全に互換性があります。 DeFi の中核となる価値の 1 つは、許可なく合成可能そのため、Matic は、拡張性、低コストのトランザクションの提供、パーミッションレスなコンポーザビリティの確保、シームレスなユーザー エクスペリエンスを提供するさまざまな便利な DeFi アプリケーションの構築を検討している開発者にとって、魅力的なオプションを提供します。

ただし、これらの DeFi アプリケーションには依然として次の要件が必要です高品質で信頼性の高い外部データへのアクセス。今年何度も見てきたように、DeFi プロトコルはさまざまな形で攻撃される可能性があります。オラクル攻撃の価格設定つまり、加害者はフラッシュローンと低品質のオラクルマシンを組み合わせて市場を操作し、自分の利益を追求し、他のユーザーの利益を害します。

Chainlink Price FeedsDeFiアプリケーションは、Chainlinkネットワーク上の分散型オラクルによってオンチェーンで供給される、さまざまな高品質データプロバイダーからの集約データを提供することで、これらの攻撃に対する脆弱性を軽減します。 Chainlinkの分散型アーキテクチャと幅広い高品質データソースにより、最終価格が最も広範な市場をカバーできることが保証されます。これは本質的に、価格が小さなサブセットだけでなく市場全体からのさまざまな価格を集計した後に決定されることを意味します。

最初のレベルのタイトル

Matic ネットワークでの Chainlink 価格フィードの使用

Chainlink Price Feeds複数の高品質データ入力を使用し、それらを Chainlink オラクル ネットワークと組み合わせることで、価格データが参照契約に入力され、結果が集計されます。 DeFi プロトコルはデータの品質と完全性を非常に重視しており、Chainlink Price Feed は、データ品質の問題によるさまざまな DeFi の脆弱性の影響を受けたくないこれらのプロトコルに最適な実用的な運用環境ソリューションを提供します。

次の 2 つのチュートリアルも次の場所から入手できます。Remix完全なスマートコントラクトとして使用されます。

Matic Network で Chainlink 価格フィードとオラクルを使用するための最初のステップは、MetaMask ウォレットを次のように設定することです。Matic Mumbai テストネットに接続する画像の説明

副題

テストネット MATIC を入手する

MATIC は、Matic ネットワークのネイティブ トークンです。これはイーサリアムのエーテルに似ています。 Matic ネットワークと対話するには、MATIC トークンのガス料金が必要です。 Mumbai Testnet MATIC を入手するには、次の場所にアクセスしてください。MATIC Faucet画像の説明

スマートコントラクトを作成する

スマートコントラクトを作成する

Matic で Chainlink Price Feed を使用してスマート コントラクトの構築を開始する最も簡単な方法は、標準からのものです。Price Consumer契約が始まります。これは、Chainlink 価格フィードへのリクエストを開始するための基礎となる標準化された契約です。 Remix でこのコントラクトを開き、必要に応じて変更します。この例では、ETH/USD 価格データを使用します。最初のステップは [Matic 価格フィード参照契約

ムンバイのテストネット上で

次に、上記のコンストラクターでインスタンス化された Price Feed Aggregator コントラクトから最新の価格を取得する必要があります。アグリゲーター契約からの呼び出しが来ましたlastRoundDataスマートコントラクトの導入とテスト

スマートコントラクトの導入とテスト

これで、コントラクトをデプロイしてテストする準備が整いました。リミックスでコントラクトをコンパイルし、デプロイタブで環境を次のように変更します。"Injected Web3"、以下のウォレット アドレスが MATIC トークンを含む MetaMask ウォレット内のアドレスであることを確認し、デプロイ ボタンを押して手順に従います。最終結果として、スマート コントラクトが Matic Mumbai テストネットにデプロイされます。デプロイされたコントラクト アドレスは、Remix コンソールのトランザクション出力を通じて取得できます。

デプロイ後は実行するだけです"getLatestPrice "画像の説明

最初のレベルのタイトル

Matic ネットワークでの Chainlink Oracle の使用

副題

テストネットのリンクを取得

Chainlink オラクルにリクエストを送信するには、テストネット リンクを取得する必要があります。 Mumbai Testnet LINK を取得するには、参加してくださいMatic Discordスマートコントラクトを作成する

スマートコントラクトを作成する

Chainlink オラクルを使用する Matic でスマート コントラクトの構築を開始する最も簡単な方法は、標準から始めることです。Chainlink API消費者契約始める。これは、Chainlink オラクルを介して外部データのリクエストを開始するための基本的な標準化された契約です。したがって、このコントラクトを Remix で開き、必要に応じて変更します。

まず、"volume "パラメータの名前が次のように変更されます。"ethPrice"、バンドル"requestVolumeData "関数の名前が次のように変更されました"requestEthereumPrice"。完了したら、コンストラクターを次のように変更する必要があります。

  • ムンバイ テストネットの LINK トークン アドレスは「0x70d1F773A9f81C852087B77F6Ae6d3032B02D2AB」なので、それを渡します。"setChainlinkToken "機能中

  • によるとMatic ドキュメントムンバイ テストネットの規制によれば、「0x1cf7D49BE7e0c6AC30dEd720623490B64F572E17」で実行されている Oracle コントラクトがあるため、oracle 変数をこの値に設定します。

  • API は HTTP GET リクエストを通じて取得され、戻り値は符号なし整数です。ムンバイのテストネットで実行されるオラクルには、さまざまなジョブ仕様が利用可能です。によるとMatic ドキュメントこれらの要件に従って、 のジョブのリストは `d8fcf41ee8984d3b8b0eae7b74eca7dd` に適しています。HTTP GET リクエストを実行したいため、返されるデータは符号なし整数であるため、"jobId "変数はこの値に設定されます。

  • 意思"fee"変数は 1LINK に変更されます。これは、外部データリクエストとともにオラクルに送信される支払いです。

そして"requestEthereumPrice"そして"fulfill"関数。

Chainlink オラクルの使用をリクエストするチェーンリンクのリクエストとレスポンス設計パターンが機能し、オンチェーン関数がリクエストを作成して実行し、オラクルがリクエストを検出して、同じコントラクト内の別の関数に応答を送り返します。私たちの場合には、"requestEthereumPrice "リクエストを作成して実行する関数、"fulfill "レスポンスを処理する関数。this.fulfill.selectorで定義されます。

選択した API は crypto.com の API ですETH/EUR価格のパブリック API。このリンクをブラウザで開くと、JSON 形式で返されたデータを確認できます。

存在する"requestEthereumPrice "関数内で次のように変更します。

  • URLを[ETH/EUR](ETH/EUR) APIのエンドポイントに設定します

  • を要求します"path "変数はに設定されています"EUR"。これは、ブラウザに表示される API エンドポイントの出力に基づいて、イーサリアムの現在の価格を含む JSON 応答を検索して返すパスです。

  • Solidity は数値の小数を処理できないため、結果に 100 を掛けます。

  • Chainlink オラクルにリクエストを送信します

存在する"fulfill "この関数では、オラクルが応答を `_price` パラメーターに送り返し、それをコントラクトの `ethereumPrice` 変数に保存することがわかります。

スマートコントラクトの導入とテスト

スマートコントラクトの導入とテスト

リミックスを使用してコントラクトをコンパイルし、価格プレゼント契約の場合と同様に、ムンバイ テストネットにコントラクトをデプロイします。

画像の説明

契約へのリンクを転送

コントラクトがデプロイされ、LINK がある場合、次のボタンを押すことができます。"requestEthereumPrice "画像の説明

デプロイされたコントラクトをテストする

リクエストが開始されると、Chainlink オラクルが実行され、コントラクト内の fullfil 関数が Chainlink ノードのオラクル コントラクトによって呼び出されます。これが完了するまでに数秒かかります。その後、"ethereumPrice "画像の説明

要約する

要約する

DeFi アプリケーションDeFi アプリケーション、分散型取引所(DEX)、流動性プール、融資プロトコル、分散型保険、自動マーケットメーカー(AMM)など。

そして参加してください開発ドキュメントそして参加してくださいDiscordここここ接続する。