Интеграция Redstone Оракл в Starknet на русском

Модуль @redstone-finance/starknet-connector реализует альтернативный дизайн предоставления оракульных данных смарт-контрактам. Вместо того чтобы постоянно хранить данные в хранилище Starknet (поставщики данных), информация поступает на цепь только тогда, когда она необходима (конечным пользователям). До этого момента данные остаются в децентрализованном кэш-слое, который работает на базе легких кэш-шлюзов RedStone и протокола трансляции данных streamr. Передача данных в Starknet осуществляется конечными пользователями. Целостность информации проверяется на цепочке путем проверки подписи.

📦 Установка

Установите @redstone-finance/starknet-connector из реестра NPM


Использование yarn

yarn add @redstone-finance/starknet-connector


Использование NPM

npm install @redstone-finance/starknet-connector

🔥 Начало работы

  1. Контракт

    О том, как работает контракт, можно прочитать здесь. Здесь же вы найдете описание всей модели RedStone Oracle.

  2. Подключение к контракту Для начала необходимо импортировать код коннектора в свой проект

// Typescript
import { StarknetPricesContractConnector, StarknetContractParamsProvider } from "@redstone-finance/starknet-connector";

// Javascript
const { StarknetPricesContractConnector, StarknetContractParamsProvider } = require("@redstone-finance/starknet-connector");

Затем можно вызывать описанные выше методы контракта, указывающие на выбранный сервис данных Redstone и запрашиваемые каналы данных.

const prices = new StarknetPricesContractConnector(account, yourContractAddress, "goerli-alpha");

const paramsProvider = new StarknetContractParamsProvider({
                            dataServiceId: "avalanche-main-data-service",
                            uniqueSignersCount: 1,
                            dataFeeds: ["ETH", "AVAX", "BTC"]
                          });

Параметр  account необходимо передавать для методов хранения-записи. В противном случае он может остаться неопределенным.

Теперь вы можете получить доступ к любому из методов контракта, вызвав код:

(await prices.getAdapter()).getPricesFromPayload(paramsProvider);
(await prices.getAdapter()).writePricesFromPayloadToContract(paramsProvider);
(await prices.getAdapter()).readPricesFromContract(paramsProvider);
(await prices.getAdapter()).readTimestampFromContract();

👨‍💻 Развитие и вклады

Кодовая база состоит из обертки, написанной на языке typescript, которая отвечает за упаковку данных, и смарт-контрактов cairo, которые извлекают эту информацию. Мы призываем всех желающих собирать и тестировать код, а также приветствуем любые вопросы с предложениями и запросами на исправление.

Установка зависимостей

📄 Лицензия

Коннектор Redstone Starknet - это свободное программное обеспечение с открытым исходным кодом, выпускаемое под лицензией BUSL-1.1.