All articles
solanagrpcgeyserdatarpc

Yellowstone gRPC: how real-time Solana data actually streams

Yellowstone gRPC (Dragon's Mouth) is a Geyser plugin streaming accounts, transactions, slots, and blocks over gRPC. Why it beats JSON-RPC websockets.

Share
devrels.xyz/a/35short link

Yellowstone gRPC (Triton One's "Dragon's Mouth") is a Geyser plugin that streams real-time Solana data — accounts, transactions, slots, blocks, blocks-meta, and entries — to clients over gRPC subscriptions. It's the layer most serious indexers, trading bots, and data pipelines run on instead of JSON-RPC websockets.

How it works

A validator loads the plugin (--geyser-plugin-config), tapping the same Geyser hook Solana uses for account/slot/transaction notifications. A client opens a single gRPC stream with a SubscribeRequest carrying named filters; the server pushes matching updates as Protobuf messages over HTTP/2.

Versus JSON-RPC websockets:

  • Lower latency and compact Protobuf payloads vs JSON.
  • Rich server-side filtering — by account, owner, memcmp/dataSize, or transaction membership — so you receive only what you asked for.
  • HTTP/2 flow control = real backpressure: a slow consumer doesn't silently drop updates the way websockets can.

The subscribe request

typescript
import Client from "@triton-one/yellowstone-grpc"

const client = new Client(GRPC_ENDPOINT, X_TOKEN, undefined)
const stream = await client.subscribe()

stream.write({
  accounts: {
    myFilter: {
      owner: ["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"], // SPL Token program
      filters: [{ datasize: 165 }],                            // token accounts
      account: [], nonemptyTxnSignature: undefined,
    },
  },
  transactions: {
    txFilter: { accountInclude: ["<your-program-id>"], vote: false, failed: false },
  },
  slots: {}, blocks: {}, blocksMeta: {}, entry: {},
  commitment: 1, // 0 processed · 1 confirmed · 2 finalized
  accountsDataSlice: [],
})

stream.on("data", (update) => { /* account / transaction / slot update */ })
// reply to server pings to keep the connection alive through load balancers

Filter groups include accounts, transactions (with accountInclude/Exclude/Required), slots, blocks, blocksMeta, and entries. Clients exist for Rust (yellowstone-grpc-client), TypeScript (@triton-one/yellowstone-grpc), and Go.

The honest read

Yellowstone gRPC is almost always a premium add-on, not a free RPC tier — Triton, Helius, and QuickNode all sell it as paid streaming. It also carries more ops weight than websockets: persistent gRPC connections, ping/pong keepalives, reconnection-and-replay logic, Protobuf tooling, and filter tuning. For light needs, JSON-RPC websockets are simpler. For high-throughput, low-latency, lossless ingestion — indexers, MEV, real-time analytics — gRPC is the right tool. The repo is actively maintained (recent tags carry Alpenglow release-candidate compatibility work).

References

If your product's edge is reacting to chain state first, the question isn't whether to use gRPC — it's which provider's Dragon's Mouth you point it at.

Keep reading

Uniblock: one API key over 55+ RPC providers and 300+ chains (incl. Solana)

Juggling Helius for Solana, Alchemy for Ethereum, CoinGecko for prices, and a home-grown failover script is a full-time job. Uniblock collapses that into one API key with auto-routing, retries, and a single invoice — including Solana JSON-RPC and Direct APIs for Helius, Solscan, HelloMoon, and more.

The 10 most-invoked Solana programs, per ProgramWatch

Rank programs by what actually gets called on Solana and you get a different picture than TVL charts: SPL Token at 346M invocations a day, the Pump.fun stack summing to ~100M across three programs, Meteora's open-source DAMM v2 out-calling Jupiter, and — at #6 — a program that looks like anonymous bot infrastructure on every explorer but resolves to Phoenix Perps once you dig. Sourced from ProgramWatch's free API, then cross-checked against the OtterSec verify registry, Solana Compass, and each team's repos — which is where the real story turned out to be.

Solana vs Robinhood Chain, by the numbers

Yesterday we covered what Robinhood Chain is. Today, the tape measure: Solana is 6.3 years old with ~704 permissionless validators, 4,302 gossip nodes, 29 months since its last outage, $4.98B TVL, and 63,503 deployed programs. Robinhood Chain is 9 days old with one sequencer. That's not a dunk — it's a different design goal. The fairest comparison for the stack's ceiling is Arbitrum One, and the numbers tell that story too.

Get new articles in your inbox

Technical deep-dives on Solana tooling, infrastructure, and ecosystem. No noise.

Yellowstone gRPC: how real-time Solana data actually streams | devrels.xyz