Direct Shreds - UDP Forwarding (Raw Shreds)
Если у вас есть ERPC Dedicated Shreds, вы можете пересылать raw Shreds по UDP в собственный listener. Это самый быстрый observation layer в Solana - раньше Geyser gRPC и значительно раньше RPC/WebSocket. В SDK есть простой Rust sample; new-token detection используется только потому, что это самый частый вопрос, который нам задают.
Почему это самый быстрый путь
- Shreds приходят первыми: validator-to-validator Shreds доставляются раньше Geyser gRPC или RPC/WebSocket, поэтому latency-critical flows видят events раньше всего.
- UDP сохраняет минимальный overhead: нет установки connection, retransmit или ordering; формат соответствует тому, как данные передаются между validators "по проводу".
- Компромисс: до финализации данные могут отсутствовать, приходить не по порядку или относиться к failed operations - это часть платы за скорость.
Примечание: shared Shreds gRPC endpoint работает поверх TCP, поэтому он медленнее, чем UDP Shreds.
Попробуйте с Solana Stream SDK
- Sample code (
shreds-udp-rs, Rust): new-token detection здесь только как типовой пример - подставьте свою цель. https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs - Пользователи Dedicated Shreds: направьте Shreds sender на
ip:portиз sample, чтобы увидеть detections. - Еще не используете UDP? Запустите sample локально или на своем сервере, чтобы посмотреть logs и адаптировать hooks под себя.
UDP-пакеты не приходят
Пересылка UDP запускается автоматически после настройки адреса назначения. Активация через heartbeat не требуется; ответ heartbeat
UNIMPLEMENTED не означает, что пересылка отключена.Сначала выполните захват трафика на сетевом интерфейсе хоста. Замените заполнители на исходный IP-адрес ERPC, указанный для вашего потока, и настроенный порт назначения.
Linux (
tcpdump):bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'Windows (
Pktmon, запуск от имени администратора):powershell
pktmon filter add ERPC-UDP -t UDP -i <ERPC_SOURCE_IP> -p <DESTINATION_PORT>
pktmon start --capture --comp nics --log-mode real-timepktmon filter add ERPC-UDP -t UDP -i <ERPC_SOURCE_IP> -p <DESTINATION_PORT>
pktmon start --capture --comp nics --log-mode real-time- Если захват по-прежнему показывает ноль пакетов, проверьте как брандмауэр ОС, так и брандмауэры вне ОС. В Hetzner трафик может фильтроваться в Cloud Firewall или Robot Firewall на порту коммутатора. В AWS проверьте Security Group и Network ACL подсети.
- Разрешите входящий UDP-трафик от
<ERPC_SOURCE_IP>/32к порту назначения<DESTINATION_PORT>. Не ограничивайте исходный порт: ERPC использует динамические исходные UDP-порты. - Если пакеты видны в захвате, но приложение их не получает, настройте приёмник на
0.0.0.0:<DESTINATION_PORT>, а не на localhost, затем проверьте локальный брандмауэр и настройки сокета/процесса.
Если после обновления правил пакеты всё ещё не приходят, отправьте в Support длительность захвата, количество пакетов, исходный IP-адрес, IP-адрес назначения и порт назначения.
Официальная документация провайдеров: Hetzner Cloud Firewall, Hetzner Robot Firewall, AWS Security Groups, AWS Network ACLs и Microsoft Pktmon.
Ресурсы
- Весь code и README docs находятся в репозитории Solana Stream SDK: https://github.com/ValidatorsDAO/solana-stream






