В этом техническом документе разработчикам подробно описан процесс интеграции #RedStone Oracles в децентрализованное приложение.
В этом документе будут рассмотрены этапы настройки, интеграции и тестирования, что позволит разработчикам использовать эти возможности в своих DApps.
1. Введение
Оракулы RedStone предлагают децентрализованное решение для доступа к данным в реальном времени в приложениях блокчейна. Они используют сеть поставщиков данных и блокчейн Arweave для хранения данных, обеспечивая целостность и постоянство. В этом руководстве подробно описаны шаги, необходимые для интеграции этих оракулов, от первоначальной установки до расширенной настройки и тестирования.
![](https://public.bnbstatic.com/image/pgc/202406/a664e085780a2dda6dec10915a88be31.png)
2. Требования к настройке
Прежде чем начать процесс интеграции, убедитесь, что выполнены следующие предварительные условия:
Node.js и npm установлены на вашей машине разработки.
Базовое понимание Solidity и смарт-контрактов.
Знакомство с JavaScript и #Ethereum инструментами разработки, такими как Hardhat или Foundry.
3. Установка
Установка пакета узла:
npm install @redstone-finance/evm-connector
Установка литейного производства:
Пользователям Foundry необходимо установить зависимости через подмодули git:установка forge redstone-finance/redstone-oracles-monorepo
forge install 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. Интеграция смарт-контрактов
![](https://public.bnbstatic.com/image/pgc/202406/6829364cd83a2b9f37891f3a79e5f387.png)
Наследовать от базовых контрактов:
Ваш контракт должен основываться на одном из базовых контрактов RedStone для использования данных Oracle:импортировать "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol";
контракт YourContractName расширяет MainDemoConsumerBase {
// Здесь дополнительный код контракта
}Получение данных:
Реализуйте функции для получения и обработки данных Oracle в вашем контракте:функция fetchOracleData(bytes32 dataIdentifier) public return (uint256) {
uint256 dataValue = getOracleNumericValueFromTxMsg (dataIdentifier);
вернуть значение данных;
}
5. Фронтенд-интеграция
Настройка оболочки Ethers.js:
Интегрируйте коннектор RedStone EVM с ethers.js для взаимодействия со смарт-контрактом:const { WrapperBuilder } = require("@redstone-finance/evm-connector");
const ethers = require("эфиры");
пусть поставщик = новый ethers.providers.JsonRpcProvider();
пусть контракт = новый ethers.Contract(contractAddress, ContractABI, поставщик);
пусть обернутыйКонтракт = WrapperBuilder.wrap(контракт).usingDataService({
dataFeeds: ["ETH", "BTC"]
});
![](https://public.bnbstatic.com/image/pgc/202406/2ba441390f34b8f14cb7029ab26bba1c.jpg)
Взаимодействие с контрактами:
Используйте завернутый контракт для вызова функций, как обычно:асинхронная функция callContractFunction() {
let result = await WrapContract.fetchOracleData("ETH");
console.log(`Данные Oracle: ${result}`);
}
6. Тестирование и развертывание
Тестирование каски:
Используйте Hardhat для моделирования взаимодействия и проверки реакции контракта на данные Oracle:const {ожидаем} = require("чай");
описать("Интеграционные тесты Oracle", function () {
it("должно правильно получить данные оракула", async function () {
const data = await WrapContract.fetchOracleData("ETH");
ожидать (данные).to.be.a('число');
});
});Развертывание:
Разверните свои контракты в работающей сети после тщательного тестирования:миграция трюфелей --сетевая сеть
7. Заключение
Интеграция оракулов RedStone в ваше DApp значительно расширяет его возможности эффективного и безопасного взаимодействия с данными в реальном времени. Следуя этому пошаговому руководству, разработчики могут обеспечить надежную интеграцию, используя передовые решения Oracle на основе блокчейна RedStone для запуска децентрализованных приложений.