Direct Shreds - Chuyển tiếp UDP (Raw Shreds)

Nếu bạn có ERPC Dedicated Shreds, bạn có thể chuyển tiếp raw Shreds qua UDP đến listener của riêng mình. Đây là lớp quan sát nhanh nhất của Solana — trước Geyser gRPC và nhanh hơn nhiều so với RPC/WebSocket. SDK bao gồm một mẫu Rust đơn giản; new-token detection được sử dụng chỉ vì đó là câu hỏi phổ biến nhất chúng tôi nhận được.

Tại sao đây là đường nhanh nhất

  • Shreds đến trước: Shreds giữa validator-với-validator đến trước Geyser gRPC hoặc RPC/WebSocket, nên các flow yêu cầu độ trễ thấp sẽ thấy sự kiện sớm nhất.
  • UDP giữ overhead nhỏ nhất: không cần thiết lập kết nối, truyền lại, hoặc sắp xếp thứ tự; phù hợp với định dạng trên dây giữa các validator.
  • Đánh đổi: dữ liệu trước khi finalization có thể thiếu/không theo thứ tự/thất bại — hãy xử lý điều đó như một phần của sự đánh đổi tốc độ.
Lưu ý: endpoint Shreds gRPC chia sẻ chạy qua TCP, nên chậm hơn UDP Shreds.

Thử với Solana Stream SDK

  • Mã mẫu (shreds-udp-rs, Rust): new-token detection chỉ là một ví dụ phổ biến — hãy thay bằng mục tiêu của riêng bạn. https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
  • Người dùng Dedicated Shreds: trỏ Shreds sender của bạn đến ip:port của mẫu để xem các phát hiện.
  • Chưa dùng UDP? Chạy cục bộ hoặc trên server của riêng bạn để khám phá log và tùy chỉnh hook.

Khi gói UDP không đến

Việc chuyển tiếp UDP tự động bắt đầu sau khi cấu hình đích đến. Không cần kích hoạt bằng heartbeat; phản hồi heartbeat UNIMPLEMENTED không có nghĩa là tính năng chuyển tiếp đã bị tắt.
Trước tiên, hãy bắt lưu lượng tại giao diện mạng của máy chủ. Thay các giá trị giữ chỗ bằng IP nguồn ERPC hiển thị cho stream của bạn và cổng đích đã cấu hình.
Linux (tcpdump):
bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'
Windows (Pktmon, chạy với quyền Quản trị viên):
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. Nếu kết quả bắt gói vẫn bằng 0, hãy kiểm tra cả tường lửa của hệ điều hành và tường lửa bên ngoài hệ điều hành. Hetzner có thể lọc lưu lượng trong Cloud Firewall hoặc Robot Firewall tại cổng switch. Trên AWS, hãy kiểm tra Security Group và Network ACL của subnet.
  2. Cho phép UDP đến từ <ERPC_SOURCE_IP>/32 tới cổng đích <DESTINATION_PORT>. Không giới hạn cổng nguồn vì ERPC sử dụng cổng nguồn UDP động.
  3. Nếu thấy gói trong bản bắt lưu lượng nhưng ứng dụng không nhận được, hãy cho bộ nhận lắng nghe tại 0.0.0.0:<DESTINATION_PORT> thay vì localhost, sau đó kiểm tra tường lửa cục bộ và cấu hình socket/process.
Nếu vẫn không có gói sau khi cập nhật quy tắc, hãy gửi cho Support thời lượng bắt gói, số lượng gói, IP nguồn, IP đích và cổng đích.

Tài nguyên