У цьому технічному документі розробники детально описують процес інтеграції #RedStone Oracles у децентралізовану програму.

Цей документ охоплює етапи налаштування, інтеграції та тестування, гарантуючи, що розробники можуть використовувати ці можливості в своїх DApps.

1. Введення

RedStone Oracles пропонує децентралізоване рішення для доступу до даних у реальному часі в блокчейн-додатках. Вони використовують мережу постачальників даних і блокчейн Arweave для зберігання даних, забезпечуючи як цілісність, так і постійність. У цьому посібнику детально описано кроки, необхідні для інтеграції цих оракул, від початкової інсталяції до розширеного налаштування та тестування.

Джерело: RedStone Oracles

2. Вимоги до налаштування

Перш ніж почати процес інтеграції, переконайтеся, що виконано такі передумови:

  • Node.js і npm, встановлені на вашій машині розробки.

  • Базове розуміння Solidity та розумних контрактів.

  • Знайомство з JavaScript та #Ethereum інструментами розробки, такими як Hardhat або Foundry.

3. Монтаж

  • Встановлення пакета Node:

    npm встановити @redstone-finance/evm-connector

  • Налаштування ливарного виробництва:
    Користувачам Foundry потрібно встановити залежності через підмодулі git:

    forge встановити redstone-finance/redstone-oracles-monorepo
    forge встановити 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";

    contract YourContractName extends MainDemoConsumerBase {
    // Додатковий код контракту тут
    }

  • Отримання даних:
    Реалізуйте функції для отримання та обробки даних Oracle у вашому контракті:

    функція fetchOracleData(bytes32 dataIdentifier) ​​публічно повертає (uint256) {
    uint256 dataValue = getOracleNumericValueFromTxMsg(dataIdentifier);
    повернути dataValue;
    }

5. Внутрішня інтеграція

  • Налаштування оболонки Ethers.js:
    Інтегруйте конектор RedStone EVM з ethers.js для взаємодії зі смарт-контрактом:

    const { WrapperBuilder } = require("@redstone-finance/evm-connector");
    const ethers = require("ефіри");

    let provider = new ethers.providers.JsonRpcProvider();
    let contract = new ethers.Contract(contractAddress, contractABI, provider);

    let wrappedContract = WrapperBuilder.wrap(contract).usingDataService({
    канали даних: ["ETH", "BTC"]
    });

Джерело: RedStone Oracles
  • Взаємодія з контрактами:
    Використовуйте загорнутий контракт для виклику функцій, як зазвичай:

    асинхронна функція callContractFunction() {
    let result = await wrappedContract.fetchOracleData("ETH");
    console.log(`Дані Oracle: ${result}`);
    }

6. Тестування та розгортання

  • Тестування каски:
    Використовуйте Hardhat для моделювання взаємодії та тестування відповіді контракту на дані Oracle:

    const {expect} = require("chai");

    describe("Інтеграційні тести Oracle", function () {
    it("має правильно отримувати дані оракула", async function () {
    const data = await wrappedContract.fetchOracleData("ETH");
    expect(data).to.be.a('number');
    });
    });

  • Розгортання:
    Розгорніть свої контракти в живій мережі після ретельного тестування:

    truffle migrate --мережа mainnet

7. Висновок

Інтеграція RedStone Oracles у ваш DApp значно покращує його здатність ефективно та безпечно взаємодіяти з даними в реальному часі. Дотримуючись цього покрокового посібника, розробники можуть забезпечити надійну інтеграцію, використовуючи передові рішення oracle на основі блокчейну RedStone для швидкого запуску децентралізованих програм.

$ETH