本技术论文指导开发人员完成将#RedStone Oracles 集成到分散式应用程序的详细过程。
该文档将涵盖设置、集成和测试阶段,确保开发人员可以在他们的 DApp 中利用这些功能。
1. 简介
RedStone Oracles 提供了一种去中心化的解决方案,用于访问区块链应用程序中的实时数据。它们利用数据提供商网络和 Arweave 区块链进行数据存储,确保完整性和持久性。本指南将详细介绍集成这些 Oracles 所需的步骤,从初始安装到高级定制和测试。
![](https://public.bnbstatic.com/image/pgc/202406/a664e085780a2dda6dec10915a88be31.png)
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. 智能合约集成
![](https://public.bnbstatic.com/image/pgc/202406/6829364cd83a2b9f37891f3a79e5f387.png)
从基础合约继承:
您的合约应从 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”]
});
![](https://public.bnbstatic.com/image/pgc/202406/2ba441390f34b8f14cb7029ab26bba1c.jpg)
与合约互动:
像平常一样使用包装的合约来呼叫函数:非同步函数 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 先进的基于区块链的预言机解决方案来启动去中心化应用程式。