Direct Shreds - UDP 轉發(原始 Shreds)

如果您擁有 ERPC 專用 Shreds,您可以透過 UDP 將原始 Shreds 轉發到自己的監聽器。這是 Solana 最快的觀測層——早於 Geyser gRPC,遠遠領先於 RPC/WebSocket。SDK 包含一個簡單的 Rust 示例;使用 new-token detection 只是因為這是我們最常收到的問題。

為什麼這是最快的路徑

  • Shreds 最先到達:驗證者到驗證者的 Shreds 比 Geyser gRPC 或 RPC/WebSocket 更早到達,因此延遲敏感的流程能最早看到事件。
  • UDP 開銷極小:無需連線建立、重傳或排序;與驗證者之間的線上格式匹配。
  • 權衡:預最終確認的資料可能缺失/無序/失敗——將此視為速度優勢的代價。
注意:共享的 Shreds gRPC 端點執行在 TCP 上,因此比 UDP Shreds 更慢。

使用 Solana Stream SDK 嘗試

  • 示例程式碼(shreds-udp-rs,Rust):new-token detection 只是一個常見示例——可以替換為您自己的目標。 https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
  • 專用 Shreds 使用者:將您的 Shreds 傳送器指向示例的 ip:port 以檢視檢測結果。
  • 還未使用 UDP?在本地或您自己的伺服器上執行它來檢視日誌並自定義鉤子。

UDP 封包無法到達時

設定目的地後,UDP 轉送會自動開始。無需透過 heartbeat 啟用;heartbeat 回傳 UNIMPLEMENTED 並不代表轉送已停用。
首先在主機網路介面上擷取封包。請將預留位置替換為該串流顯示的 ERPC 來源 IP 和您設定的目的地連接埠。
Linux(tcpdump):
bash
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-time
  1. 如果擷取結果持續為零,請同時檢查作業系統防火牆和作業系統之外的防火牆。Hetzner 可能會在 Cloud Firewall 或交換器連接埠的 Robot Firewall 過濾流量。在 AWS 上,請檢查 Security Group 和子網路的 Network ACL。
  2. 允許從 <ERPC_SOURCE_IP>/32 到目的地連接埠 <DESTINATION_PORT> 的輸入 UDP。ERPC 使用動態 UDP 來源連接埠,因此請勿限制來源連接埠。
  3. 如果擷取時可看到封包,但應用程式無法接收,請讓接收器監聽 0.0.0.0:<DESTINATION_PORT> 而非 localhost,然後檢查本機防火牆以及 socket / process 設定。
更新規則後仍未收到封包時,請向支援團隊提供擷取時間、封包數量、來源 IP、目的地 IP 和目的地連接埠。

資源