GetCheckpoint gRPC Method
参数
sequence_number
字符串
正在加载...
摘要
字符串
正在加载...
read_mask
对象
正在加载...
paths
数组
正在加载...
退货
checkpoint
对象
正在加载...
sequenceNumber
字符串
正在加载...
摘要
字符串
正在加载...
请求
1grpcurl \2-import-path . \3-proto sui/rpc/v2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"sequence_number": "1000",7"read_mask": {8"paths": [9"sequence_number",10"digest"11]12}13}' \14docs-demo.mainnet.quiknode.pro:9000 \15sui.rpc.v2.LedgerService/GetCheckpoint16
1grpcurl \2-import-path . \3-proto sui/rpc/v2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"sequence_number": "1000",7"read_mask": {8"paths": [9"sequence_number",10"digest"11]12}13}' \14docs-demo.mainnet.quiknode.pro:9000 \15sui.rpc.v2.LedgerService/GetCheckpoint16
1包 main23import (4"上下文"5"crypto/tls"6"encoding/json"7"fmt"8“日志”9“时间”1011"google.golang.grpc"12"google.golang.grpc"13"google.golang.org/protobuf/encoding/protojson"14"google.golang.org/protobuf/types/known/fieldmaskpb"1516pb "sui" // 您生成的 .pb.go 文件路径17)1819// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token20// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678921// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}22// token will be : abcde1234567892324var (25token = "您的令牌编号"26endpoint = "您的QN端点:9000"27)2829// Auth structure for x-token30类型 auth 结构体 {31token 字符串32}3334func (a *auth) GetRequestMetadata(ctx 上下文.Context, uri ...字符串) (map[字符串]字符串, error) {35返回 map[字符串]字符串{36“x-token”: a.令牌,37}, nil38}3940func (a *auth) RequireTransportSecurity() bool {41返回 true42}4344func main() {45// TLS credentials46creds := credentials.NewTLS(&tls.Config{})47opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{令牌}),50}5152conn, err := grpc.Dial(endpoint, opts...)53如果 err != nil {54log.Fatalf("连接失败:%v", err)55}56推迟 conn.关闭()5758client := pb.NewLedgerServiceClient(conn)5960// Request for checkpoint with sequence_number = 100061seq := uint64(1000)62req := &pb.GetCheckpointRequest{63CheckpointId: &pb.GetCheckpointRequest_SequenceNumber{64SequenceNumber: seq,65},66ReadMask: &fieldmaskpb.FieldMask{67Paths: []string{"sequence_number", "digest"},68},69}7071ctx, 取消 := context.带超时(context.Background(), 10*时间.第二次)72推迟 取消()7374resp, err := client.GetCheckpoint(ctx, req)75如果 err != nil {76log.Fatalf("GetCheckpoint failed: %v", err)77}7879marshaler := protojson.MarshalOptions{80UseProtoNames: true,81EmitUnpopulated: true,82缩进: " ",83}8485jsonBytes, err := marshaler.Marshal(resp)86如果 err != nil {87log.Fatalf(“序列化失败:%v”, err)88}8990var pretty map[字符串]接口{}91if err := json.Unmarshal(jsonBytes, &pretty); err != nil {92log.Fatalf("Failed to unmarshal: %v", err)93}9495formatted, _ := json.MarshalIndent(pretty, "", " ")96fmt.Println(string(formatted))97}98
1包 main23import (4"上下文"5"crypto/tls"6"encoding/json"7"fmt"8“日志”9“时间”1011"google.golang.grpc"12"google.golang.grpc"13"google.golang.org/protobuf/encoding/protojson"14"google.golang.org/protobuf/types/known/fieldmaskpb"1516pb "sui" // 您生成的 .pb.go 文件路径17)1819// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token20// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678921// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}22// token will be : abcde1234567892324var (25token = "您的令牌编号"26endpoint = "您的QN端点:9000"27)2829// Auth structure for x-token30类型 auth 结构体 {31token 字符串32}3334func (a *auth) GetRequestMetadata(ctx 上下文.Context, uri ...字符串) (map[字符串]字符串, error) {35返回 map[字符串]字符串{36“x-token”: a.令牌,37}, nil38}3940func (a *auth) RequireTransportSecurity() bool {41返回 true42}4344func main() {45// TLS credentials46creds := credentials.NewTLS(&tls.Config{})47opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{令牌}),50}5152conn, err := grpc.Dial(endpoint, opts...)53如果 err != nil {54log.Fatalf("连接失败:%v", err)55}56推迟 conn.关闭()5758client := pb.NewLedgerServiceClient(conn)5960// Request for checkpoint with sequence_number = 100061seq := uint64(1000)62req := &pb.GetCheckpointRequest{63CheckpointId: &pb.GetCheckpointRequest_SequenceNumber{64SequenceNumber: seq,65},66ReadMask: &fieldmaskpb.FieldMask{67Paths: []string{"sequence_number", "digest"},68},69}7071ctx, 取消 := context.带超时(context.Background(), 10*时间.第二次)72推迟 取消()7374resp, err := client.GetCheckpoint(ctx, req)75如果 err != nil {76log.Fatalf("GetCheckpoint failed: %v", err)77}7879marshaler := protojson.MarshalOptions{80UseProtoNames: true,81EmitUnpopulated: true,82缩进: " ",83}8485jsonBytes, err := marshaler.Marshal(resp)86如果 err != nil {87log.Fatalf(“序列化失败:%v”, err)88}8990var pretty map[字符串]接口{}91if err := json.Unmarshal(jsonBytes, &pretty); err != nil {92log.Fatalf("Failed to unmarshal: %v", err)93}9495formatted, _ := json.MarshalIndent(pretty, "", " ")96fmt.Println(string(formatted))97}98
1import * 作为 grpc from grpc;2import * 作为 protoLoader from grpc;3import * 作为 路径 from '路径';45const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2/ledger_service.proto');67// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token8// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde1234567899// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}10// token will be : abcde1234567891112const endpoint = 'docs-demo.mainnet.quiknode.pro:9000';13const 令牌 = 'abcde123456789';1415// Load protobuf definitions16const 包定义 = protoLoader.loadSync(PROTO_PATH, {17keepCase: true,18多头: 字符串,19枚举: 字符串,20默认值: true,21oneofs: true,22includeDirs: [路径.join(__dirname, 'protos/proto')],23});24const proto = grpc.loadPackageDefinition(packageDefinition) 作为 any;25const LedgerService = proto.sui.rpc.v2.LedgerService;2627// Create secure client28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const 元数据 = new grpc.元数据();32元数据.添加('x-token', token);3334const 请求 = {35sequence_number: 1000, // Replace as needed36read_mask: {37paths: ['sequence_number', 'digest'],38},39};4041client.GetCheckpoint(request, metadata, (err: grpc.ServiceError | null, response: any) => {42如果 (err) {43console.error('gRPC Error:', {44代码: err.代码,45消息: err.消息,46详细信息: err.详情,47});48} else {49console.log('Checkpoint Response:');50控制台.日志(JSON.stringify(response, null, 2));51}52});53
1import * 作为 grpc from grpc;2import * 作为 protoLoader from grpc;3import * 作为 路径 from '路径';45const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2/ledger_service.proto');67// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token8// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde1234567899// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}10// token will be : abcde1234567891112const endpoint = 'docs-demo.mainnet.quiknode.pro:9000';13const 令牌 = 'abcde123456789';1415// Load protobuf definitions16const 包定义 = protoLoader.loadSync(PROTO_PATH, {17keepCase: true,18多头: 字符串,19枚举: 字符串,20默认值: true,21oneofs: true,22includeDirs: [路径.join(__dirname, 'protos/proto')],23});24const proto = grpc.loadPackageDefinition(packageDefinition) 作为 any;25const LedgerService = proto.sui.rpc.v2.LedgerService;2627// Create secure client28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const 元数据 = new grpc.元数据();32元数据.添加('x-token', token);3334const 请求 = {35sequence_number: 1000, // Replace as needed36read_mask: {37paths: ['sequence_number', 'digest'],38},39};4041client.GetCheckpoint(request, metadata, (err: grpc.ServiceError | null, response: any) => {42如果 (err) {43console.error('gRPC Error:', {44代码: err.代码,45消息: err.消息,46详细信息: err.详情,47});48} else {49console.log('Checkpoint Response:');50控制台.日志(JSON.stringify(response, null, 2));51}52});53
1import grpc2导入 json3来源 谷歌.protobuf.field_mask_pb2 导入 FieldMask4来源 谷歌.protobuf.json_format import MessageToDict5from sui.rpc.v2 import ledger_service_pb2, ledger_service_pb2_grpc678def get_checkpoint():9#Quicknode 由两个关键组成部分构成:endpoint 和相应的令牌10# 例如:QNEndpoint:mainnet11# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# 令牌将为:abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617频道 = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = ledger_service_pb2_grpc.LedgerServiceStub(channel)1920# You can specify a checkpoint by sequence_number or digest21# Using sequence_number here as an example22sequence_number = 1000 # Replace with the actual checkpoint sequence number you want to retrieve2324# Create a field mask to specify which fields to include in the response25read_mask = 字段掩码(路径=[26"sequence_number",27"digest"28])2930# Prepare the GetCheckpointRequest31request = ledger_service_pb2.GetCheckpointRequest(32sequence_number=sequence_number,33read_mask=read_mask34)3536元数据 = [("x-token", token)]3738return stub.GetCheckpoint(request, metadata=metadata)394041def parse_response_to_json(response):42返回 json.dumps(43MessageToDict(response, 保留_proto_字段_名称=True),44缩进=245)464748def main():49试一试:50response = get_checkpoint()51打印(parse_response_to_json(response))52除了 grpc。RpcError 作为 e:53print(f"{e.code().name}: {e.details()}")545556如果 __name__ == "__main__":57主()58
1import grpc2导入 json3来源 谷歌.protobuf.field_mask_pb2 导入 FieldMask4来源 谷歌.protobuf.json_format import MessageToDict5from sui.rpc.v2 import ledger_service_pb2, ledger_service_pb2_grpc678def get_checkpoint():9#Quicknode 由两个关键组成部分构成:endpoint 和相应的令牌10# 例如:QNEndpoint:mainnet11# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# 令牌将为:abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617频道 = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = ledger_service_pb2_grpc.LedgerServiceStub(channel)1920# You can specify a checkpoint by sequence_number or digest21# Using sequence_number here as an example22sequence_number = 1000 # Replace with the actual checkpoint sequence number you want to retrieve2324# Create a field mask to specify which fields to include in the response25read_mask = 字段掩码(路径=[26"sequence_number",27"digest"28])2930# Prepare the GetCheckpointRequest31request = ledger_service_pb2.GetCheckpointRequest(32sequence_number=sequence_number,33read_mask=read_mask34)3536元数据 = [("x-token", token)]3738return stub.GetCheckpoint(request, metadata=metadata)394041def parse_response_to_json(response):42返回 json.dumps(43MessageToDict(response, 保留_proto_字段_名称=True),44缩进=245)464748def main():49试一试:50response = get_checkpoint()51打印(parse_response_to_json(response))52除了 grpc。RpcError 作为 e:53print(f"{e.code().name}: {e.details()}")545556如果 __name__ == "__main__":57主()58