以下示例使用 Go,但 Python 和 TS SDK 也可用于以编程方式与节点/Injective 交互。
复制
询问AI
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 server 的连接。
grpcConn := grpc.Dial(
"127.0.0.1:9090", // 你的 gRPC server 地址。
grpc.WithInsecure(), // SDK 不支持任何传输安全机制。
)
defer grpcConn.Close()
// 这将创建一个 gRPC 客户端来查询 x/bank 服务。
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
}
使用 Go 查询历史状态
通过在 gRPC 请求中添加区块高度 metadata 来查询历史区块。复制
询问AI
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"), // 向请求添加 metadata
&banktypes.QueryBalanceRequest{Address: myAddress, Denom: denom},
grpc.Header(&header), // 从响应中检索 header
)
if err != nil {
return err
}
blockHeight = header.Get(grpctypes.GRPCBlockHeightHeader)
fmt.Println(blockHeight) // 打印区块高度 (12)
return nil
}
