import ( "context" "fmt" "google.golang.org/grpc" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/tx" ) func queryState() error { myAddress, err := sdk.AccAddressFromBech32("inj...") if err != nil { return err } // gRPC 서버에 연결을 생성합니다. grpcConn := grpc.Dial( "127.0.0.1:9090", // gRPC 서버 주소. grpc.WithInsecure(), // SDK는 전송 보안 메커니즘을 지원하지 않습니다. ) defer grpcConn.Close() // x/bank 서비스를 쿼리하기 위한 gRPC 클라이언트를 생성합니다. bankClient := banktypes.NewQueryClient(grpcConn) bankRes, err := bankClient.Balance( context.Background(), &banktypes.QueryBalanceRequest{Address: myAddress, Denom: "inj"}, ) if err != nil { return err } fmt.Println(bankRes.GetBalance()) // 계정 잔액을 출력합니다 return nil }
import ( "context" "fmt" "google.golang.org/grpc" "google.golang.org/grpc/metadata" grpctypes "github.com/cosmos/cosmos-sdk/types/grpc" "github.com/cosmos/cosmos-sdk/types/tx" ) func queryState() error { // --snip-- var header metadata.MD bankRes, err = bankClient.Balance( metadata.AppendToOutgoingContext(context.Background(), grpctypes.GRPCBlockHeightHeader, "12"), // 요청에 메타데이터 추가 &banktypes.QueryBalanceRequest{Address: myAddress, Denom: denom}, grpc.Header(&header), // 응답에서 헤더 검색 ) if err != nil { return err } blockHeight = header.Get(grpctypes.GRPCBlockHeightHeader) fmt.Println(blockHeight) // 블록 높이를 출력합니다 (12) return nil }