🔬 تنسيق الحزمة
هذا المرجع مخصص للمستقبِلات المخصصة فقط. صيغة الـ shred لدينا مُحسَّنة لـ ShredStream.com — ولا تطابق ما تتوقعه أدوات Solana القياسية. يُغلِّف SDK كل هذا نيابةً عنك. لا تقرأ هذه الصفحة إلا إذا كنت تُنفّذ مُستقبِل UDP مخصّصًا دون SDK الخاص بنا. راجع لماذا تستخدم SDK وبدء سريع SDK.
📖 نظرة عامة
كل حزمة UDP يُوصلها ShredStream.com بالضبط 1203 بايت وتحتوي على shred بيانات تقليدي واحد (variant 0xA5). يُوصل ShredStream.com shreds البيانات فقط -- لا يتم تضمين shreds FEC أو الترميز في البث.
يحمل كل shred جزءاً من بيانات إدخال slot Solana. تصل الـ shreds بمؤشرات متسلسلة داخل كل slot، بدءاً من 0. لإعادة بناء بيانات الكتلة الكاملة لـ slot، اجمع كل shreds الخاصة به، رتبها حسب المؤشر، وألحق payloads.
📐 جدول الإزاحات
| الإزاحة | الحجم | الحقل | النوع | الوصف |
|---|---|---|---|---|
0x00 | 64 | Signature | bytes | 64 بايت أصفار. لا يوقع ShredStream.com الـ shreds؛ لا تتحقق من هذا الحقل |
0x40 | 1 | Shred Variant | u8 | دائماً 0xA5 (shred بيانات تقليدي) |
0x41 | 8 | Slot | u64 LE | رقم slot الذي ينتمي إليه هذا الـ shred |
0x49 | 4 | Index | u32 LE | مؤشر shred داخل slot (متسلسل) |
0x4D | 2 | Version | u16 LE | دائماً 0 -- غير مستخدم من ShredStream.com |
0x4F | 4 | FEC Set Index | u32 LE | دائماً 0 -- غير مستخدم من ShredStream.com |
0x53 | 2 | Parent Offset | u16 LE | دائماً 0 -- غير مستخدم من ShredStream.com |
0x55 | 1 | Flags | u8 | علم الحدود: DATA_COMPLETE = 0x40 |
0x56 | 2 | Size | u16 LE | الحجم المفيد الكلي (ترويسة + payload). Payload = data[0x58..size] |
0x58 | متغير | Payload | bytes | بيانات الإدخال الفعلية |
| بعد payload | متغير | حشو أصفار | bytes | بايتات غير مستخدمة (أصفار) من نهاية payload إلى البايت 1203 |
📏 الثوابت
| الثابت | القيمة | ملاحظات |
|---|---|---|
SHRED_MAX_SIZE | 1203 بايت | الحجم الثابت لكل حزمة UDP |
DATA_HEADER_SIZE | 88 بايت (0x58) | الحجم الكلي للترويسة قبل payload |
MAX_PAYLOAD_SIZE | 1035 بايت | أقصى payload لكل shred (80 بايت محجوزة للتوافق مع تنسيق Solana السلكي) |
🚩 بايت الأعلام
بايت الأعلام عند الإزاحة 0x55 يُشير إلى حدود دفعة الإدخال:
| العلم | القيمة | المعنى |
|---|---|---|
DATA_COMPLETE | 0x40 | هذا آخر shred بيانات في دفعة الإدخال الحالية |
⚠️ ملاحظات مهمة
- shreds بيانات فقط. يُوصل ShredStream.com shreds البيانات التقليدية (variant
0xA5). لن تستقبل shreds FEC/الترميز. - مؤشرات متسلسلة. داخل كل slot، تبدأ مؤشرات shred من 0 وتتزايد بالتسلسل. فقدان مؤشر يعني فقدان shred أثناء النقل.
- حجم Payload. يُشير حقل Size إلى نهاية البيانات المفيدة. بايتات Payload في data[0x58..size]. البايتات بعد إزاحة size هي حشو أصفار.