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:port dell'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>'
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-time
  1. 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.
  2. Consenti il traffico UDP in entrata da <ERPC_SOURCE_IP>/32 verso la porta di destinazione <DESTINATION_PORT>. Lascia la porta sorgente senza restrizioni perché ERPC usa porte sorgente UDP dinamiche.
  3. 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.

Risorse