本技術論文指導開發人員完成將#RedStone Oracles 集成到分散式應用程序的詳細過程。

該文檔將涵蓋設置、集成和測試階段,確保開發人員可以在他們的 DApp 中利用這些功能。

1. 簡介

RedStone Oracles 提供了一種去中心化的解決方案,用於訪問區塊鏈應用程序中的實時數據。它們利用數據提供商網絡和 Arweave 區塊鏈進行數據存儲,確保完整性和持久性。本指南將詳細介紹集成這些 Oracles 所需的步驟,從初始安裝到高級定製和測試。

資料來源:紅石神諭

2. 設定要求

在開始整合過程之前,請確保滿足以下先決條件:

  • Node.js 和 npm 安裝在您的開發電腦上。

  • 對 Solidity 和智能合約有基本的了解。

  • 熟悉 JavaScript 和 #Ethereum 開發工具,例如 Hardhat 或 Foundry。

3. 安裝

  • 節點包安裝:

    npm 安裝@redstone-finance/evm-connector

  • 鑄造廠設置:
    Foundry 使用者需要透過 git 子模組安裝相依性:

    forge 安裝 redstone-finance/redstone-oracles-monorepo
    forge 安裝 OpenZeppelin/openzeppelin-contracts@v4.9.5

  • 更新 Foundry 中的重新映射:
    新增remappings.txt的路徑:

    迴聲「@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
  • 從基礎合約繼承:
    您的合約應從 RedStone 的基礎合約之一擴展以利用預言機數據:

    導入“@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol”;

    合約 YourContractName 擴充 MainDemoConsumerBase {
    // 此處附加合約程式碼
    }

  • 取得數據:
    實作函數來取得和處理合約中的預言機資料:

    函數 fetchOracleData(bytes32 dataIdentifier) 公共回傳 (uint256) {
    uint256 dataValue = getOracleNumericValueFromTxMsg(dataIdentifier);
    返回數據值;
    }

5. 前端集成

  • 設定 Ethers.js 包裝器:
    將 RedStone EVM 連接器與 ethers.js 整合以與智慧合約互動:

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

    讓provider = new ethers.providers.JsonRpcProvider();
    let Contract = new ethers.Contract(contractAddress,contractABI,provider);

    讓wrappedContract = WrapperBuilder.wrap(contract).usingDataService({
    資料來源:[“ETH”,“BTC”]
    });

來源:RedStone Oracles
  • 與合約互動:
    像平常一樣使用包裝的合約來呼叫函數:

    非同步函數 callContractFunction() {
    讓結果=等待wrappedContract.fetchOracleData(“ETH”);
    console.log(`Oracle 資料: ${結果}`);
    }

6. 測試和部署

  • 安全帽測試:
    使用 Hardhat 模擬互動並測試合約對預言機資料的回應:

    const { 期望 } = require("chai");

    描述(“Oracle整合測試”,函數(){
    it("應該正確取得oracle資料", async function () {
    const data =等待wrappedContract.fetchOracleData(“ETH”);
    Expect(data).to.be.a('number');
    });
    });

  • 部署:
    經過全面測試後將您的合約部署到即時網路:

    松露遷移-網路主網

七、結論

將 RedStone Oracle 整合到您的 DApp 中可顯著增強其高效、安全地與即時資料互動的能力。透過遵循此逐步指南,開發人員可以確保強大的集成,利用 RedStone 先進的基於區塊鏈的預言機解決方案來啟動去中心化應用程式。

$ETH