Skip to main content

Solana gRPC - Streaming

Updated on
Sep 24, 2026

Overview​

Solana gRPC (Yellowstone-compatible Geyser gRPC) is a high-performance Solana Geyser plugin that enables real-time blockchain data streaming through gRPC interfaces. It serves as a powerful tool for developers who need to:


  • Stream blockchain data in real-time
  • Monitor on-chain activities (token mints, program interactions, state changes)
  • Query account states efficiently
  • Track transactions with minimal latency

Solana gRPC extends Solana's Geyser infrastructure by supporting both gRPC and JSON-RPC protocols, offering enterprise-grade reliability with granular control.

Transaction Versions​

Solana gRPC streams legacy, version 0, and version 1 transactions. Quicknode runs yellowstone-grpc-geyser v15.2.0 against proto v12.7.0, which carries the version 1 compute and fee settings on the message itself.

Message.versioned is true for both version 0 and version 1, so it does not tell them apart. Each version has one field the other never carries:

FieldPresent on
Message.address_table_lookupsVersion 0
Message.configVersion 1

Message.config is a TransactionConfig holding priority_fee, compute_unit_limit, loaded_accounts_data_size_limit, and heap_size. Field names follow whatever your generated stubs produce, so the TypeScript client exposes them as config.priorityFee, config.computeUnitLimit, and so on.

Two client-side version floors apply:


  • Generated stubs need yellowstone-grpc-proto v12.6.0 or later. Earlier stubs have no config field at all, so the settings are dropped while decoding and nothing reports an error.
  • Self-hosted plugins need yellowstone-grpc-geyser v15.1.1 or later. Earlier plugins downgrade version 1 messages to version 0 and drop the config. Quicknode endpoints are unaffected.

Access​

Solana gRPC is included with Scale plans and up. Learn more on our pricing page.

Endpoint and Token Configuration​

Solana gRPC operates on port 443. This is a dedicated secure port for gRPC communication and is separate from the standard Solana RPC endpoint. When connecting to the service, specify port 443 in the URL and enable compression.

  • Endpoint: The name of your gRPC-enabled endpoint (by default, this is three randomly generated words) followed by .solana-mainnet.quiknode.pro and the port number 443 (e.g., https://example-guide-demo.solana-mainnet.quiknode.pro:443)
  • Token: The alphanumeric string that follows the endpoint name in the URL (additional tokens can be generated from the Quicknode Dashboard) Endpoint Security tab.

Given the following example HTTP Provider URL: https://example-guide-demo.solana-mainnet.quiknode.pro/123456789/, your authentication credentials would be:


  • Endpoint: https://example-guide-demo.solana-mainnet.quiknode.pro:443
  • Token: 123456789

Here is a sample for using this endpoint to connect with TypeScript:

import Client from '@triton-one/yellowstone-grpc';
// For HTTP Provider URL: https://example-guide-demo.solana-mainnet.quiknode.pro/123456789/
const ENDPOINT = 'https://example-guide-demo.solana-mainnet.quiknode.pro:443';
const TOKEN = '123456789';
const client = new Client(ENDPOINT, TOKEN, {
grpcDefaultCompressionAlgorithm: 0, // 0 = gzip, 1 = zstd
});
await client.connect();

These examples target @triton-one/yellowstone-grpc v7.0.1 or later.

Authentication​

Solana gRPC authenticates with an x-token metadata header sent on every request. The value is the Token from Endpoint and Token Configuration above.

Client libraries expose this differently:


  • Go and Python set the x-token metadata header directly. See Go and Python.
  • Rust sets it with the client builder's x_token method. See Rust.
  • The TypeScript client sends it when you pass the token to the Client constructor. See TypeScript.

Compression​

The TypeScript example uses gzip. The Go, Rust, and Python setup pages show the equivalent client setting. Shipstern (formerly Vixen) uses accept-compression = "zstd". See Compression for per-language configuration.

Legacy port 10000

Port 10000 is a legacy Solana gRPC port and is metered from the uncompressed payload size. Use port 443 with compression for new and migrated connections. Port 10000 will sunset on October 1, 2026.

Migrating from Port 10000 to Port 443​

Moving an existing connection from port 10000 to port 443 changes the port you connect to, the authentication method you send, and whether you negotiate compression.


  • Port: Change the port in your endpoint from 10000 to 443.
  • Authentication: Basic Authentication is not supported on port 443. Use x-token authentication, as described in Authentication above.
  • Compression: Enable gzip or zstd on your client. See Compression for per-language configuration.

See Metered Data Pricing for how usage is metered on each port.

Metered Data Pricing​

Solana gRPC is metered on the volume of data delivered. From October 1, 2026, metered usage is 15 credits per 0.1 MB.

Port 443 meters compressed response data when the client negotiates compression. Port 10000 is legacy and meters uncompressed response data.

Making Solana gRPC Requests​

To make a request to Solana gRPC using different languages you check out below resources:

Compressed Filters (Cuckoo Filters)​

Standard subscriptions have per-filter pubkey limits (10-50 depending on plan). Compressed filters encode pubkeys into a cuckoo filter data structure, bypassing these limits. See the compressed filters documentation for implementation details.

Resources​