Yellowstone gRPC
Use Yellowstone gRPC for filtered, low-latency Solana updates.
Install the TypeScript client
bash
npm install @triton-one/yellowstone-grpcPin the package version in your lockfile. Yellowstone request fields change between releases.
Subscribe to slots
typescript
import Client, {
CommitmentLevel,
} from "@triton-one/yellowstone-grpc"
const client = new Client(
"geyser.sol.cubestech.online:443:443",
process.env.NODE_API_KEY,
{ grpcMaxDecodingMessageSize: 64 * 1024 * 1024 },
)
await client.connect()
const stream = await client.subscribe()
stream.on("data", (update) => {
if (update.slot) {
console.log(update.slot.slot, update.slot.status)
}
})
stream.on("error", (error) => {
console.error(error)
})
stream.write({
slots: {
confirmedSlots: { filterByCommitment: true },
},
accounts: {},
transactions: {},
transactionsStatus: {},
blocks: {},
blocksMeta: {},
entry: {},
accountsDataSlice: [],
commitment: CommitmentLevel.CONFIRMED,
})The SDK sends its token argument as x-token. The cubestech gateway also accepts x-api-key metadata in raw gRPC clients.
Test with grpcurl
Yellowstone reflection is not available on every gateway connection. Download the Yellowstone proto and pass the local file.
bash
grpcurl \
-H "x-api-key: YOUR_API_KEY" \
-import-path ./proto \
-proto geyser.proto \
-d '{"commitment":"CONFIRMED"}' \
geyser.sol.cubestech.online:443:443 \
geyser.Geyser/GetSlotYellowstone gRPC Nodes
See the production gRPC endpoint, filter coverage, payload limits, and pricing.
Client setup
Set up TypeScript, Python, Go, and Rust clients.
Keepalive and replay
Hold long-running streams and request recent slots.