🔬 数据包格式

本参考仅面向定制接收器。 我们的 shred 格式经过 ShredStream.com 优化 — 与标准 Solana 工具链的预期不匹配。SDK 为您封装了这一切。仅当您在不使用 SDK 的情况下实现定制 UDP 接收器时才需阅读本页。参见为什么使用 SDKSDK 快速入门

📖 概述

ShredStream.com 传送的每个 UDP 数据包固定为 1203 字节,包含一个 legacy data shred(variant 0xA5)。ShredStream.com 仅传送 data shreds——流中不包含 FEC 或 coding shreds。

每个 shred 承载 Solana slot 条目数据的一部分。同一 slot 内的 shreds 按顺序索引到达,从 0 开始。要重建某个 slot 的完整区块数据,需收集该 slot 的所有 shreds,按索引排序,然后拼接 payload。

📐 偏移量表

偏移量大小字段类型说明
0x0064Signaturebytes64 个零字节。ShredStream.com 不对 shreds 签名;请勿验证此字段
0x401Shred Variantu8始终为 0xA5(legacy data shred)
0x418Slotu64 LE此 shred 所属的 slot 编号
0x494Indexu32 LEslot 内的 shred 索引(顺序递增)
0x4D2Versionu16 LE始终为 0——ShredStream.com 未使用
0x4F4FEC Set Indexu32 LE始终为 0——ShredStream.com 未使用
0x532Parent Offsetu16 LE始终为 0——ShredStream.com 未使用
0x551Flagsu8边界标志:DATA_COMPLETE = 0x40
0x562Sizeu16 LE有效总大小(头部 + payload)。Payload = data[0x58..size]
0x58可变Payloadbytes实际条目数据
payload 之后可变零填充bytes从 payload 末尾到第 1203 字节的未使用字节(均为零)

📏 常量

常量说明
SHRED_MAX_SIZE1203 字节每个 UDP 数据包的固定大小
DATA_HEADER_SIZE88 字节(0x58payload 之前的总头部大小
MAX_PAYLOAD_SIZE1035 字节每个 shred 的最大 payload(80 字节保留用于 Solana 线路格式兼容性)

🚩 Flags 字节

偏移量 0x55 处的 flags 字节标示条目批次边界:

标志含义
DATA_COMPLETE0x40当前条目批次中的最后一个 data shred

⚠️ 重要说明

  • **仅 data shreds。**ShredStream.com 传送 legacy data shreds(variant 0xA5)。您不会收到 FEC/coding shreds。
  • **顺序索引。**每个 slot 内的 shred 索引从 0 开始顺序递增。缺少某个索引意味着该 shred 在传输中丢失。
  • **Payload 大小。**Size 字段指示有效数据的结束位置。Payload 字节位于 data[0x58..size]。超出 size 偏移量的字节为零填充。
数据包格式 — Documentations | ShredStream.com