What are preprocessed transactions?
In Solana’s architecture, transactions flow through several stages before becoming fully processed:- Shred Reception → Validator receives transaction shreds (data fragments)
- Shred Decoding → Shreds are decoded into raw transactions ← Preprocessed transactions available here
- Transaction Execution → Transaction is executed by the runtime
- Metadata Generation → Pre/post balances, logs, and error information are computed
- Commitment → Transaction reaches processed/confirmed/finalized state
Best-effort delivery guarantees
Important: Preprocessed transaction delivery is best-effort, not guaranteed. We target 99.99% delivery rate, but some transactions may be lost during:
- Infrastructure updates and redeployments
- Network issues or validator connectivity problems
- Edge cases in shred decoding or processing
What data is available?
Preprocessed transactions include the complete transaction message but lack execution metadata:Available data
- ✅ Transaction signature - Unique transaction identifier
- ✅ Account keys - All accounts referenced by the transaction
- ✅ Instructions - Complete instruction data and program calls
- ✅ Recent blockhash - Transaction expiration reference
- ✅ Signatures - All transaction signatures
- ✅ Is vote transaction - Whether this is a vote transaction
- ✅ Slot number - Which slot contained this transaction
Missing data
- ❌ Transaction metadata - Pre/post balances, rent, transaction status
- ❌ Transaction errors - We cannot determine if the transaction failed
- ❌ Inner instructions - Cross-program invocations (CPIs) are not included
- ❌ Log messages - Program logs are generated during execution
- ❌ Compute units consumed - Execution metrics unavailable
- ❌ Token balance changes - Token metadata requires execution
SDK support and version requirements
Preprocessed transaction subscriptions are supported across all LaserStream SDKs:Implementation examples
JavaScript/TypeScript
The JavaScript SDK provides a dedicatedsubscribePreprocessed function with automatic reconnection:
Rust
The Rust SDK provides native performance:Go
The Go SDK provides idiomatic Go interfaces:Subscription structure and filtering
Request structure
The preprocessed subscription request follows a similar structure to standard subscriptions but with a focused set of filters:Response structure
Updates arrive with the complete transaction message and basic metadata:transaction.transaction field contains the complete Solana transaction structure including:
- Message - Account keys, instructions, recent blockhash
- Signatures - All transaction signatures
- Address table lookups - For versioned transactions
meta field containing execution results.