Solana Yellowstone gRPC: Real-Time Data Streaming - Helius Docs
What is Yellowstone gRPC?
Yellowstone gRPC provides ultra-low latency streaming of Solana blockchain data by tapping directly into Solana leaders to receive shreds as they’re produced. This delivers real-time data to your application with minimal delay.
High Performance
Binary protocol with efficient serialization for maximum throughput and minimal bandwidth usage
Real-time Streaming
Bidirectional streaming with immediate subscription creation and cancellation
Advanced Filtering
Precisely control what data you receive with account, transaction, and program filters
Multiple Data Types
Subscribe to accounts, transactions, slots, blocks, and entries in a single stream
Stream Types
- Accounts
- Transactions
- Slots & Blocks
- Entries
Monitor account changes in real-time Track balance updates, data modifications, ownership changes, and account creation/deletion events with precise filtering options.
Account Monitoring Guide
Learn how to stream account updates with filtering examples
Stream transaction data and execution results Receive transaction signatures, execution status, program interactions, and token balance changes as they happen.
Transaction Monitoring Guide
Monitor transactions with program filtering and execution details
Track network consensus and block production Monitor slot updates, block creation, and network state changes across different commitment levels.
Slot & Block Monitoring Guide
Stream slots and blocks with transaction details
Low-level blockchain entry monitoring Access fundamental execution units containing transaction batches and their results.
Entry Monitoring Guide
Stream block entries with transaction batches
How to Access Yellowstone gRPC
Choose the option that best fits your needs:
LaserStream
LaserStream is a multi-tenant, highly available gRPC service with automatic failover and 24-hour historical replay capabilities. Ideal for most production applications.
Get started with LaserStream from your Helius Dashboard. Mainnet requires a Business or Professional plan; Devnet is available on Developer and above. See Plans & Pricing for details.
Dedicated Nodes
Dedicated Nodes offer an exclusive gRPC endpoint with guaranteed resource isolation. Best for specialized requirements and advanced operators.
Compare gRPC Options
Need help deciding? Read our gRPC comparison guide to determine whether LaserStream or dedicated nodes is the best option for your use case.
Quickstart
Ready to start streaming? Start by reading our comprehensive setup guide, or get started from your dashboard:
Yellowstone gRPC Quickstart
Covers installation, authentication, and configuring your first stream
Subscription Request Structure
Every gRPC subscription requires a properly structured request. Here’s how to build one:
Core Parameters
commitment
- string
- required
- Commitment level for data consistency
processed- Transaction processed by the nodeconfirmed- Transaction confirmed by clusterfinalized- Transaction finalized by cluster
ping
- boolean
- Keep connection alive Set to
trueto receive pong messages every 15 seconds, preventing connection timeouts from load balancers or proxies.
accounts_data_slice
- array
- Optimize data transfer Request specific byte ranges from account data:
[ { "offset": 0, "length": 100 }, { "offset": 200, "length": 50 } ]
Filter Configuration
Account Filters
account
- array
- Array of account public keys to monitor (logical OR)
- array
owner
- array
- Array of owner public keys to monitor (logical OR)
- array
filters
- array
- DataSize and Memcmp filters (logical AND):
[ { "dataSize": 165 }, { "memcmp": { "offset": 0, "bytes": "base58_encoded_bytes" } } ]
When multiple filter types are used, they operate as logical AND. Within arrays, values operate as logical OR.
Example: Basic Transaction Monitoring
Here’s a complete example to get you started:
import Client, { CommitmentLevel, SubscribeRequest } from "@triton-one/yellowstone-grpc";
const client = new Client("your-grpc-endpoint", "your-api-token", {
"grpc.max_receive_message_length": 64 * 1024 * 1024
});
const stream = await client.subscribe();
// Handle incoming data
stream.on("data", (data) => {
if (data.transaction) {
console.log(`Transaction: ${data.transaction.signature}`);
console.log(`Success: ${!data.transaction.meta?.err}`);
}
});
// Subscribe to transactions with complete request structure
const subscribeRequest: SubscribeRequest = {
transactions: {
client: {
accountInclude: [
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", // Token Program
"11111111111111111111111111111111" // System Program
],
accountExclude: [],
accountRequired: [],
vote: false,
failed: false
}
},
commitment: CommitmentLevel.CONFIRMED,
ping: { id: 1 }
};
stream.write(subscribeRequest);
This is a basic example. For production use, implement proper error handling, reconnection logic, and data processing. See our detailed guides for complete implementations.
Advanced Resources
- Yellowstone gRPC Source Repository - Complete protobuf definitions and examples
- Discord Community - Get help from developers and Helius team
- LaserStream Documentation - Enhanced gRPC service with additional features