Direct Shreds - Inoltro UDP (Shreds grezzi)
Se disponi di ERPC Dedicated Shreds, puoi inoltrare Shreds grezzi via UDP al tuo listener. Questo è il livello di osservazione più veloce di Solana — prima di Geyser gRPC e ben oltre RPC/WebSocket. L'SDK include un semplice esempio in Rust; il rilevamento di nuovi token è usato solo perché è la domanda più frequente che riceviamo.
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 Dedicated Shreds: punta il tuo sender Shreds all'
ip:portdell'esempio 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






