🔬 Formato de Paquete
Esta referencia es solo para receptores custom. Nuestro formato de shred está optimizado para ShredStream.com — no coincide con lo que espera el tooling Solana estándar. El SDK encapsula todo esto por ti. Lee esta página solo si estás implementando un receptor UDP custom sin nuestro SDK. Ver Por qué usar el SDK y el Inicio Rápido SDK.
📖 Descripcion General
Cada paquete UDP entregado por ShredStream.com tiene exactamente 1203 bytes y contiene un unico legacy data shred (variante 0xA5). ShredStream.com entrega solo data shreds -- no se incluyen shreds FEC ni coding shreds en el stream.
Cada shred transporta una porcion de los datos de entrada de un slot de Solana. Los shreds llegan con indices secuenciales dentro de cada slot, comenzando desde 0. Para reconstruir los datos completos del bloque de un slot, recopila todos sus shreds, ordenalos por indice y concatena los payloads.
📐 Tabla de Offsets
| Offset | Tamano | Campo | Tipo | Descripcion |
|---|---|---|---|---|
0x00 | 64 | Signature | bytes | 64 bytes en cero. ShredStream.com no firma los shreds; no verifiques este campo |
0x40 | 1 | Shred Variant | u8 | Siempre 0xA5 (legacy data shred) |
0x41 | 8 | Slot | u64 LE | Numero de slot al que pertenece este shred |
0x49 | 4 | Index | u32 LE | Indice del shred dentro del slot (secuencial) |
0x4D | 2 | Version | u16 LE | Siempre 0 -- no utilizado por ShredStream.com |
0x4F | 4 | FEC Set Index | u32 LE | Siempre 0 -- no utilizado por ShredStream.com |
0x53 | 2 | Parent Offset | u16 LE | Siempre 0 -- no utilizado por ShredStream.com |
0x55 | 1 | Flags | u8 | Flag de límite: DATA_COMPLETE = 0x40 |
0x56 | 2 | Size | u16 LE | Tamano util total (header + payload). Payload = data[0x58..size] |
0x58 | variable | Payload | bytes | Datos de entrada reales |
| despues del payload | variable | Zero-padding | bytes | Bytes no utilizados (ceros) desde el final del payload hasta el byte 1203 |
📏 Constantes
| Constante | Valor | Notas |
|---|---|---|
SHRED_MAX_SIZE | 1203 bytes | Tamano fijo de cada paquete UDP |
DATA_HEADER_SIZE | 88 bytes (0x58) | Tamano total del header antes del payload |
MAX_PAYLOAD_SIZE | 1035 bytes | Payload maximo por shred (80 bytes reservados para compatibilidad con el formato wire de Solana) |
🚩 Byte de Flags
El byte de flags en el offset 0x55 marca los limites de lotes de entradas:
| Flag | Valor | Significado |
|---|---|---|
DATA_COMPLETE | 0x40 | Este es el ultimo data shred en el lote de entradas actual |
⚠️ Notas Importantes
- Solo data shreds. ShredStream.com entrega legacy data shreds (variante
0xA5). No recibiras FEC/coding shreds. - Indices secuenciales. Dentro de cada slot, los indices de shred comienzan en 0 e incrementan secuencialmente. Un indice faltante significa que un shred se perdio en transito.
- Tamano del payload. El campo Size indica el final de los datos utiles. Los bytes del payload estan en data[0x58..size]. Los bytes mas alla del offset size son zero-padding.