SupraOracles
はじめに
SupraOraclesは、新しい、高スループットのオラクル&イントラレイヤー:パブリック(L1とL2)またはプライベート(企業)のすべてのブロックチェーンを相互リンクするクロスチェーンソリューション(データオラクル、アセットブリッジ、オートメーションネットワークなど)の垂直統合ツールキットです。 スマートコントラクトに、データ精度、スピード、スケーラビリティ、セキュリティに優れた次世代クロスチェーン・オラクル・ソリューションを提供する。 スマートコントラクトに、データ精度、スピード、スケーラビリティ、セキュリティに優れた次世代クロスチェーン・オラクル・ソリューションを提供する。
このチュートリアルでは、SupraOracle 価格フィードソリューションを使用して ETH/USD 価格を要求する方法を学びました。 SupraOracleを使えば、スマートコントラクト内で乱数を生成することもできる。 このプロセスに興味がある方は、カイアにSupraVRFを統合するためのガイドをご覧ください。 SupraOraclesに関するより詳細なガイドについては、SupraOracles Docs を参照してください。 このチュートリアルでは、Remix IDEを使ってKaiaブロックチェーンの価格フィードを簡単に取得するためにSupraOraclesを使用します。
前提条件
- カイア・ウォレット
- Remix IDE
- KaiaプラグインをRemixで
- FaucetからKAIAをテストする。
はじめに
以下のステップでは、SupraOraclesを使用してスマートコントラクトにETH/USD価格フィードを要求します。 始めよう! 始めよう!
ステップ1:S値インタフェースの作成
これは、SupraOraclesから価格を取得するために使用されるインターフェイスを作成します。 S-Valueを取得したいsolidityスマートコントラクトに以下のコードを追加する。
interface ISupraSValueFeed {function checkPrice(string memory marketPair) external view returns (int256 price, uint256 timestamp);}
ステップ2:S値フィードアドレスの設定
SupraOraclesスマートコントラクトからS-Valueを取得するには、まず選択したチェーンのS-Valueフィードアドレスを見つけます。 適切なアドレスが得られたら、先に定義したインターフェイスを使用してS-Value Feedのインスタンスを作成する:
contract ISupraSValueFeedExample { ISupraSValueFeed internal sValueFeed; constructor() { sValueFeed = ISupraSValueFeed(0x7f003178060af3904b8b70fEa066AEE28e85043E); }}
この例では、Kaia Kairos TestNetにS-Value Feedを実装しています。 カイア・カイロスS-Valueのフィードアドレスはこちらで確認できます。
ステップ3: S-Value暗号価格を取得する
S-Valueの暗号化通貨ペアに簡単にアクセスできるようになりました。 このステップでは、スマートコントラクトに以下のコードを適用することで、ETH/USDT(eth_usdt)の価格を取得します。
function getEthUsdtPrice() external view returns (int) {(int price,/* uint timestamp */) = sValueFeed.checkPrice("eth_usdt");return price;}
実践
以下の例では、S-Value Price Feed Contract をデプロイし、getEthUsdtPrice() 関数を実行して ETH/USDT ペアの価格を取得します。
サンプルコードの作成とデプロイ
Remix IDE
- Remix IDE](https://remix.ethereum.org/) に移動する。
- ファイルエクスプローラタブをクリックし、contractsフォルダに
demoSupraPriceFeed.sol
という新しいファイルを作成する。 - 新しく作成したファイルに以下のコードを貼り付けます。
- Remixで、Compile contractをクリックします。
- プラグインをインストールしたら、左側のKaiaタブをクリックします。
- Environment > Injected Provider - Kaia Wallet を選択します。
- Contractで、契約を選択します。 例えば、ISupraSValueFeedExample。
- Deployをクリックします。
サンプルコード
// SPDX-License-Identifier: MITpragma solidity ^0.8.7;interface ISupraSValueFeed { function checkPrice(string memory marketPair) external view returns (int256 price, uint256 timestamp);}contract ISupraSValueFeedExample { ISupraSValueFeed internal sValueFeed; constructor() { sValueFeed = ISupraSValueFeed(0x7f003178060af3904b8b70fEa066AEE28e85043E); } function getEthUsdtPrice() external view returns (int) { ( int price, /* uint timestamp */ ) = sValueFeed.checkPrice("eth_usdt"); return price; }}