Kaldera gRPC

Yellowstone gRPC streams for accounts, transactions, slots, blocks and entries.

Kaldera is constant-k's Yellowstone (Geyser) gRPC service. Any Yellowstone client works against it without code changes, given a Kaldera endpoint and your API key as x-token.

Endpoints

RegionEndpoint
New Yorkhttps://kaldera-newyork.constant-k.com (port 443)
Frankfurthttps://kaldera-frankfurt.constant-k.com (port 443)

Connections use TLS. See Authentication.

Server version and protocol files

Kaldera runs yellowstone-grpc v16.1.1+solana.4.3.0, the upstream release with no local changes. A client generated from the protocol files of that release matches the server field for field. GetVersion reports the running release, its protocol version and the Agave version behind it.

Client packages from that release: yellowstone-grpc-client 15.0.0 and yellowstone-grpc-proto 14.0.1 on tonic 0.14, or @triton-one/yellowstone-grpc 9.0.0 for TypeScript.

Methods

The geyser.Geyser service defines ten RPCs. The table records what each returns on Kaldera, measured against a live endpoint.

RPCOn Kaldera
SubscribeServed on Blade Runner and Nexus, on every Kaldera endpoint
SubscribeDeshredServed on Blade Runner and Nexus, on every Kaldera endpoint, the Turbo Kaldera ones included
SubscribeReplayInfoServed. Returns first_available, the oldest slot that region can replay. See Replay.
PingServed. Confirms the token and the route without opening a stream.
GetVersionServed. Returns the running release, protocol version and Agave version.
SubscribeGossipUNIMPLEMENTED (12)
GetSlot, GetBlockHeight, GetLatestBlockhash, IsBlockhashValidUNIMPLEMENTED (12), with the detail use RPC. These chain queries belong on the Solana RPC endpoint.

What Kaldera adds to Yellowstone

FeatureBehaviour
Shred accelerationUpdates can reach your stream ahead of a stream fed by completed blocks alone.
Isolated streamsEach subscription is served on its own. A slow consumer elsewhere cannot stall yours, and your bandwidth allowance is yours alone.
ReplayA reconnect that carries fromSlot resumes where the stream stopped, within a window of up to 24 hours. See Replay.
Pre-execution pathTurbo Kaldera serves the same Subscribe call with decoded pre-execution transactions.

Streams and limits

Kaldera accepts every Yellowstone filter type: accounts, transactions, transaction status, slots, blocks, block meta and entries. Each subscription picks one commitment level: PROCESSED, CONFIRMED or FINALIZED. An account set can also be sent as a compressed filter rather than a list, which is how a set larger than the list limits is tracked. See Filters for every option, the per-stream filter limits and the gRPC status returned when a subscription is refused.

Kaldera is included on Blade Runner and Nexus. Limits apply per region.

Blade RunnerNexus
Concurrent Subscribe streams75200
Subscribe bandwidth37.5 MB/s150 MB/s
Compressiongzip, zstdgzip, zstd

A stream that goes over its plan's bandwidth limit is throttled. Kaldera buffers up to 64 MB of your data while you catch up. If the buffer fills, Kaldera drops the oldest queued updates and keeps you on the newest data. The full tables are on Plans & Limits.

Compression

Compression lowers bandwidth, which matters most on streams carrying many accounts and on streams close to the Blade Runner limit.

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

const client = new Client(
  "https://kaldera-newyork.constant-k.com",
  process.env.CK_API_KEY,
  {
    grpcDefaultCompressionAlgorithm: 1, // 0 = gzip, 1 = zstd
    grpcMaxDecodingMessageSize: 64 * 1024 * 1024, // room for large account updates
  },
);
await client.connect();

Clients

LanguagePackageVersion Kaldera runs
TypeScript@triton-one/yellowstone-grpc9.0.0
Rustyellowstone-grpc-client with yellowstone-grpc-proto15.0.0 with 14.0.1
OtherA client generated from the protocol files—

Minimum versions for transaction v1

Mainnet carries version 1 transactions as well as legacy and version 0. Nothing about Kaldera changes for them: the same endpoints, the same x-token key, the same SubscribeRequest and the same filters. The client changes: a proto that does not know the new fields cannot read a version 1 transaction that arrives on a stream you already hold.

CrateMinimum for version 1Version Kaldera runs
yellowstone-grpc-client13.3.015.0.0
yellowstone-grpc-proto12.6.014.0.1

The two crates are versioned separately and must move together

Pinning yellowstone-grpc-client and letting yellowstone-grpc-proto resolve on its own produces a build with a proto that cannot parse a version 1 transaction. Both belong in your Cargo.toml.

In other languages, the newest client release carries the fields. A self-generated client needs protocol files at yellowstone-grpc-proto 12.6.0 or later; the files above are 14.0.1. See Transaction v1.

Kaldera, Turbo Kaldera, ShredPrism or WebSockets

KalderaTurbo KalderaShredPrismWebSockets
DataExecuted accounts, transactions, slotsDecoded pre-execution transactionsSerialized entries, from the block the leader is producingAccounts, logs, signatures, slots
Execution results (fees, logs, status)YesNoNoYes
FilteringRich, server-sideAccount filters on transactionsNone: the full feedPer subscription
ProtocolYellowstone gRPCYellowstone gRPCgRPCSolana PubSub
PlansBlade Runner, NexusNexus, or Blade Runner through SubscribeDeshredNexusOperator and up

Data Stages sets out the pipeline these four sit on, and the stage each one delivers at. The Benchmarks page compares Kaldera with another Yellowstone provider in each region and publishes the results live.

On this page