В этом техническом документе разработчикам подробно описан процесс интеграции #RedStone Oracles в децентрализованное приложение.

В этом документе будут рассмотрены этапы настройки, интеграции и тестирования, что позволит разработчикам использовать эти возможности в своих DApps.

1. Введение

Оракулы RedStone предлагают децентрализованное решение для доступа к данным в реальном времени в приложениях блокчейна. Они используют сеть поставщиков данных и блокчейн Arweave для хранения данных, обеспечивая целостность и постоянство. В этом руководстве подробно описаны шаги, необходимые для интеграции этих оракулов, от первоначальной установки до расширенной настройки и тестирования.

Источник: RedStone Oracles.

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. Интеграция смарт-контрактов

Источник: RedStone Oracles.
  • Наследовать от базовых контрактов:
    Ваш контракт должен основываться на одном из базовых контрактов 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"]
    });

Источник: RedStone Oracles.
  • Взаимодействие с контрактами:
    Используйте завернутый контракт для вызова функций, как обычно:

    асинхронная функция 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 для запуска децентрализованных приложений.

$ETH