Solana Stream SDK полностью обновлён для перехода на Solana v3

Solana Stream SDK полностью обновлён для перехода на Solana v3

Solana Stream SDK полностью обновлён для перехода на Solana v3
ELSOUL LABO B.V. (штаб-квартира: Амстердам, Нидерланды; генеральный директор: Fumitake Kawasaki) и Validators DAO выпустили новые версии Solana Stream SDK с открытым исходным кодом и полной поддержкой Solana v3. Реализации на Rust и TypeScript обновлены для надёжного высокопроизводительного доступа к потокам данных Solana в реальном времени, включая Shreds и Geyser gRPC, в наступающую эпоху Alpenglow.
Крейт Rust solana-stream-sdk получил поддержку Solana v3 в версии 0.6.1, а пакет TypeScript / Node.js @validators-dao/solana-stream-sdk обновлён до версии 0.12.0. Вместе они образуют единую основу для высокопроизводительной обработки потоков при переходе Solana к архитектуре следующего поколения.

Почему Solana v3 и Alpenglow требуют обновления клиентской стороны

Solana v3 означает крупный переход к новой архитектуре консенсуса Alpenglow. Alpenglow заменяет существующую комбинацию TowerBFT и Proof of History переработанным механизмом консенсуса, призванным значительно повысить отзывчивость сети. Ожидается, что финализация при Alpenglow сократится примерно с нынешних 12 секунд до 100–150 миллисекунд. Это принципиально меняет темп производства блоков и характер распространения данных по сети в реальном времени.
Одновременно растут эксплуатационные требования к валидаторам и операторам RPC: циклы сборки и обновления конфигурации становятся чаще. Validators DAO модернизирует серверную среду с помощью SLV, но переход также подчёркивает критически важный момент:
Клиентское ПО тоже должно перейти на v3, иначе преимущества новой сети по производительности не удастся раскрыть полностью.
Особенно это относится к потокам реального времени, таким как Shreds и Geyser gRPC. Клиенты, которые не учитывают новые спецификации и особенности среды выполнения, со временем накапливают задержку или теряют согласованность. Поэтому клиентское ПО должно обновляться параллельно с переходом RPC-узлов и валидаторов на v3.
Обновление Solana Stream SDK устраняет этот разрыв и предоставляет готовую основу для приложений реального времени в эпоху Alpenglow.

Что нового в Solana Stream SDK v0.6.1 (Rust) и v0.12.0 (TypeScript)

Solana Stream SDK с самого начала проектировался для поддержки Shreds и Geyser gRPC. В этом релизе SDK получил ряд улучшений для стабильной работы с Solana v3 и готовности к среде выполнения на основе Alpenglow.

Крейт Rust v0.6.1

Реализация на Rust служит высокопроизводительным эталоном для трейдеров, индексаторов и других нагрузок реального времени, которым нужна максимальная пропускная способность. Основные изменения:
  • Добавлена поддержка изменений протокола в серии Solana v3
  • Shreds и потоки Geyser gRPC эффективно обрабатываются в асинхронной среде Rust
  • Доработана оболочка над связанными с Shreds определениями protobuf, упрощающая реализацию потоковой обработки
  • Многопоточные пути выполнения оптимизированы, чтобы свести к минимуму накопление задержки даже при длительной высокой нагрузке
Реализация на Rust рекомендуется пользователям, которым нужна максимальная производительность Shreds и Geyser gRPC.

TypeScript / Node.js v0.12.0

Реализация на TypeScript сохраняет удобство разработки на Node.js, но переносит внутреннюю потоковую обработку в Rust. В версии v0.12.0:
  • Сохраняется событийно-ориентированный интерфейс, включая emitter.on, без ломающих изменений
  • Внутренняя обработка потоков переведена на связку Rust + NAPI-RS, поэтому Node.js может надёжно обрабатывать Shreds там, где @grpc/grpc-js достигает своих пределов
  • Обработка потоков Geyser gRPC и Shreds обновлена для совместимости с Solana v3
Большинству пользователей для перехода на v0.12.0 достаточно повысить версию в package.json: изменять код приложения не требуется.

Почему Node.js в одиночку не справляется с Shreds

ShredStream — источник данных Solana с наименьшей задержкой и наибольшей частотой. Shreds позволяют увидеть активность сети раньше всего, но требуют от клиента очень высокой пропускной способности обработки.
Клиенты Node.js на базе @grpc/grpc-js сталкиваются со структурными ограничениями:
  • Цикл событий однопоточен, поэтому десериализация protobuf и пользовательские обратные вызовы блокируют друг друга
  • При быстром поступлении сообщений поток JavaScript перегружается, и очередь начинает расти
  • По мере заполнения буферов управление потоком HTTP/2 сокращает окно приёма, а затем приостанавливает поток, что выглядит как «замедление сети» или «отсутствие данных»
Во многих наблюдавшихся случаях проблема была не в сети и не в сервере ShredStream, а в том, что клиент Node.js не успевал обрабатывать данные.
Это ограничение присуще Node.js при масштабной обработке нефильтрованного потока Shreds.
Именно здесь помогает Rust + NAPI-RS.

Как Rust + NAPI-RS ускоряют потоковую обработку в Node.js

Реализация Solana Stream SDK на TypeScript переносит тяжёлую работу в Rust, сохраняя знакомые API JavaScript.
  • Управление gRPC-соединениями, приём потоков и десериализация protobuf выполняются асинхронно в Rust
  • Node.js получает обработанные данные как стандартный поток или эмиттер событий, поэтому существующий код продолжает работать без изменений
  • NAPI-RS сводит к минимуму накладные расходы между Rust и Node.js и обеспечивает полноценную многопоточную обработку за JavaScript-интерфейсом
Благодаря этому приложения на Solana Stream SDK могут обрабатывать значительно больший объём Shreds и Geyser gRPC, чем решения только на Node.js с @grpc/grpc-js, сохраняя стабильную задержку даже при высокой нагрузке.

Почему важно поддерживать и Shreds, и Geyser gRPC в одном SDK

Данные Solana в реальном времени можно разделить на два взаимодополняющих слоя:
  • Shreds Фрагменты с минимальной задержкой, поступающие непосредственно от лидера и позволяющие раньше всего увидеть активность сети
  • Geyser gRPC Структурированные потоки слотов, транзакций и обновлений аккаунтов с удобной и предсказуемой моделью данных
Solana Stream SDK позволяет начать с Geyser gRPC, чтобы изучить структуры данных, а затем перейти к Shreds в сценариях со сверхнизкой задержкой — без смены инструментов и переписывания конвейера.
По мере того как Alpenglow ускоряет производство и подтверждение блоков, такой двухуровневый подход становится ещё ценнее.

С чего начать: ресурсы и тестовые окружения

Исходный код Solana Stream SDK полностью открыт, а примеры для Shreds и Geyser gRPC доступны на GitHub.
Для испытаний в реальных условиях ERPC предоставляет однодневный бесплатный доступ к высокопроизводительным эндпоинтам ShredStream и Geyser gRPC, позволяя проверить поведение v3 на инфраструктуре промышленного класса.
Официальный сайт ERPC: https://erpc.global/ru/

Присоединяйтесь к сообществу Validators DAO

В сообществе Validators DAO можно обсудить Solana v3, Alpenglow, архитектуру потоков реального времени и дальнейшие улучшения SDK, а также задать вопросы и оставить обратную связь.
Официальный Discord Validators DAO: https://discord.gg/C7ZQSrCkYR
С переходом Solana в эпоху Alpenglow сеть выйдет на новый уровень производительности в реальном времени. Validators DAO и ELSOUL LABO продолжат выпускать качественные инструменты с открытым исходным кодом для нового поколения приложений реального времени на Solana.
Спасибо за вашу поддержку.