У цьому технічному документі розробники детально описують процес інтеграції #RedStone Oracles у децентралізовану програму.
Цей документ охоплює етапи налаштування, інтеграції та тестування, гарантуючи, що розробники можуть використовувати ці можливості в своїх DApps.
1. Введення
RedStone Oracles пропонує децентралізоване рішення для доступу до даних у реальному часі в блокчейн-додатках. Вони використовують мережу постачальників даних і блокчейн Arweave для зберігання даних, забезпечуючи як цілісність, так і постійність. У цьому посібнику детально описано кроки, необхідні для інтеграції цих оракул, від початкової інсталяції до розширеного налаштування та тестування.
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 для використання даних 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"]
});
Взаємодія з контрактами:
Використовуйте загорнутий контракт для виклику функцій, як зазвичай:асинхронна функція 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 для швидкого запуску децентралізованих програм.