Direct Shreds - UDP Forwarding Standard (Raw Shreds)
UDP Forwarding Standard пересылает Raw Shreds по UDP на публичный IPv4-адрес и порт, настроенные для вашей подписки. Выберите доступный регион при первоначальной настройке, затем сохраните в качестве назначения корректный непустой публичный IPv4-адрес с портом. Назначение можно обновить позже. ERPC применяет конфигурацию пересылки в рамках 30-секундного цикла обновления; активация heartbeat не требуется. Регион тоже можно изменить позже в веб-панели — столько раз, сколько потребуется. При смене региона меняется исходный IP-адрес, поэтому брандмауэр на принимающей стороне должен разрешать новый исходный IP-адрес. Пока подписка переходит в новый регион, доставка ненадолго прерывается. Если в новом регионе сейчас нет свободных мощностей, переход не выполняется, и ни регион, ни назначение не меняются.
Как работает пересылка UDP
- ERPC пересылает Raw Shreds по UDP на настроенный адрес назначения.
- UDP не обеспечивает ни установки соединения, ни повторной передачи, ни упорядочивания пакетов; вашему приёмнику следует обрабатывать пакеты с учётом этого.
Примечание: общий эндпоинт Shreds gRPC работает поверх TCP, поэтому он медленнее, чем UDP Shreds.
Попробуйте с помощью Solana Stream SDK
- Пример кода (
shreds-udp-rs, Rust): обнаружение новых токенов здесь лишь типичный сценарий — подставьте свою цель.
https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs - Укажите в настройках приёмника адрес назначения
ip:port, сохранённый для UDP Forwarding Standard. - Ещё не используете UDP? Запустите пример локально или на своём сервере, чтобы изучить логи и настроить хуки под себя.
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, затем проверьте локальный брандмауэр и настройки сокета/процесса.
Если после обновления правил пакеты всё ещё не приходят, отправьте в службу поддержки длительность захвата, количество пакетов, исходный IP-адрес, IP-адрес назначения и порт назначения.
Документация провайдеров: Hetzner Cloud Firewall, Hetzner Robot Firewall, AWS Security Groups, AWS Network ACLs и Microsoft Pktmon.
Ресурсы
- Весь код и документация README находятся в репозитории Solana Stream SDK:
https://github.com/ValidatorsDAO/solana-stream






