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

By [welcomeback](https://paragraph.com/@welcome6ack) · 2023-08-25

---

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

📦 Установка
------------

Установите [@redstone-finance/starknet-connector](https://www.npmjs.com/package/@redstone-finance/starknet-connector) из реестра NPM

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

    yarn add @redstone-finance/starknet-connector
    

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

    npm install @redstone-finance/starknet-connector
    

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

1.  Контракт  
      
    О том, как работает контракт, можно прочитать [здесь](https://github.com/redstone-finance/redstone-oracles-monorepo/blob/main/packages/starknet-connector/cairo/src/contracts/README.md). Здесь же вы найдете описание всей [модели RedStone Oracle](https://docs.redstone.finance/docs/introduction).
    
2.  Подключение к контракту Для начала необходимо импортировать код коннектора в свой проект
    

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

Затем можно вызывать описанные выше методы контракта, указывающие на выбранный [сервис данных Redstone](https://app.redstone.finance/) и запрашиваемые каналы данных.

    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.

---

*Originally published on [welcomeback](https://paragraph.com/@welcome6ack/redstone-starknet)*
