Expand description
§allenhark-slipstream - Rust SDK for Slipstream
Slipstream is a sender-agnostic Solana transaction relay system with leader-proximity-aware routing.
§Quick Start
use allenhark_slipstream::{Config, SlipstreamClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Create configuration
let config = Config::builder()
.api_key("sk_test_12345678")
.region("us-west")
.build()?;
// Connect to Slipstream
let client = SlipstreamClient::connect(config).await?;
// Submit a transaction
let tx_bytes = vec![/* signed transaction bytes */];
let result = client.submit_transaction(&tx_bytes).await?;
println!("Transaction signature: {:?}", result.signature);
Ok(())
}§Streaming
The SDK supports real-time streaming of leader hints, tip instructions, and priority fees:
use allenhark_slipstream::{Config, SlipstreamClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = Config::builder()
.api_key("sk_test_12345678")
.leader_hints(true)
.build()?;
let client = SlipstreamClient::connect(config).await?;
// Subscribe to leader hints
let mut hints = client.subscribe_leader_hints().await?;
while let Some(hint) = hints.recv().await {
println!("Preferred region: {} (confidence: {})",
hint.preferred_region, hint.confidence);
}
Ok(())
}§Protocol Fallback
The SDK automatically falls back through protocols if the preferred one is unavailable:
- QUIC (2s timeout) - Primary high-performance protocol
- gRPC (3s timeout) - Streaming fallback
- WebSocket (3s timeout) - Browser-compatible streaming
- HTTP (5s timeout) - Polling fallback
§Features
- Persistent connections - Single connection reused for all operations
- Auto-reconnect - Automatic reconnection on connection loss
- Leader hints - Real-time region recommendations
- Tip instructions - Dynamic tip wallet selection
- Priority fees - Compute unit price recommendations
Re-exports§
pub use client::SlipstreamClient;pub use config::BackoffStrategy;pub use config::Config;pub use config::ConfigBuilder;pub use config::PriorityFeeConfig;pub use config::Protocol;pub use config::ProtocolTimeouts;pub use error::Result;pub use error::SdkError;pub use multi_region::MultiRegionClient;pub use types::AlternativeSender;pub use types::Balance;pub use types::BundleResult;pub use types::ConnectionInfo;pub use types::ConnectionState;pub use types::ConnectionStatus;pub use types::FallbackStrategy;pub use types::FreeTierUsage;pub use types::Geolocation;pub use types::LandingRateOptions;pub use types::LandingRatePeriod;pub use types::LandingRateStats;pub use types::LatestBlockhash;pub use types::LatestSlot;pub use types::LeaderHint;pub use types::LeaderHintMetadata;pub use types::MultiRegionConfig;pub use types::PerformanceMetrics;pub use types::PriorityFee;pub use types::PriorityFeeSpeed;pub use types::RateLimitInfo;pub use types::RegionInfo;pub use types::RegionLandingRate;pub use types::RegionStatus;pub use types::RegisterWebhookRequest;pub use types::RetryOptions;pub use types::RoutingInfo;pub use types::RoutingRecommendation;pub use types::RpcError;pub use types::RpcResponse;pub use types::SenderInfo;pub use types::SenderLandingRate;pub use types::SimulationResult;pub use types::SubmitOptions;pub use types::TipInstruction;pub use types::TipTier;pub use types::TopUpInfo;pub use types::TransactionBuilder;pub use types::TransactionError;pub use types::TransactionResult;pub use types::TransactionStatus;pub use types::UsageEntry;pub use types::UsageHistoryOptions;pub use types::WebhookConfig;pub use types::WebhookEvent;pub use types::WebhookNotificationLevel;pub use types::WorkerEndpoint;
Modules§
- client
- SlipstreamClient - Main SDK entry point
- config
- Configuration types for the Slipstream SDK
- connection
- Connection management and protocol implementations
- discovery
- Service discovery for automatic worker endpoint resolution
- error
- Error types for the Slipstream SDK
- multi_
region - Multi-Region Client for leader-aware transaction routing
- types
- Message types for the Slipstream SDK
Constants§
- VERSION
- SDK version