Raw Shreds
Raw packets plus your own decoder.
// Binary
Stream serialized Solana VersionedTransaction bytes efficiently extracted from shreds, filtered by account, and ready to deserialize directly in your application.
VersionedTransaction bytesBinary gives you the fastest shred streaming data. Choose Fastlane/Geyser for post-execution state and Yellowstone compatibility.
For public performance data, see Shreder’s shred stream benchmarks. View benchmarks and methodology →
// What it is
Binary sits between raw shred delivery and fully decoded transaction streams. Instead of sending raw UDP packets to your infrastructure, Shreder Binary extracts transaction data from shreds and sends each update as a compact binary payload.
Each update contains serialized Solana VersionedTransaction bytes. Your client deserializes the payload locally, then applies your own strategy logic, instruction parsing, account matching, risk checks, indexing, or alerting.
Binary is the right fit when you need the absolute lowest latency.
Raw packets plus your own decoder.
Structured transaction stream with less local parsing.
Compact transaction bytes plus local deserialization.
// Why Binary
Use Binary when you need the earliest actionable transaction data.
Our fastest Shred Stream: Shreder tunes decoding and delivery end to end so you get compact transaction bytes with minimal work on your side.
Skip custom deshredding, reconstruction, packet deduplication, and low-level shred maintenance.
You own the hot path: deserialize compact transaction bytes and apply your own and business logic.
Use account filters to narrow the stream before it reaches your application.
// Use cases
React to Solana transaction flow with the fastest stream.
Monitor specific programs or accounts and move transaction bytes quickly into strategy logic.
Track activity around pools, markets, token launches, and program-specific flows.
Increase your transaction inclusion probability by being the first to see and execute trades on newly launched tokens.
// Benchmarks
Representative runs under specific location, endpoint, and filter.
Run 004
Measured in Frankfurt, Teraswitch FRA2.
| Provider | p50 | p95 | p99 |
|---|---|---|---|
| Shreder Binary Frankfurt | 0.00 ms | 0.94 ms | 3.70 ms |
| DoubleZero Frankfurt | 1.69 ms | 15.06 ms | 24.45 ms |
Run 003
Measured in Frankfurt, Teraswitch FRA2.
| Provider | p50 | p95 | p99 |
|---|---|---|---|
| Shreder Binary Frankfurt | 0.00 ms | 0.00 ms | 0.00 ms |
| Shyft Frankfurt | 4.33 ms | 34.16 ms | 56.75 ms |
// How to use
Point the client at your Binary endpoint, send a filter over gRPC, then deserialize each binary_transaction payload into a VersionedTransaction with bincode.
let entrypoint = "http://fra.binary.shreder.xyz:9991";
let mut client = ShrederBinaryServiceClient::connect(entrypoint)
.await
.unwrap();
let request = SubscribeBinaryTransactionsRequest {
transactions: maplit::hashmap! {
"pumpfun".to_owned() => SubscribeRequestFilterBinaryTransactions {
account_include: vec![],
account_exclude: vec![],
account_required: vec!["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P".to_owned()],
}
},
};
let (mut subscribe_tx, subscribe_rx) = unbounded();
let response = client
.subscribe_binary_transactions(subscribe_rx)
.await
.unwrap();
let mut stream = response.into_inner();
subscribe_tx.send(request).await.unwrap();
while let Some(response) = stream.message().await.unwrap() {
let update = response.transaction.expect("transaction must be present");
let tx = update.transaction.expect("transaction must be present");
let versioned_tx =
bincode::deserialize::<VersionedTransaction>(&tx.binary_transaction)?;
println!(
"filters: {:?}, slot {}, signatures: {}, instructions: {}",
response.filters,
update.slot,
tx.signatures.len(),
versioned_tx.message.instructions().len(),
);
}
// Compare
Binary is the lowest-latency transaction stream.
| Product | Format | Best for | Customer-side work | Latency profile |
|---|---|---|---|---|
| Raw Shreds | Raw UDP shred packets | Teams with custom deshredding and strict latency budgets | Highest: receive, dedupe, reconstruct, decode, filter | Earliest feed; end-to-end speed depends on your decoder |
| Decoded Shreds | Structured transaction stream with filters | Production teams that want shred-level delivery without running a decoder | Low: subscribe and process transaction updates | Low latency with less operational overhead |
| Binary | Transaction data from shreds | Trading systems that want efficient transaction-level delivery | Low: no local decoding required | Lowest-latency transaction-level path for most workloads |
| Geyser gRPC / Fastlane | Yellowstone-compatible gRPC | Existing Geyser users, indexers, wallets, DeFi apps | Low: use existing gRPC tooling | Same interface; Fastlane is optimized for speed |
Binary is pre-execution transaction data. For account state, logs, balances, and execution results, use Geyser gRPC or Fastlane.
Not sure which stream to use? Talk to us →
// Requirements
VersionedTransaction deserialization (e.g. bincode in Rust).Shreder Binary is an ultra low-latency transaction stream that delivers serialized Solana VersionedTransaction bytes extracted from shreds. It is designed for teams that want the absolute lowest latency without operating a raw shred decoder.
Raw Shreds sends raw UDP shred packets to your infrastructure. You are responsible for deshredding, reconstruction, deduplication, decoding, and filtering. Binary skips that raw packet layer and sends transaction bytes that your client can deserialize and process directly.
Decoded Shreds is more ergonomic when you want a structured transaction payload with less local parsing work. Binary is closer to the transaction bytes—better when you want to further cut latency.
For most transaction-focused workloads, Binary is faster to actionable transaction data because Shreder handles processing and sends compact transaction bytes directly. Raw Shreds might still be the right choice when you have a highly optimized in-house deshredding pipeline and need maximum packet-level control.
No. Binary is a Shred Streaming product. Use Fastlane/Geyser when you need Yellowstone-compatible account updates, slots, blocks, or post-execution data.
In Rust, use the public Binary example. It deserializes binary_transaction with bincode::deserialize::<VersionedTransaction>(&tx.binary_transaction).
account_include, account_exclude, and account_required.
No. Use Fastlane/Geyser for post-execution account updates, blocks, slots, or Yellowstone-compatible streams.
Use the region closest to your workload. Binary is available in Frankfurt, Amsterdam, and New York.
Measure first-detection share, p50/p95/p99 delay. Compare the same signatures across providers from the same region. See the Benchmarks page.
When you need the Yellowstone interface or post-execution account updates, slots, and blocks rather than only transaction bytes.
Start from the Shreder console or contact the team. We will provide endpoint and region guidance.
Get transaction bytes from Shreder’s shred-streaming infrastructure and move them directly into your pipeline.