@validators-dao/solana-stream-sdk
Solana Stream SDK
A Rust SDK for streaming Solana Data by Validators DAO. This SDK provides a simple and efficient way to connect to Jito's Shredstream service, allowing you to subscribe to real-time Solana entries and transactions.
Features
- Easy-to-use API - Simple wrapper around Jito shredstream protocols
- Async Support - Built with tokio for async/await patterns
- Type Safety - Strongly typed Rust interfaces
- Error Handling - Comprehensive error types with proper error propagation
- Streaming - Efficient streaming of Solana entries and transactions
Installation
Add this to your Cargo.toml:
[]
= "0.2.5"
= { = "1", = ["rt-multi-thread", "macros"] }
= "0.15" # Optional: for loading environment variables from .env files
Usage
Quick Start Guide for Sample Shreds Client
Follow these steps to quickly run the sample client provided in this repository:
- Clone the repository
- Create a
.envfile (placed in the project root)
SHREDS_ENDPOINT=https://shreds-ams.erpc.global
⚠️ Please note: This endpoint is a sample and cannot be used as is. Please obtain and configure the appropriate endpoint for your environment.
- Run the sample client
The sample code can be found at: https://github.com/ValidatorsDAO/solana-stream/blob/main/client/shreds-rs/src/main.rs
A 7-day free trial for Shreds endpoints is available by joining the Validators DAO Discord community. Please try it out: https://discord.gg/C7ZQSrCkYR
Basic Example
use ;
async
Using Environment Variables
Create a .env file in your project root:
SHREDS_ENDPOINT=https://shreds-ams.erpc.global
Then use it in your code:
use ;
use env;
async
Custom Subscription Request
use ;
use HashMap;
async
API Reference
ShredstreamClient
The main client for connecting to Jito shredstream services.
Methods
connect(endpoint: impl AsRef<str>) -> Result<Self>- Connect to a shredstream endpointsubscribe_entries(&mut self, request: SubscribeEntriesRequest) -> Result<Stream<Entry>>- Subscribe to entriescreate_entries_request_for_account(account: impl AsRef<str>, commitment: Option<CommitmentLevel>) -> SubscribeEntriesRequest- Helper to create account-specific requestscreate_empty_entries_request() -> SubscribeEntriesRequest- Create an empty request for customization
Error Types
The SDK provides a comprehensive SolanaStreamError enum that covers:
Transport- Network/transport errorsStatus- gRPC status errorsSerialization- Data serialization errorsConnection- Connection-related errorsConfiguration- Configuration errors
Re-exported Types
For convenience, the following types are re-exported from jito_protos:
CommitmentLevelSubscribeEntriesRequestSubscribeRequestFilterAccountsSubscribeRequestFilterSlotsSubscribeRequestFilterTransactions
Requirements
- Rust 1.70+
- Tokio runtime for async operations
⚠️ Experimental Filtering Feature Notice
The filtering functionality provided by this SDK is currently experimental. Occasionally, data may not be fully available, and filters may not be applied correctly.
If you encounter such cases, please report them by opening an issue at: https://github.com/ValidatorsDAO/solana-stream/issues
Your feedback greatly assists our debugging efforts and overall improvement of this feature.
Other reports and suggestions are also highly appreciated.
You can also join discussions or share feedback on Validators DAO's Discord community: https://discord.gg/C7ZQSrCkYR
License
The package is available as open source under the terms of the Apache-2.0 License.
Code of Conduct
Everyone interacting in the Validators DAO project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.