ERPC выпускает Solana Stream SDK v4.0.0 с ускоренной обработкой UDP Shreds и восстановлением приёма по gRPC

ERPC выпускает Solana Stream SDK v4.0.0 с ускоренной обработкой UDP Shreds и восстановлением приёма по gRPC

ERPC выпускает Solana Stream SDK v4.0.0 с ускоренной обработкой UDP Shreds и восстановлением приёма по gRPC
ELSOUL LABO B.V. и Validators DAO 6 ноября 2026 года официально выпустили Solana Stream SDK v4.0.0, SDK с открытым исходным кодом для работы с потоковыми данными Solana. Локальные бенчмарки показали ускорение внутренней обработки UDP Shreds в Rust примерно в 108 раз и рост пропускной способности очереди событий TypeScript примерно в 4 раза. Geyser gRPC также быстрее возобновляет приём обновлений после разрыва соединения. SDK можно использовать бесплатно, а примеры на Rust и TypeScript помогают начать разработку.
Чтобы приложение могло воспользоваться преимуществами доставки данных с низкой задержкой, важна и скорость обработки поступающих данных. Версия 4.0.0 повышает эффективность внутренней обработки после получения данных и улучшает восстановление соединения после разрывов. Использование SDK вместе с ERPC Shreds UDP Forwarding Premium позволяет разработчикам улучшить как путь доставки, так и реализацию приёма данных в своих приложениях Solana.

Улучшения обработки и восстановления приёма, измеренные в трёх тестах

Сравнение внутренней обработки Rust UDP, очереди событий TypeScript и восстановления приёма по gRPC в Solana Stream SDK v4.0.0
В тракте приёма Rust UDP версия v4 ускоряет декодирование датаграмм, их вставку во внутренний буфер и операцию deshred, которая восстанавливает данные из Shreds. Накладные расходы снижаются благодаря пересмотру очистки внутреннего состояния и обращений к часам, ранее повторявшихся для каждого пакета, при сохранении сроков хранения данных. В сравнительном тесте время внутренней обработки одной датаграммы сократилось с 94 236 нс до 855–881 нс, что соответствует ускорению примерно в 108 раз.
Бенчмарк выполнялся на Mac с чипом Apple серии M. За каждый прогон обрабатывались 403 200 датаграмм для 300 слотов. В результатах сравниваются медианы пяти прогонов. Измерение охватывает внутренний тракт decode→insert→deshred. Оно не включает время доставки по сети и последующую обработку в приложении пользователя. Сокращение объёма работы по восстановлению поступающих Shreds позволяет разработчикам направить больше вычислительных ресурсов на логику приложения.
Примеры и стартовые проекты TypeScript для Geyser gRPC сокращают ожидание, пока в очереди остаются события, и позволяют эффективнее извлекать полученные данные. В тесте только очереди, обрабатывавшем два миллиона событий на Node.js 24, пропускная способность выросла с 5,7–7,4 миллиона до 24,8–29,4 миллиона событий в секунду, то есть примерно в 4 раза.
Для Geyser gRPC обновлены клиент, отвечающий за повторное подключение, и начальный интервал повторной попытки. В тесте с 20 разрывами соединения на локальном сервере tonic медианный интервал между обновлениями, полученными до и после каждого разрыва, сократился с 552 мс для 3.0 runner до 103 мс для 4.0 runner. Этот показатель отражает время до возобновления обновлений в локальной тестовой среде.
Эти три результата получены в разных тестах с разными объектами измерения и условиями. Они показывают улучшения внутренней обработки в Rust, очереди событий TypeScript и повторного подключения gRPC соответственно. Подробности реализации и условия тестов опубликованы в PR #129, ссылка на который приведена в разделе «Ссылки».

Сохранение поддержки Alpenglow и обновление клиентов

Поддержка Alpenglow появилась в v3.0.0. Версия 4.0.0 сохраняет разделение между маркерами блоков, представляющими заголовок, завершающую часть и обновления родительского блока, и entries, содержащими транзакции. Приложения могут обрабатывать информацию о структуре блока отдельно от entries, которые им требуется обработать.
Версия 4.0.0 обновляет клиенты до Agave 4.4.1 и Yellowstone gRPC 17.x. При повторном подключении событие Disconnected может сообщать сведения, идентифицирующие частично полученные данные, а также позицию возобновления приёма. Это даёт приложениям информацию, необходимую для собственной обработки дубликатов повторно отправленных данных и данных, полученных лишь частично.
При переходе с v3 на v4 сохраняются определения Geyser protobuf, но обновляются события повторного подключения и используемые в Rust типы Solana message и transaction. Изменения в обработчиках событий и версиях зависимостей описаны в опубликованном руководстве по миграции.

Rust для UDP, Rust и TypeScript для gRPC

Опубликованные пакеты solana-stream-sdk для Rust и @validators-dao/solana-stream-sdk для TypeScript доступны в версии v4.0.0. Поддерживаемые языки для каждого типа подключения приведены ниже.
Тип подключенияПоддерживаемые языки
Shreds UDPRust
Geyser gRPCRust и TypeScript
Shreds gRPCRust и TypeScript
Для приёма Shreds по UDP используйте клиент Rust. Пример и стартовый проект Rust UDP используют опубликованный SDK v4.0.0 и позволяют попробовать приём данных, восстановление данных из Shreds и обнаружение инструкций отслеживаемой программы. Изменив отслеживаемую программу и обработку после обнаружения, этот проект можно использовать как отправную точку для собственного приложения.
При разработке на TypeScript можно использовать Geyser gRPC или Shreds gRPC. Улучшения очереди событий в этом выпуске включены в примеры и стартовые проекты Geyser gRPC. Выберите опубликованную реализацию, соответствующую вашему языку и способу доставки данных.

Использование возможностей Shreds UDP Forwarding Premium

ERPC Shreds UDP Forwarding Premium объединяет несколько узлов каждого региона в mesh-сеть и пересылает первую копию каждого Shred, полученную этой сетью. На то, как скоро полученные данные станут пригодны для использования, влияют и время их поступления по пути доставки, и время восстановления внутри SDK после получения. Улучшения приёма Rust UDP можно применить на стороне получателя к данным, доставляемым Premium.
В сравнении, проведённом во Франкфурте 30 октября 2026 года, данные Standard и Premium одновременно записывались в течение 120 секунд на одной машине с единым источником времени. Из pcap сопоставлялись полезные нагрузки UDP с одинаковым содержимым. В этом общем наборе Premium приходил первым в 98% случаев, а медианная разница времени поступления составила 1,78 мс. Из полезных нагрузок, наблюдавшихся в Standard, 93,9% также наблюдались в Premium.
Сравнение первенства поступления данных Shreds UDP Forwarding Premium и Standard в одинаковых условиях во Франкфурте
На иллюстрации Premium показаны различия во времени поступления по разным путям доставки, а на иллюстрации SDK представлены внутренняя обработка на стороне получателя и восстановление соединения. В реальном приложении фиксация как времени поступления пакета, так и момента обнаружения нужной инструкции позволяет проверить, насколько преимущество в доставке сохраняется в результате обработки.

Сравнение в своей среде с почасовой оплатой и примерами

Shreds UDP Forwarding Premium доступен с почасовой оплатой по цене €1,39 в час. Подключите сервис в панели управления и проверьте приём с помощью стартового проекта Rust UDP. Сравнение в одном регионе, на одном сервере приёма и с одинаковой нагрузкой приложения позволяет отдельно оценить различия во времени поступления и во времени обработки после получения.
Сначала зарегистрируйте публичный IPv4-адрес и UDP-порт в панели управления и разрешите входящий трафик от указанных источников. Проверив приём пакетов и восстановление данных с помощью стартового проекта Rust UDP, добавьте в оценку отслеживаемые программы и фактическую обработку вашего приложения. Используйте примеры вместе с сервисом доставки, чтобы измерить в собственной среде время от приёма до обнаружения.

Ссылки