Модуль @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
Контракт
О том, как работает контракт, можно прочитать здесь. Здесь же вы найдете описание всей модели RedStone Oracle.Подключение к контракту Для начала необходимо импортировать код коннектора в свой проект
// 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.
