本技术论文指导开发人员完成将#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