본문으로 건너뛰기

Cosmos gRPC 개요

업데이트됨:
2026년 8월 7일
사용 중단 공지

Sei Cosmos SDK CosmWasm 기능은 EVM 전용으로 전환됨에 따라 더 이상 지원되지 Sei . 자세한 내용은 SIP-3거버넌스 제안서를 참조하십시오.

Quicknode Sei endpoint 사용하면 REST 또는 gRPCSDK 상호 작용할 수 있습니다. REST API는 HTTP를 통해 JSON을 제공하므로, 표준 웹 도구를 사용하여 잔액, 거래 내역 및 기타 온체인 데이터를 쉽게 가져올 수 있습니다. gRPC HTTP/2를 통해 Protocol Buffers를 사용하며, 더 빠르고 강력한 타입 지정을 지원하는 요청과 실시간 데이터 스트리밍 기능을 제공합니다. 빠르고 사람이 읽기 쉬운 통합이 필요할 때는 REST를 사용하고, 대규모 고성능 백엔드 서비스가 필요할 gRPC 사용하십시오.

Sei gRPC에 대한 인증 필요

gRPC 안전하게 접근하기 위해서는 메서드를 호출하기 전에 인증을 거쳐야 합니다. Quicknode 다음 두 가지 구성 요소로 이루어져 있습니다: endpoint 그리고 이에 상응하는 토큰. 요청을 보내기 전에 인증 정보를 사용하여 gRPC 구성할 때 이 설정을 활용하십시오.

gRPC 의 인증은 다음 두 가지 방법으로 처리할gRPC :

  1. 기본 인증
  2. x-token 인증

이 문서 전반에 걸쳐, 우리는 다음 중 하나를 getClientWithBasicAuth 또는 getClientWithXToken 이러한 인증 메커니즘을 처리하는 방법을 보여주는 함수들입니다.

기본 인증

getClientWithBasicAuth 이 함수는 자격 증명을 base64로 인코딩하는 기본 인증(Basic Authentication)을 사용하여 인증을 처리하는 방법을 보여줍니다. 다음은 해당 함수의 코드 구현입니다. getClientWithBasicAuth 기능뿐만 아니라 basicAuth RPC 자격 증명 구현:

import (
"문맥"
"crypto/tls"
"encoding/base64"
"fmt"
"google.golang.grpc"
"google.golang.grpc"
)

func getClientWithBasicAuth(endpoint, token string) (*grpc.ClientConn, error) {
target := endpoint + ".sei-pacific.quiknode.pro:9090" // for TLS connections
conn, err := grpc.Dial(target,
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),
grpc.WithPerRPCCredentials(basicAuth{
username: endpoint,
password: token,
}),
)
if err != nil {
return nil, fmt.Errorf("Unable to dial endpoint %w", err)
}
return conn, nil
}

// basicAuth implements the credentials.PerRPCCredentials interface to support basic authentication for grpc requests.
type basicAuth struct {
username string
password string
}

func (b basicAuth) GetRequestMetadata(ctx context.Context, in ...string) (map[string]string, error) {
auth := b.username + ":" + b.password
enc := base64.StdEncoding.EncodeToString([]byte(auth))
return map[string]string{"authorization": "Basic " + enc}, nil
}

func (basicAuth) RequireTransportSecurity() bool {
return false
}

getClientWithBasicAuth 이 함수는 gRPC 필요한 보안 옵션으로 구성하고, 지정된 endpoint 연결을 설정합니다. 9090. 이 함수는 endpoint 토큰을 입력 매개변수로 받아, 인증된 API 호출을 수행하는 데 사용할 수 있는 gRPC 연결을 반환합니다.

conn, err := getClientWithBasicAuth("ENDPOINT_NAME", "TOKEN")
if err != nil {
log.Fatalf("err: %v", err)
}
defer conn.Close()

x-token 인증

getClientWithXToken 이 함수는 x-token을 사용하여 인증을 처리하는 방법을 보여줍니다. 이 방법은 토큰을 x-token 각 요청의 헤더.

import (
"문맥"
"crypto/tls"
"fmt"
"google.golang.grpc"
"google.golang.grpc"
)

func getClientWithXToken(endpoint, token string) (*grpc.ClientConn, error) {
target := endpoint + ".sei-pacific.quiknode.pro:9090" // for TLS connections
conn, err := grpc.Dial(target,
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),
grpc.WithPerRPCCredentials(auth{
token: token,
}),
)
if err != nil {
return nil, fmt.Errorf("Unable to dial endpoint %w", err)
}
return conn, nil
}

// auth implements the credentials.PerRPCCredentials interface to support x-token authentication for grpc requests.
type auth struct {
token string
}

func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {
return map[string]string{
"x-token": a.token,
}, nil
}

func (auth) RequireTransportSecurity() bool {
return false
}

이 방법은 기본 인증 예제와 유사한 방식으로 gRPC 구성하지만, 인증 토큰을 x-token 헤더. 이 함수를 사용하여 API 호출을 수행하는 방법은 다음과 같습니다:

conn, err := getClientWithXToken("ENDPOINT_NAME", "TOKEN")
if err != nil {
log.Fatalf("err: %v", err)
}
defer conn.Close()