Data Streaming

Data streaming on Solana refers to mechanisms that deliver real-time blockchain updates from a node to your application without repeated polling.

Overview

Solana supports real-time blockchain data delivery through native streaming mechanisms. Instead of repeatedly polling RPC endpoints over HTTP, applications can subscribe to live updates and receive notifications as state changes occur. This is essential for responsive, state-aware applications such as explorers, dashboards, bots, wallets, and trading systems.

Streaming enables:

  • Real-time UI updates (wallet balances, dashboards)

  • Transaction tracking

  • Program activity monitoring

  • Trading and automation systems

  • Indexing and analytics pipelines

Solana provides two primary streaming approaches:

  1. WebSocket JSON-RPC PubSub (official RPC interface)

  2. gRPC Streaming via Geyser plugins (validator-level streaming)

Both methods allow applications to stay synchronized with on-chain state – with different performance and architectural tradeoffs.

Streaming Method
Best For

JSON-RPC WebSocket

Lightweight apps, UI dashboards, wallet balance notifications, basic monitoring

gRPC / Geyser Streaming

High-frequency trading, indexing, analytics, heavy event loads, backend engines

Streaming complements rather than replaces regular HTTP RPC calls. While HTTP queries are great for on-demand lookups (e.g., historical data), streaming ensures your app is kept up-to-date in real time without hammering RPC endpoints.

circle-check

Solana RPC WebSocket PubSub

Solana’s official RPC interface includes a PubSub system over WebSockets, documented in the Solana Documentationarrow-up-right.

Instead of calling getAccountInfo repeatedly, clients:

  1. Open a persistent WebSocket connection

  2. Send a subscription request

  3. Receive push notifications when matching events occur

This form of streaming uses standard JSON-RPC over WebSockets (persistent connection, JSON payloads) and is part of Solana’s official RPC interface.

Architecture

Supported Subscription Types

The RPC WebSocket interface supports:

Subscription
Description

accountSubscribe

Notifies when an account’s lamports or data change

programSubscribe

Notifies when accounts owned by a program change

logsSubscribe

Streams program log output

signatureSubscribe

Tracks transaction confirmation status

slotSubscribe

Notifies when a new slot is processed

blockSubscribe

Streams block data (if enabled)

rootSubscribe

Tracks finalized root changes

Commitment Levels

Each subscription may specify a commitment level:

  • processed → lowest latency

  • confirmed → voted by supermajority

  • finalized → irreversible state

Choosing the right commitment is a latency vs. safety tradeoff.

Example: Account Subscription

When to Use WebSocket Streaming

Best suited for:

  • Wallet balance updates

  • Basic trading bots

  • UI dashboards

  • Lightweight monitoring

  • Applications with moderate subscription counts


High-Performance Streaming (gRPC / Geyser-based)

For low-latency or high-throughput streaming use cases (e.g., trading engines, real-time analytics), many providers build on Solana’s Geyser plugin architecture to expose streaming via gRPC rather than plain WebSockets. This approach is more efficient for binary data and supports advanced filtering and throughput.

What Is Geyser / gRPC Streaming?

  • Solana validators and nodes can load Geyser plugins that expose on-chain data events at the lowest possible level.

  • Clients then connect via gRPC (binary protocol on HTTP/2) and receive a stream of structured data (accounts, transactions, blocks, slots).

  • This avoids JSON overhead and enables continuous streaming with minimal latency.

Architecture

Data Types Typically Streamed

  • Account updates (raw + parsed)

  • Transactions

  • Entry/slot updates

  • Blocks

  • Vote updates

Benefits of gRPC Streaming

  • Low latency & high throughput: Binary streaming pushes data as soon as it’s processed in memory.

  • Structured protocols: Strong typing and efficient serialization (Protocol Buffers).

  • Advanced filtering: Clients can subscribe only to the data types or accounts they care about.

  • Better for backend engines: Helpful when handling many subscriptions or large volumes of data.

This pattern forms the basis for many existing Solana streaming services (e.g., Yellowstone gRPC, Dragon’s Mouth implementations across providers).

When to Use gRPC Streaming

Recommended for:

  • High-frequency trading (HFT)

  • Real-time arbitrage engines

  • MEV systems

  • Large-scale indexing

  • Analytics pipelines

  • Applications handling thousands of updates per second


WebSocket vs gRPC Comparison

Feature
WebSocket RPC
Geyser gRPC

Protocol

JSON over WebSocket

gRPC (Protobuf over HTTP/2)

Latency

Low

Very Low

Throughput

Moderate

High

Filtering

Basic

Advanced

Best For

Frontend apps

Backend engines

Setup Complexity

Simple

Advanced


Streaming vs HTTP Polling

HTTP Polling
Streaming

Repeated requests

Persistent connection

Higher latency

Near real-time

Higher RPC load

Efficient push updates

Good for historical queries

Good for live state

Most production systems combine:

  • HTTP RPC → historical queries

  • WebSocket → reactive updates

  • gRPC → high-performance ingestion


Concepts & Patterns

Commitment Levels: Commitment determines how “final” a piece of data must be before it triggers a notification (processed → earliest, finalized → safest). This choice affects latency vs. certainty.

Subscription Lifecycle:

Connect → request one or more subscriptions → receive events → unsubscribe → close connection.

Filtering: Many streaming clients support filtering (e.g., specific accounts or programs) to reduce noise and bandwidth. gRPC streams often provide richer, more granular filtering options.


Design Considerations

1. Backpressure Handling

Applications consuming streams must be able to process events quickly or queue them appropriately.

2. Reconnection Strategy

WebSocket and gRPC connections should implement:

  • Automatic reconnect

  • Subscription replay

  • Idempotent state handling

3. Commitment Strategy

Lower commitment = faster but less final. Higher commitment = safer but slower.

4. Filtering Strategy

Over-subscribing can overwhelm systems. Use account and program filters to reduce noise.


Summary

  • Solana supports real-time blockchain streaming natively via RPC WebSocket PubSub — part of its core RPC API — enabling clients to subscribe to account, transaction, log, slot, and other events.

  • For advanced workloads, Geyser gRPC streaming is used by many services to deliver low-latency, structured data streams with more throughput and filtering power.

  • Streaming is essential for building responsive dApps: wallets, analytics dashboards, explorers, trading bots, monitoring tools, and more.

Streaming allows applications to remain synchronized with on-chain state efficiently, reduce polling overhead, and react to events with minimal latency.

Last updated