Este documento técnico orienta os desenvolvedores através do processo detalhado de integração do #RedStone Oracles em um aplicativo descentralizado.
Este documento cobrirá as fases de configuração, integração e teste, garantindo que os desenvolvedores possam aproveitar esses recursos em seus DApps.
1. Introdução
Os RedStone Oracles oferecem uma solução descentralizada para acesso a dados em tempo real em aplicações blockchain. Eles utilizam uma rede de provedores de dados e o blockchain Arweave para armazenamento de dados, garantindo integridade e permanência. Este guia detalhará as etapas necessárias para integrar esses oráculos, desde a instalação inicial até customização e testes avançados.
![](https://public.bnbstatic.com/image/pgc/202406/a664e085780a2dda6dec10915a88be31.png)
2. Requisitos de configuração
Antes de iniciar o processo de integração, certifique-se de que os seguintes pré-requisitos sejam atendidos:
Node.js e npm instalados em sua máquina de desenvolvimento.
Uma compreensão básica de Solidity e contratos inteligentes.
Familiaridade com JavaScript e ferramentas de desenvolvimento como Hardhat ou Foundry.
3. Instalação
Instalação do pacote de nós:
instalação npm @redstone-finance/evm-connector
Configuração de fundição:
Os usuários do Foundry precisam instalar dependências por meio de submódulos git:forjar instalar redstone-finance/redstone-oracles-monorepo
forja instalar OpenZeppelin/openzeppelin-contracts@v4.9.5Atualizando remapeamentos no Foundry:
Adicione caminhos ao 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. Integração de contrato inteligente
![](https://public.bnbstatic.com/image/pgc/202406/6829364cd83a2b9f37891f3a79e5f387.png)
Herdar dos contratos básicos:
Seu contrato deve se estender a partir de um dos contratos básicos da RedStone para utilizar dados Oracle:importar "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol";
contrato SeuNomeContrato estende MainDemoConsumerBase {
//Código de contrato adicional aqui
}Buscando dados:
Implemente funções para buscar e manipular dados Oracle em seu contrato:função fetchOracleData(bytes32 dataIdentifier) retornos públicos (uint256) {
uint256 dataValue = getOracleNumericValueFromTxMsg(dataIdentifier);
retornar valor de dados;
}
5. Integração Front-End
Configurando o wrapper Ethers.js:
Integre o conector RedStone EVM com ethers.js para interagir com o contrato inteligente:const { WrapperBuilder } = require("@redstone-finance/evm-connector");
const éteres = require("éteres");
deixe provedor = new ethers.providers.JsonRpcProvider();
deixe contrato = novo ethers.Contract(contractAddress, contractABI, provedor);
deixe wrapperContract = WrapperBuilder.wrap(contract).usingDataService({
feeds de dados: ["ETH", "BTC"]
});
![](https://public.bnbstatic.com/image/pgc/202406/2ba441390f34b8f14cb7029ab26bba1c.jpg)
Interagindo com Contratos:
Use o contrato empacotado para chamar funções como faria normalmente:função assíncrona callContractFunction() {
deixe resultado = aguarde wrapContract.fetchOracleData("ETH");
console.log(`Dados Oracle: ${resultado}`);
}
6. Teste e implantação
Teste de capacete:
Use o Hardhat para simular interações e testar a resposta do contrato aos dados do Oracle:const {esperar} = exigir("chai");
descreva("Testes de Integração Oracle", function() {
it("deve buscar os dados do Oracle corretamente", função assíncrona () {
dados const = aguarda wrapContract.fetchOracleData("ETH");
esperar(dados).to.be.a('número');
});
});Implantação:
Implante seus contratos em uma rede ativa após testes completos:trufa migrar --network mainnet
7. Conclusão
A integração do RedStone Oracles em seu DApp aumenta significativamente sua capacidade de interagir com dados em tempo real de forma eficiente e segura. Seguindo este guia passo a passo, os desenvolvedores podem garantir uma integração robusta, aproveitando as soluções Oracle avançadas baseadas em blockchain da RedStone para iniciar aplicativos descentralizados.