この技術論文では、Oracle を分散型アプリケーションに統合する詳細なプロセスを開発者に説明します。

このドキュメントでは、セットアップ、統合、テストの各フェーズについて説明し、開発者が DApp 内でこれらの機能を活用できるようにします。

1. はじめに

RedStone Oracles は、ブロックチェーン アプリケーション内でリアルタイム データにアクセスするための分散型ソリューションを提供します。データ プロバイダーのネットワークと Arweave ブロックチェーンをデータ ストレージに利用し、整合性と永続性の両方を保証します。このガイドでは、初期インストールから高度なカスタマイズとテストまで、これらのオラクルを統合するために必要な手順について詳しく説明します。

出典: RedStone Oracles

2. セットアップ要件

統合プロセスを開始する前に、次の前提条件が満たされていることを確認してください。

  • 開発マシンに Node.js と npm がインストールされていること。

  • Solidity とスマート コントラクトの基本的な理解。

  • JavaScript と Hardhat や Foundry などの開発ツールに精通していること。

3. インストール

  • ノードパッケージのインストール:

    npm をインストールします @redstone-finance/evm-connector

  • ファウンドリのセットアップ:
    Foundry ユーザーは、git サブモジュールを通じて依存関係をインストールする必要があります。

    forge で redstone-finance/redstone-oracles-monorepo をインストールします
    OpenZeppelin/openzeppelin-contracts@v4.9.5 をフォージインストールします

  • Foundry での再マッピングの更新:
    remappings.txt にパスを追加します。

    echo "@redstone-finance/evm-connector/dist/contracts/=lib/redstone-oracles-monorepo/packages/evm-connector/contracts/
    @openzeppelin/contracts=lib/openzeppelin-contracts/contracts/" >> remappings.txt

4. スマートコントラクトの統合

出典: RedStone Oracles
  • 基本契約から継承:
    Oracle データを活用するには、RedStone の基本契約の 1 つから契約を拡張する必要があります。

    "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol" をインポートします。

    契約 YourContractName は MainDemoConsumerBase を拡張します {
    // ここに追加の契約コード
    }

  • データの取得:
    契約内で Oracle データを取得および処理する関数を実装します。

    関数 fetchOracleData(bytes32 dataIdentifier) パブリック 戻り値 (uint256) {
    uint256 データ値 = getOracleNumericValueFromTxMsg(データ識別子);
    データ値を返します。
    }

5. フロントエンド統合

  • Ethers.js ラッパーの設定:
    スマート コントラクトと対話するために、RedStone EVM コネクタを ethers.js と統合します。

    const { WrapperBuilder } = require("@redstone-finance/evm-connector");
    const ethers = require("ethers");

    プロバイダーを新しい ethers.providers.JsonRpcProvider() にします。
    Contract を new ethers.Contract(contractAddress, contractABI, provider); とします。

    wrapContract を WrapperBuilder.wrap(contract).usingDataService({
    データフィード: ["ETH", "BTC"]
    });

出典: RedStone Oracles
  • 契約とのやり取り:
    ラップされたコントラクトを使用して、通常どおり関数を呼び出します。

    非同期関数呼び出しContractFunction() {
    結果 = wrapperContract.fetchOracleData("ETH"); を待機します。
    console.log(`Oracle データ: ${result}`);
    }

6. テストと展開

  • ヘルメットテスト:
    Hardhat を使用してインタラクションをシミュレートし、Oracle データに対するコントラクトの応答をテストします。

    const { expect } = require("chai");

    記述("Oracle統合テスト", 関数() {
    it("Oracleデータを正しく取得するはずです", async function () {
    const データ = wrapperContract.fetchOracleData("ETH") を待機します。
    データは 'number' であると予想されます。
    });
    });

  • 展開:
    徹底的なテストを行った後、契約をライブ ネットワークに展開します。

    トリュフ移行 --network メインネット

7. 結論

RedStone Oracles を DApp に統合すると、リアルタイム データと効率的かつ安全にやり取りする機能が大幅に強化されます。このステップバイステップ ガイドに従うことで、開発者は堅牢な統合を実現し、RedStone の高度なブロックチェーン ベースの Oracle ソリューションを活用して分散型アプリケーションを開始できます。

$ETH