Direct Shreds - UDP Forwarding (Raw Shreds)

यदि आपके पास ERPC Dedicated Shreds है, तो आप raw Shreds को UDP के ज़रिए अपने स्वयं के listener पर फॉरवर्ड कर सकते हैं। यह Solana की सबसे तेज़ observation layer है—Geyser gRPC से पहले और RPC/WebSocket से कहीं आगे। SDK में एक सरल Rust सैंपल शामिल है; new-token detection का उपयोग केवल इसलिए किया गया है क्योंकि यह सबसे आम सवाल है जो हमसे पूछा जाता है।

यह सबसे तेज़ रास्ता क्यों है

  • Shreds सबसे पहले पहुँचते हैं: validator-to-validator Shreds, Geyser gRPC या RPC/WebSocket से पहले land करते हैं, इसलिए latency-critical flows सबसे पहले events देखते हैं।
  • UDP ओवरहेड को बहुत कम रखता है: न connection setup, न retransmit, न ordering; यह validators के बीच on-wire format से मेल खाता है।
  • Trade-off: pre-finalization डेटा गायब/क्रम से बाहर/विफल हो सकता है—इसे speed के सौदे के हिस्से के रूप में संभालें।
नोट: साझा Shreds gRPC endpoint TCP पर चलता है, इसलिए यह UDP Shreds की तुलना में धीमा है।

इसे Solana Stream SDK के साथ आज़माएँ

  • सैंपल कोड (shreds-udp-rs, Rust): new-token detection तो बस एक आम उदाहरण है—इसमें अपना target स्वैप कर दें।
    https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
  • Dedicated Shreds उपयोगकर्ता: अपने Shreds sender को सैंपल के ip:port पर point करें ताकि detections दिखें।
  • अभी तक UDP पर नहीं हैं? logs को explore करने और hooks को customize करने के लिए इसे locally या अपने स्वयं के server पर चलाएँ।

UDP पैकेट नहीं पहुँच रहे हैं

गंतव्य कॉन्फ़िगर होते ही UDP forwarding अपने-आप शुरू हो जाती है। heartbeat से activation की आवश्यकता नहीं है; heartbeat का UNIMPLEMENTED उत्तर यह नहीं बताता कि forwarding बंद है।
सबसे पहले host के network interface पर traffic capture करें। placeholders को आपके stream के लिए दिखाए गए ERPC source IP और कॉन्फ़िगर किए गए destination port से बदलें।
Linux (tcpdump):
bash
sudo tcpdump -ni any 'udp dst port <DESTINATION_PORT> and src host <ERPC_SOURCE_IP>'
Windows (Pktmon, Administrator के रूप में चलाएँ):
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. यदि capture में लगातार शून्य पैकेट दिखते हैं, तो OS firewall और OS के बाहर के firewalls दोनों जाँचें। Hetzner में Cloud Firewall या switch port का Robot Firewall traffic को filter कर सकता है। AWS में Security Group और subnet का Network ACL जाँचें।
  2. <ERPC_SOURCE_IP>/32 से destination port <DESTINATION_PORT> तक inbound UDP की अनुमति दें। ERPC dynamic UDP source ports का उपयोग करता है, इसलिए source port को सीमित न करें।
  3. यदि capture में पैकेट दिखते हैं लेकिन application उन्हें प्राप्त नहीं करती, तो receiver को localhost के बजाय 0.0.0.0:<DESTINATION_PORT> पर bind करें, फिर local firewall और socket/process settings जाँचें।
नियम अपडेट करने के बाद भी पैकेट न आएँ, तो Support को capture की अवधि, packet count, source IP, destination IP और destination port भेजें।
प्रदाता के आधिकारिक दस्तावेज़: Hetzner Cloud Firewall, Hetzner Robot Firewall, AWS Security Groups, AWS Network ACLs, और Microsoft Pktmon

संसाधन