Технология Mixnet в NYM
В интернете существуют злоумышленники, которые могут следить за интернет-трафиком и перехватывать метаданные для своих личных целей. Поэтому я считаю, что обеспечение конфиденциальности в сети играет важную роль. Существует множество способов защитить себя, и в этом посте я сравнил VPN, Tor/dVPNs и NYM, пришел к выводу, что NYM является наилучшим вариантом : https://twitter.com/Ivan24852/status/1683785171160514565?s=20 Теперь давайте разберем, как NYM Mixnet обеспечивает это.MixnetMixnet - эт...

Представляем Ritual
После многих месяцев разработки мы рады наконец выйти из режима скрытой работы и представить Ritual миру. Мы начали Ritual с четкой целью: объединить лучшие принципы и методы криптографии и искусственного интеллекта для создания системы, которая позволяет открыто и без разрешений создавать, распространять и улучшать AI-модели. Мы потратили значительное время на осмысление нашего опыта в создании подобных систем, взаимодействие с экспертами отрасли и переосмысление того, что эта цель означает ...
Технология Mixnet в NYM
В интернете существуют злоумышленники, которые могут следить за интернет-трафиком и перехватывать метаданные для своих личных целей. Поэтому я считаю, что обеспечение конфиденциальности в сети играет важную роль. Существует множество способов защитить себя, и в этом посте я сравнил VPN, Tor/dVPNs и NYM, пришел к выводу, что NYM является наилучшим вариантом : https://twitter.com/Ivan24852/status/1683785171160514565?s=20 Теперь давайте разберем, как NYM Mixnet обеспечивает это.MixnetMixnet - эт...

Представляем Ritual
После многих месяцев разработки мы рады наконец выйти из режима скрытой работы и представить Ritual миру. Мы начали Ritual с четкой целью: объединить лучшие принципы и методы криптографии и искусственного интеллекта для создания системы, которая позволяет открыто и без разрешений создавать, распространять и улучшать AI-модели. Мы потратили значительное время на осмысление нашего опыта в создании подобных систем, взаимодействие с экспертами отрасли и переосмысление того, что эта цель означает ...
Share Dialog
Share Dialog
Subscribe to ivanxx.eth
Subscribe to ivanxx.eth
<100 subscribers
<100 subscribers
Сегодня мы погрузимся в важную тему интеграции оракула RedStone в ваши смарт-контракты. Давайте сначала немного познакомимся с RedStone.
RedStone - это Oracle, обеспечивающий часто обновляемые, надежные и разнообразные каналы данных для ваших dApp и смарт-контрактов на нескольких L1 и L2.

Вне зависимости от того, являетесь ли вы опытным разработчиком или только начинаете свой путь в мире блокчейна, данное знакомство с RedStone поможет вам успешно интегрировать этот оракул в ваши проекты.
Создание надежных децентрализованных финансовых продуктов и приложений требует актуальной и достоверной информации. Именно здесь RedStone Oracle приходит на помощь. С его помощью вы сможете получать данные о ценах активов с различных источников, включая децентрализованные и централизованные биржи, агрегаторы и многие другие. Это позволит вам строить более надежные и инновационные решения на блокчейне.
В этом знакомстве мы расскажем вам, как интегрировать RedStone Oracle в ваши смарт-контракты. В зависимости от архитектуры смарт-контракта и требований бизнеса мы можем предоставлять данные по 3 различным моделям:
RedStone Core, данные динамически добавляются в пользовательские транзакции, что позволяет достичь максимальной эффективности использования газа и сохранить отличный пользовательский опыт, поскольку весь процесс укладывается в одну транзакцию
RedStone Classic - данные поступают в цепочечное хранилище через ретранслятор. Предназначен для протоколов, разработанных для традиционной модели Oracles, которые хотят иметь полный контроль над источником данных и условиями обновления.
RedStone X, ориентированный на потребности наиболее продвинутых протоколов, таких как вечные контракты, опционы и деривативы, за счет устранения риска опережения, обеспечивающего получение данных о ценах на следующем блоке после взаимодействия с пользователями.
Мы сегодня будем интегрировать RedStone Core. Давайте вместе начнем это захватывающее путешествие в мире децентрализованных данных и блокчейна. Я уверен, что интеграция RedStone Oracle откроет перед вами новые возможности и поможет достичь новых высот в разработке децентрализованных приложений.
TLDR
Вам необходимо сделать две вещи:
Настроить смарт-контракты таким образом, чтобы в них были включены библиотеки, отвечающие за извлечение и проверку данных
Javascript-код вашего dApp для инъекции дополнительной полезной нагрузки с feeds данных (в противном случае вы получите ошибки смарт-контракта).
ВНИМАНИЕ
Наши контракты требуют
solidity > 0.8.4.Если ваш код написан на более старой версии, пожалуйста, используйте Manual Payload.Если вы работаете со сторонними агрегаторами, убедитесь, что они также поддерживают передачу дополнительной полезной нагрузки.
Пожалуйста, не используйте Remix для тестирования оракулов RedStone, поскольку Remix не поддерживает модификацию транзакций так, как это делает evm-коннектор
Мы настоятельно рекомендуем иметь механизм обновления контрактов (он может быть основан на мультисигме или DAO). Таким образом, вы сможете быстро заменить поставщиков данных в случае возникновения каких-либо проблем.
Шаг 1: Установка и настройка В среде разработки установите пакет RedStone Oracle с помощью предпочтительного менеджера пакетов (npm или yarn).
Скопируйте код
NPM: npm install @redstone-finance/evm-connector
YARN: yarn add @redstone-finance/evm-connector
Пожалуйста, учтите, что для работы с библиотекой вам также потребуется настроенный блокчейн и среда разработки для развертывания и тестирования контрактов.
Некоторый пример, как это сделать:
Установите Node.js и npm: Убедитесь, что у вас установлены Node.js и npm (Node Package Manager). Вы можете загрузить их с официального сайта Node.js.
Выберите блокчейн: Выберите блокчейн, с которым вы хотите работать (например, Ethereum). Для разработки и тестирования вы можете использовать локальный блокчейн, такой как Hardhat, Truffle или Ganache.
Настройте проект: Создайте новую директорию для вашего проекта и перейдите в нее через командную строку. Затем инициализируйте проект с помощью команды:
npm init
Следуйте инструкциям в командной строке для настройки вашего проекта.
Установите зависимости: Установите необходимые зависимости, включая @redstone-finance/evm-connector, а также другие библиотеки, которые вам могут понадобиться для разработки смарт-контрактов.
Создайте смарт-контракт: Создайте новый файл .sol (с расширением Solidity) в директории вашего проекта. В этом файле вы можете определить свой смарт-контракт и подключить необходимые библиотеки, включая MainDemoConsumerBase.sol.
Напишите и разверните контракт: Внутри вашего смарт-контракта вы можете написать логику, использующую функции из библиотеки @redstone-finance/evm-connector. Затем вы можете использовать инструменты разработки (например, Hardhat или Truffle) для компиляции, развертывания и тестирования вашего контракта на выбранном блокчейне.
Тестируйте и отладьте: Вы можете написать юнит-тесты для вашего контракта с использованием инструментов тестирования, предоставляемых средой разработки. Это поможет вам убедиться, что ваш контракт работает правильно и соответствует ожиданиям.
Для пользователей Foundry есть дополнительный шаг по установке зависимостей с помощью git-подмодулей.
Шаг 2: Импорт контрактов RedStone Oracle
Список базовых контрактов с услугами передачи данных
Базовый контракт Сервис данных со списком feeds Статус
MainDemoCustomerBase.sol redstone-main-demo Demo
RapidDemoConsumerBase.sol redstone-rapid-demo Demo
StocksDemoConsumerBase.sol redstone-stocks-demo Demo
AvalancheDataServiceConsumerBase.sol redstone-avalanche-prod Production
Давайте интегрируем RedStone Oracle в ваш смарт-контракт - это очень простой процесс. Выбираем контракт из списка, например MainDemoConsumerBase.sol.
**MainDemoConsumerBase.sol - **это базовый контракт (base contract) из библиотеки RedStone Oracle, предназначенный для интеграции с оракулами данных, которые предоставляют информацию о ценах на активы, такие как Ethereum, Bitcoin и другие токены.
Получение нескольких значений
Скопируйте код
// Импортируем базовый контракт для доступа к RedStone Oracle
import "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol";
// Объявляем наш контракт, который наследует функциональность от contract YourContractName is MainDemoConsumerBase {
// Добавим функцию для получения цен на активы
// Получение цен на указанные активы (например, ETH и BTC)
function getAssetPrices() public view returns (uint256 ethPrice, uint256 btcPrice) {
// Создаем массив с идентификаторами активов (символами)
bytes32[] memory dataFeedIds = new bytes32Unsupported embed;
//Необходимо передать идентификатор канала данных, преобразованный в bytes32
dataFeedIds[0] = bytes32("ETH");
dataFeedIds[1] = bytes32("BTC");
// Получаем значения цен для активов
uint256[] memory values = getOracleNumericValuesFromTxMsg(dataFeedIds);
// Сохраняем значения цен в переменные
ethPrice = values[0];
btcPrice = values[1];
// Возвращаем значения цен на активы
return (ethPrice, btcPrice);
}
// Добавьте другие функции вашего контракта здесь
// ...
}
Получение единственного значения
Скопируйте код
// Импортируем базовый контракт для доступа к RedStone Oracle
import "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol";
// Объявляем наш контракт, который наследует функциональность от contract YourContract is MainDemoConsumerBase {
// Добавим функцию для получения цену на актив
// Получение цен на указанные активы (например, ETH )
function getAssetPrices() public view returns (uint256 ethPrice) {
//Необходимо передать идентификатор канала данных, преобразованный в bytes32
// Получаем значения цен для активов
ethPrice = getOracleNumericValueFromTxMsg(bytes32("ETH"));
// Возвращаем значения цен на активы
return ethPrice;
}
// Добавьте другие функции вашего контракта здесь
// ...
}
Шаг 3: Настройте Javascript-код вашего dApp
Мы уже интегрировали RedStone Oracle в смарт контракт. Давайте настроим JavaScript-код для вашего dApp, с использованием интегрированного смарт контракта.
Импортируйте библиотеку и настройки: Сначала импортируйте необходимые библиотеки, такие как ethers.js, и настройки, которые могут понадобиться для взаимодействия с вашим блокчейн-провайдером.
const ethers = require('ethers');
// Ваш провайдер Ethereum
const provider = new ethers.providers.JsonRpcProvider('YOUR_RPC_URL');
Импортируйте WrapperBuilder: Импортируйте WrapperBuilder из @redstone-finance/evm-connector для настройки взаимодействия с оракулом.
const { WrapperBuilder } = require("@redstone-finance/evm-connector");
Создайте экземпляр вашего смарт-контракта: Используйте ethers.js для создания экземпляра вашего смарт-контракта, который вы хотите настроить для работы с оракулом.
const yourEthersContract = new ethers.Contract(address, abi, provider);
Оберните смарт-контракт с использованием оракула: Используйте WrapperBuilder, чтобы обернуть ваш смарт-контракт с использованием данных оракула.
Вы можете увидеть примеры использования @redstone-finance/evm-connectorв нашем специальном репозитории с примерами .
Для всех поддерживаемых каналов мы предоставляем пользовательский интерфейс с графиками и историческими данными
Спасибо, что прочитали! Теперь, вы успешно интегрировали основную модель RedStone Oracle в свое dApp, расширив его возможности за счет точных данных о ценах в режиме реального времени.
Продолжайте внедрять инновации, создавать и вносить свой вклад в экосистему блокчейн!
Сегодня мы погрузимся в важную тему интеграции оракула RedStone в ваши смарт-контракты. Давайте сначала немного познакомимся с RedStone.
RedStone - это Oracle, обеспечивающий часто обновляемые, надежные и разнообразные каналы данных для ваших dApp и смарт-контрактов на нескольких L1 и L2.

Вне зависимости от того, являетесь ли вы опытным разработчиком или только начинаете свой путь в мире блокчейна, данное знакомство с RedStone поможет вам успешно интегрировать этот оракул в ваши проекты.
Создание надежных децентрализованных финансовых продуктов и приложений требует актуальной и достоверной информации. Именно здесь RedStone Oracle приходит на помощь. С его помощью вы сможете получать данные о ценах активов с различных источников, включая децентрализованные и централизованные биржи, агрегаторы и многие другие. Это позволит вам строить более надежные и инновационные решения на блокчейне.
В этом знакомстве мы расскажем вам, как интегрировать RedStone Oracle в ваши смарт-контракты. В зависимости от архитектуры смарт-контракта и требований бизнеса мы можем предоставлять данные по 3 различным моделям:
RedStone Core, данные динамически добавляются в пользовательские транзакции, что позволяет достичь максимальной эффективности использования газа и сохранить отличный пользовательский опыт, поскольку весь процесс укладывается в одну транзакцию
RedStone Classic - данные поступают в цепочечное хранилище через ретранслятор. Предназначен для протоколов, разработанных для традиционной модели Oracles, которые хотят иметь полный контроль над источником данных и условиями обновления.
RedStone X, ориентированный на потребности наиболее продвинутых протоколов, таких как вечные контракты, опционы и деривативы, за счет устранения риска опережения, обеспечивающего получение данных о ценах на следующем блоке после взаимодействия с пользователями.
Мы сегодня будем интегрировать RedStone Core. Давайте вместе начнем это захватывающее путешествие в мире децентрализованных данных и блокчейна. Я уверен, что интеграция RedStone Oracle откроет перед вами новые возможности и поможет достичь новых высот в разработке децентрализованных приложений.
TLDR
Вам необходимо сделать две вещи:
Настроить смарт-контракты таким образом, чтобы в них были включены библиотеки, отвечающие за извлечение и проверку данных
Javascript-код вашего dApp для инъекции дополнительной полезной нагрузки с feeds данных (в противном случае вы получите ошибки смарт-контракта).
ВНИМАНИЕ
Наши контракты требуют
solidity > 0.8.4.Если ваш код написан на более старой версии, пожалуйста, используйте Manual Payload.Если вы работаете со сторонними агрегаторами, убедитесь, что они также поддерживают передачу дополнительной полезной нагрузки.
Пожалуйста, не используйте Remix для тестирования оракулов RedStone, поскольку Remix не поддерживает модификацию транзакций так, как это делает evm-коннектор
Мы настоятельно рекомендуем иметь механизм обновления контрактов (он может быть основан на мультисигме или DAO). Таким образом, вы сможете быстро заменить поставщиков данных в случае возникновения каких-либо проблем.
Шаг 1: Установка и настройка В среде разработки установите пакет RedStone Oracle с помощью предпочтительного менеджера пакетов (npm или yarn).
Скопируйте код
NPM: npm install @redstone-finance/evm-connector
YARN: yarn add @redstone-finance/evm-connector
Пожалуйста, учтите, что для работы с библиотекой вам также потребуется настроенный блокчейн и среда разработки для развертывания и тестирования контрактов.
Некоторый пример, как это сделать:
Установите Node.js и npm: Убедитесь, что у вас установлены Node.js и npm (Node Package Manager). Вы можете загрузить их с официального сайта Node.js.
Выберите блокчейн: Выберите блокчейн, с которым вы хотите работать (например, Ethereum). Для разработки и тестирования вы можете использовать локальный блокчейн, такой как Hardhat, Truffle или Ganache.
Настройте проект: Создайте новую директорию для вашего проекта и перейдите в нее через командную строку. Затем инициализируйте проект с помощью команды:
npm init
Следуйте инструкциям в командной строке для настройки вашего проекта.
Установите зависимости: Установите необходимые зависимости, включая @redstone-finance/evm-connector, а также другие библиотеки, которые вам могут понадобиться для разработки смарт-контрактов.
Создайте смарт-контракт: Создайте новый файл .sol (с расширением Solidity) в директории вашего проекта. В этом файле вы можете определить свой смарт-контракт и подключить необходимые библиотеки, включая MainDemoConsumerBase.sol.
Напишите и разверните контракт: Внутри вашего смарт-контракта вы можете написать логику, использующую функции из библиотеки @redstone-finance/evm-connector. Затем вы можете использовать инструменты разработки (например, Hardhat или Truffle) для компиляции, развертывания и тестирования вашего контракта на выбранном блокчейне.
Тестируйте и отладьте: Вы можете написать юнит-тесты для вашего контракта с использованием инструментов тестирования, предоставляемых средой разработки. Это поможет вам убедиться, что ваш контракт работает правильно и соответствует ожиданиям.
Для пользователей Foundry есть дополнительный шаг по установке зависимостей с помощью git-подмодулей.
Шаг 2: Импорт контрактов RedStone Oracle
Список базовых контрактов с услугами передачи данных
Базовый контракт Сервис данных со списком feeds Статус
MainDemoCustomerBase.sol redstone-main-demo Demo
RapidDemoConsumerBase.sol redstone-rapid-demo Demo
StocksDemoConsumerBase.sol redstone-stocks-demo Demo
AvalancheDataServiceConsumerBase.sol redstone-avalanche-prod Production
Давайте интегрируем RedStone Oracle в ваш смарт-контракт - это очень простой процесс. Выбираем контракт из списка, например MainDemoConsumerBase.sol.
**MainDemoConsumerBase.sol - **это базовый контракт (base contract) из библиотеки RedStone Oracle, предназначенный для интеграции с оракулами данных, которые предоставляют информацию о ценах на активы, такие как Ethereum, Bitcoin и другие токены.
Получение нескольких значений
Скопируйте код
// Импортируем базовый контракт для доступа к RedStone Oracle
import "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol";
// Объявляем наш контракт, который наследует функциональность от contract YourContractName is MainDemoConsumerBase {
// Добавим функцию для получения цен на активы
// Получение цен на указанные активы (например, ETH и BTC)
function getAssetPrices() public view returns (uint256 ethPrice, uint256 btcPrice) {
// Создаем массив с идентификаторами активов (символами)
bytes32[] memory dataFeedIds = new bytes32Unsupported embed;
//Необходимо передать идентификатор канала данных, преобразованный в bytes32
dataFeedIds[0] = bytes32("ETH");
dataFeedIds[1] = bytes32("BTC");
// Получаем значения цен для активов
uint256[] memory values = getOracleNumericValuesFromTxMsg(dataFeedIds);
// Сохраняем значения цен в переменные
ethPrice = values[0];
btcPrice = values[1];
// Возвращаем значения цен на активы
return (ethPrice, btcPrice);
}
// Добавьте другие функции вашего контракта здесь
// ...
}
Получение единственного значения
Скопируйте код
// Импортируем базовый контракт для доступа к RedStone Oracle
import "@redstone-finance/evm-connector/contracts/data-services/MainDemoConsumerBase.sol";
// Объявляем наш контракт, который наследует функциональность от contract YourContract is MainDemoConsumerBase {
// Добавим функцию для получения цену на актив
// Получение цен на указанные активы (например, ETH )
function getAssetPrices() public view returns (uint256 ethPrice) {
//Необходимо передать идентификатор канала данных, преобразованный в bytes32
// Получаем значения цен для активов
ethPrice = getOracleNumericValueFromTxMsg(bytes32("ETH"));
// Возвращаем значения цен на активы
return ethPrice;
}
// Добавьте другие функции вашего контракта здесь
// ...
}
Шаг 3: Настройте Javascript-код вашего dApp
Мы уже интегрировали RedStone Oracle в смарт контракт. Давайте настроим JavaScript-код для вашего dApp, с использованием интегрированного смарт контракта.
Импортируйте библиотеку и настройки: Сначала импортируйте необходимые библиотеки, такие как ethers.js, и настройки, которые могут понадобиться для взаимодействия с вашим блокчейн-провайдером.
const ethers = require('ethers');
// Ваш провайдер Ethereum
const provider = new ethers.providers.JsonRpcProvider('YOUR_RPC_URL');
Импортируйте WrapperBuilder: Импортируйте WrapperBuilder из @redstone-finance/evm-connector для настройки взаимодействия с оракулом.
const { WrapperBuilder } = require("@redstone-finance/evm-connector");
Создайте экземпляр вашего смарт-контракта: Используйте ethers.js для создания экземпляра вашего смарт-контракта, который вы хотите настроить для работы с оракулом.
const yourEthersContract = new ethers.Contract(address, abi, provider);
Оберните смарт-контракт с использованием оракула: Используйте WrapperBuilder, чтобы обернуть ваш смарт-контракт с использованием данных оракула.
Вы можете увидеть примеры использования @redstone-finance/evm-connectorв нашем специальном репозитории с примерами .
Для всех поддерживаемых каналов мы предоставляем пользовательский интерфейс с графиками и историческими данными
Спасибо, что прочитали! Теперь, вы успешно интегрировали основную модель RedStone Oracle в свое dApp, расширив его возможности за счет точных данных о ценах в режиме реального времени.
Продолжайте внедрять инновации, создавать и вносить свой вклад в экосистему блокчейн!
const wrappedContract = WrapperBuilder.wrap(YourContract).usingDataService(
{
dataFeeds: ["ETH", "BTC"],
},
);
Взаимодействуйте с обернутым контрактом:Теперь вы можете получить доступ к любому из методов контракта точно так же, как и к коду ethers-js:
await wrappedContract.getAssetPrices();
const wrappedContract = WrapperBuilder.wrap(YourContract).usingDataService(
{
dataFeeds: ["ETH", "BTC"],
},
);
Взаимодействуйте с обернутым контрактом:Теперь вы можете получить доступ к любому из методов контракта точно так же, как и к коду ethers-js:
await wrappedContract.getAssetPrices();
No activity yet