Direct Shreds - UDP Forwarding Standard (Raw Shreds)

Với UDP Forwarding Standard, hãy chọn một khu vực khả dụng trong quá trình thiết lập ban đầu và cấu hình địa chỉ IPv4 công khai hợp lệ, không trống cùng cổng làm đích. Khu vực đã chọn được cố định sau khi thiết lập, còn đích có thể cập nhật sau. Cấu hình chuyển tiếp được áp dụng theo chu kỳ làm mới khoảng 30 giây và không cần kích hoạt heartbeat.

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 UDP Forwarding Standard: trỏ receiver 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