[Supanode](https://supanode.xyz/)[Learn](https://supanode.xyz/learn)Test a raw shred feed for missing data

# Test a raw shred feed for missing data

Distinguish packet loss, reconstruction gaps and final chain outcomes during a trial.

**On this page**[Define completeness at the right layer](https://supanode.xyz/learn/validate-shred-feed-completeness#define-completeness-at-the-right-layer)[Keep a layered scorecard](https://supanode.xyz/learn/validate-shred-feed-completeness#keep-a-layered-scorecard)[Run a bounded trial](https://supanode.xyz/learn/validate-shred-feed-completeness#run-a-bounded-trial)[Test operational failure](https://supanode.xyz/learn/validate-shred-feed-completeness#test-operational-failure)[Sources](https://supanode.xyz/learn/validate-shred-feed-completeness#sources)

## Define completeness at the right layer

A raw feed can contain duplicate packets, data shreds, coding shreds and fork-specific observations. One missing packet does not necessarily imply one missing transaction because erasure recovery may reconstruct data. Conversely, a high packet count does not prove complete useful coverage. Define what the consumer must reconstruct.

## Keep a layered scorecard

| Layer | Record |
| --- | --- |
| Transport | Receive bytes, socket drops, malformed packets, duplicate identities |
| Reconstruction | Slots attempted, recoverable sets, missing fragments, decoder errors |
| Transactions | Recovered transaction identities and parsing success |
| Chain reconciliation | Which relevant finalized blocks and transactions were later verified |

Separate unavailable observations from genuinely missing expected records. A skipped slot is not an omitted produced block.

## Run a bounded trial

1.  Choose a time window and the same program or block scope as the production consumer.
2.  Capture raw counters and reconstruction output with monotonic timestamps.
3.  Use a separate confirmed/finalized RPC or block source to enumerate relevant produced blocks afterward.
4.  Compare recovered transaction identities, then investigate whether gaps originated in transport, recovery, decoding or scope.

## Test operational failure

Restart the receiver and induce a brief disconnect under controlled conditions. Record how the pipeline identifies the gap and whether supported historical sources can repair the application dataset. Do not assume a raw UDP feed replays old packets. Preserve the unresolved set and capture window in the trial report. An absent shred alone does not establish a provider fault.

## Sources

-   [Solana shred implementation](https://github.com/anza-xyz/agave/blob/master/ledger/src/shred.rs)
-   [Solana: getBlocks](https://solana.com/docs/rpc/http/getblocks)
-   [Solana: getBlock](https://solana.com/docs/rpc/http/getblock)
-   [Jito operational setup](https://docs.jito.wtf/lowlatencytxnfeed/)

## Continue reading

[Solana streaming guide](https://supanode.xyz/blog/solana-data-streaming-guide)[Solana product Docs](https://supanode.xyz/docs/solana/quickstart)[Learn library](https://supanode.xyz/learn)

---
Source: https://supanode.xyz/learn/validate-shred-feed-completeness
