Solana gRPC is included with Scale plans and up. Learn more on our pricing page.
Parameters
count
integer
An integer that the server echoes back in the response.
Returns
count
integer
The value echoed back from the request
Request
1package main23import (4"context"5"crypto/tls"6"fmt"7"log"8"time"910pb "yellowstone/proto"111213"google.golang.org/grpc"14"google.golang.org/grpc/credentials"15"google.golang.org/grpc/encoding/gzip"16"google.golang.org/grpc/keepalive"17)1819// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token20// For eg: QN Endpoint: https://docs-demo.solana-mainnet.quiknode.pro/abcde12345678921// endpoint will be: docs-demo.solana-mainnet.quiknode.pro:443 {443 is the port number for gRPC}22// token will be : abcde1234567892324var (25endpoint = "YOUR_QN_ENDPOINT:443"26token = "YOUR_TOKEN_NUMBER"27)2829var kacp = keepalive.ClientParameters{30Time: 10 * time.Second,31Timeout: time.Second,32PermitWithoutStream: true,33}3435type tokenAuth struct {36token string37}3839func (t tokenAuth) GetRequestMetadata(ctx context.Context, in ...string) (map[string]string, error) {40return map[string]string{41"x-token": t.token,42}, nil43}4445func (tokenAuth) RequireTransportSecurity() bool {46return true47}4849func main() {50opts := []grpc.DialOption{51grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),52grpc.WithKeepaliveParams(kacp),53grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(1024*1024*1024), grpc.UseCompressor(gzip.Name)),54grpc.WithPerRPCCredentials(tokenAuth{token: token}),55}5657conn, err := grpc.NewClient(endpoint, opts...)58if err != nil {59log.Fatalf("Failed to connect: %v", err)60}61defer conn.Close()6263client := pb.NewGeyserClient(conn)6465ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)66defer cancel()6768pingResponse, err := client.Ping(ctx, &pb.PingRequest{Count: 1})69if err != nil {70log.Fatalf("Failed to get Ping: %v", err)71}72fmt.Printf(" Ping Response: %d\n", pingResponse.GetCount())7374}75
1package main23import (4"context"5"crypto/tls"6"fmt"7"log"8"time"910pb "yellowstone/proto"111213"google.golang.org/grpc"14"google.golang.org/grpc/credentials"15"google.golang.org/grpc/encoding/gzip"16"google.golang.org/grpc/keepalive"17)1819// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token20// For eg: QN Endpoint: https://docs-demo.solana-mainnet.quiknode.pro/abcde12345678921// endpoint will be: docs-demo.solana-mainnet.quiknode.pro:443 {443 is the port number for gRPC}22// token will be : abcde1234567892324var (25endpoint = "YOUR_QN_ENDPOINT:443"26token = "YOUR_TOKEN_NUMBER"27)2829var kacp = keepalive.ClientParameters{30Time: 10 * time.Second,31Timeout: time.Second,32PermitWithoutStream: true,33}3435type tokenAuth struct {36token string37}3839func (t tokenAuth) GetRequestMetadata(ctx context.Context, in ...string) (map[string]string, error) {40return map[string]string{41"x-token": t.token,42}, nil43}4445func (tokenAuth) RequireTransportSecurity() bool {46return true47}4849func main() {50opts := []grpc.DialOption{51grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),52grpc.WithKeepaliveParams(kacp),53grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(1024*1024*1024), grpc.UseCompressor(gzip.Name)),54grpc.WithPerRPCCredentials(tokenAuth{token: token}),55}5657conn, err := grpc.NewClient(endpoint, opts...)58if err != nil {59log.Fatalf("Failed to connect: %v", err)60}61defer conn.Close()6263client := pb.NewGeyserClient(conn)6465ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)66defer cancel()6768pingResponse, err := client.Ping(ctx, &pb.PingRequest{Count: 1})69if err != nil {70log.Fatalf("Failed to get Ping: %v", err)71}72fmt.Printf(" Ping Response: %d\n", pingResponse.GetCount())7374}75
1import Client, {2CommitmentLevel,3SubscribeRequest,4SubscribeRequestFilterAccountsFilter,5} from "@triton-one/yellowstone-grpc";67// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token8// For eg: QN Endpoint: https://docs-demo.solana-mainnet.quiknode.pro/abcde1234567899// endpoint will be: https://docs-demo.solana-mainnet.quiknode.pro:443 {443 is the port number for gRPC}10// token will be : abcde1234567891112const ENDPOINT = "https://YOUR_QN_ENDPOINT:443";13const TOKEN = "YOUR_TOKEN_NUMBER";1415async function main() {16const client = new Client(ENDPOINT, TOKEN, {17grpcDefaultCompressionAlgorithm: 0, // 0 = gzip, 1 = zstd18});19await client.connect();20const response = await client.ping(1);21console.log(`Response: ${response.count}`);22}2324main()25.catch((err) => {26console.error(err);27process.exit(1);28})29
1import Client, {2CommitmentLevel,3SubscribeRequest,4SubscribeRequestFilterAccountsFilter,5} from "@triton-one/yellowstone-grpc";67// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token8// For eg: QN Endpoint: https://docs-demo.solana-mainnet.quiknode.pro/abcde1234567899// endpoint will be: https://docs-demo.solana-mainnet.quiknode.pro:443 {443 is the port number for gRPC}10// token will be : abcde1234567891112const ENDPOINT = "https://YOUR_QN_ENDPOINT:443";13const TOKEN = "YOUR_TOKEN_NUMBER";1415async function main() {16const client = new Client(ENDPOINT, TOKEN, {17grpcDefaultCompressionAlgorithm: 0, // 0 = gzip, 1 = zstd18});19await client.connect();20const response = await client.ping(1);21console.log(`Response: ${response.count}`);22}2324main()25.catch((err) => {26console.error(err);27process.exit(1);28})29
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free