Direct Shreds - UDP Forwarding Standard (Raw Shreds)
Per UDP Forwarding Standard, seleziona una regione disponibile durante la configurazione iniziale e configura come destinazione un indirizzo IPv4 pubblico valido e non vuoto con la relativa porta. La regione selezionata resta fissa dopo la configurazione, mentre la destinazione può essere aggiornata in seguito. La configurazione dell'inoltro viene applicata con un ciclo di aggiornamento di circa 30 secondi e non richiede l'attivazione di heartbeat.
Perché questo è il percorso più veloce
- Gli Shreds arrivano per primi: gli Shreds da validatore a validatore arrivano prima di Geyser gRPC o RPC/WebSocket, quindi i flussi sensibili alla latenza vedono gli eventi per primi.
- UDP mantiene l'overhead minimo: nessuna apertura di connessione, ritrasmissione o ordinamento; corrisponde al formato on-wire tra validatori.
- Compromesso: i dati pre-finalizzazione possono essere mancanti, fuori ordine o falliti — gestiscilo come parte del patto con la velocità.
Nota: l'endpoint Shreds gRPC condiviso funziona su TCP, quindi è più lento degli Shreds UDP.
Provalo con Solana Stream SDK
- Codice di esempio (
shreds-udp-rs, Rust): il rilevamento di nuovi token è solo un esempio comune — sostituiscilo con il tuo obiettivo. https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs - Utenti UDP Forwarding Standard: configura il tuo receiver con la destinazione
ip:portsalvata nell'abbonamento per vedere i rilevamenti. - Non sei ancora su UDP? Eseguilo in locale o sul tuo server per esplorare i log e personalizzare gli hook.
I pacchetti UDP non arrivano
L'inoltro UDP si avvia automaticamente dopo che la destinazione è stata configurata. Non è richiesta alcuna attivazione heartbeat; una risposta heartbeat
UNIMPLEMENTED non significa che l'inoltro sia disabilitato.Per prima cosa, cattura il traffico sull'interfaccia di rete dell'host. Sostituisci i placeholder con l'IP sorgente ERPC mostrato per il tuo stream e con la porta di destinazione che hai configurato.
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, esegui come Amministratore):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- Se la cattura resta a zero, controlla sia il firewall del sistema operativo sia i firewall esterni al sistema operativo. Hetzner potrebbe filtrare il traffico nel Cloud Firewall o nel firewall Robot a livello di porta dello switch. Su AWS, controlla il Security Group e la Network ACL della subnet.
- Consenti il traffico UDP in entrata da
<ERPC_SOURCE_IP>/32verso la porta di destinazione<DESTINATION_PORT>. Lascia la porta sorgente senza restrizioni perché ERPC usa porte sorgente UDP dinamiche. - Se i pacchetti compaiono nella cattura ma non nella tua applicazione, esegui il bind del receiver su
0.0.0.0:<DESTINATION_PORT>anziché su localhost, quindi controlla il firewall locale e le impostazioni di socket/processi.
Se dopo l'aggiornamento delle regole non arriva ancora alcun pacchetto, invia al Supporto la durata della cattura, il numero di pacchetti, l'IP sorgente, l'IP di destinazione e la porta di destinazione.
Riferimenti dei provider: Hetzner Cloud Firewall, Hetzner Robot Firewall, AWS Security Groups, AWS Network ACLs e Microsoft Pktmon.
Risorse
- Tutto il codice e la documentazione README sono nel repository Solana Stream SDK: https://github.com/ValidatorsDAO/solana-stream






