GetEpoch gRPC Method
パラメータ
epoch
文字列
読み込み中...
read_mask
オブジェクト
読み込み中...
paths
配列
読み込み中...
返します
epoch
オブジェクト
読み込み中...
epoch
文字列
読み込み中...
committee
オブジェクト
読み込み中...
epoch
文字列
読み込み中...
members
配列
読み込み中...
publicKey
文字列
読み込み中...
重量
文字列
読み込み中...
リクエスト
1grpcurl \2-import-path . \3-proto sui/rpc/v2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"epoch": "10",7"read_mask": {8"paths": [9"epoch",10"committee"11]12}13}' \14docs-demo.sui-mainnet.quiknode.pro:9000 \15sui.rpc.v2.LedgerService/GetEpoch16
1grpcurl \2-import-path . \3-proto sui/rpc/v2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"epoch": "10",7"read_mask": {8"paths": [9"epoch",10"committee"11]12}13}' \14docs-demo.sui-mainnet.quiknode.pro:9000 \15sui.rpc.v2.LedgerService/GetEpoch16
1パッケージ main23インポート (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-grpc/sui/rpc/v2" // Your Generated .pb.go files path17)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 = "YOUR_TOKEN_NUMBER"26endpoint = "YOUR_QN_ENDPOINT:9000"27)2829// Auth structure for x-token30タイプ auth 構造体 {31トークン 文字列32}3334func (a *auth) GetRequestMetadata(ctx コンテキスト.Context, uri ...文字列) (map[文字列]文字列, エラー) {35戻る map[文字列]文字列{36「x-token」: a.トークン,37}, nil38}3940func (a *auth) RequireTransportSecurity(auth) bool {41return true42}4344func main() {45creds := credentials.NewTLS(&tls.Config{})4647opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{token}),50}5152conn, err := grpc.Dial(endpoint, opts...)53もし err != nil {54log.Fatalf("Failed to connect: %v", err)55}56延期 conn.閉じる()5758client := pb.NewLedgerServiceClient(conn)5960// Request epoch #1061epochNum := uint64(10)62fieldMask := &fieldmaskpb.FieldMask{63Paths: []string{64"epoch",65"committee",66},67}6869req := &pb.GetEpochRequest{70Epoch: &epochNum,71ReadMask: fieldMask,72}7374ctx, cancel := context.WithTimeout)(コンテキスト.Background(), 10*時間.2番目)75延期 延期()7677resp, err := client.GetEpoch(ctx, req)78もし err != nil {79log.Fatalf("GetEpoch failed: %v", err)80}8182// Convert protobuf response to readable JSON83marshaler := protojson.MarshalOptions{84UseProtoNames: true,85EmitUnpopulated: true,86Indent: " ",87}8889jsonBytes, err := marshaler.Marshal(resp)90もし err != nil {91log.Fatalf("Failed to marshal response: %v", err)92}9394var pretty map[string]interface{}95if err := json.Unmarshal(jsonBytes, &pretty); err != nil {96log.Fatalf("Failed to parse JSON: %v", err)97}9899formatted, _ := json.MarshalIndent(pretty, "", " ")100fmt.Println(string(formatted))101}102
1パッケージ main23インポート (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-grpc/sui/rpc/v2" // Your Generated .pb.go files path17)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 = "YOUR_TOKEN_NUMBER"26endpoint = "YOUR_QN_ENDPOINT:9000"27)2829// Auth structure for x-token30タイプ auth 構造体 {31トークン 文字列32}3334func (a *auth) GetRequestMetadata(ctx コンテキスト.Context, uri ...文字列) (map[文字列]文字列, エラー) {35戻る map[文字列]文字列{36「x-token」: a.トークン,37}, nil38}3940func (a *auth) RequireTransportSecurity(auth) bool {41return true42}4344func main() {45creds := credentials.NewTLS(&tls.Config{})4647opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{token}),50}5152conn, err := grpc.Dial(endpoint, opts...)53もし err != nil {54log.Fatalf("Failed to connect: %v", err)55}56延期 conn.閉じる()5758client := pb.NewLedgerServiceClient(conn)5960// Request epoch #1061epochNum := uint64(10)62fieldMask := &fieldmaskpb.FieldMask{63Paths: []string{64"epoch",65"committee",66},67}6869req := &pb.GetEpochRequest{70Epoch: &epochNum,71ReadMask: fieldMask,72}7374ctx, cancel := context.WithTimeout)(コンテキスト.Background(), 10*時間.2番目)75延期 延期()7677resp, err := client.GetEpoch(ctx, req)78もし err != nil {79log.Fatalf("GetEpoch failed: %v", err)80}8182// Convert protobuf response to readable JSON83marshaler := protojson.MarshalOptions{84UseProtoNames: true,85EmitUnpopulated: true,86Indent: " ",87}8889jsonBytes, err := marshaler.Marshal(resp)90もし err != nil {91log.Fatalf("Failed to marshal response: %v", err)92}9394var pretty map[string]interface{}95if err := json.Unmarshal(jsonBytes, &pretty); err != nil {96log.Fatalf("Failed to parse JSON: %v", err)97}9899formatted, _ := json.MarshalIndent(pretty, "", " ")100fmt.Println(string(formatted))101}102
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';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.sui-mainnet.quiknode.pro:9000';13const token = 'abcde123456789';1415// Load protobuf definitions16const packageDefinition = protoLoader.loadSync(PROTO_PATH, {17keepCase: true,18longs: String,19enums: String,20defaults: true,21oneofs: true,22includeDirs: [path.join(__dirname, 'protos/proto')],23});24const proto = grpc.loadPackageDefinition(packageDefinition) as any;25const LedgerService = proto.sui.rpc.v2.LedgerService;2627// Create secure client28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const metadata = new grpc.Metadata();32metadata.add('x-token', token);3334// Request setup35const request = {36epoch: 10, // Replace with desired epoch number37read_mask: {38paths: ['epoch', 'committee'], // FieldMask39},40};4142// Recursively convert byte arrays to hex43function convertBytesToHex(obj: any): any {44if (Array.isArray(obj)) {45return obj.map(convertBytesToHex);46} else if (obj && typeof obj === 'object') {47const result: any = {};48for (const key of Object.keys(obj)) {49const val = obj[key];50if (Buffer.isBuffer(val) || (Array.isArray(val) && typeof val[0] === 'number')) {51result[key] = Buffer.from(val).toString('hex');52} else {53result[key] = convertBytesToHex(val);54}55}56return result;57}58return obj;59}6061client.GetEpoch(request, metadata, (err: grpc.ServiceError | null, response: any) => {62if (err) {63console.error('gRPC Error:', {64code: err.code,65message: err.message,66details: err.details,67});68} else {69const decoded = convertBytesToHex(response);70console.log('GetEpoch Response:');71console.log(JSON.stringify(decoded, null, 2));72}73});74
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';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.sui-mainnet.quiknode.pro:9000';13const token = 'abcde123456789';1415// Load protobuf definitions16const packageDefinition = protoLoader.loadSync(PROTO_PATH, {17keepCase: true,18longs: String,19enums: String,20defaults: true,21oneofs: true,22includeDirs: [path.join(__dirname, 'protos/proto')],23});24const proto = grpc.loadPackageDefinition(packageDefinition) as any;25const LedgerService = proto.sui.rpc.v2.LedgerService;2627// Create secure client28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const metadata = new grpc.Metadata();32metadata.add('x-token', token);3334// Request setup35const request = {36epoch: 10, // Replace with desired epoch number37read_mask: {38paths: ['epoch', 'committee'], // FieldMask39},40};4142// Recursively convert byte arrays to hex43function convertBytesToHex(obj: any): any {44if (Array.isArray(obj)) {45return obj.map(convertBytesToHex);46} else if (obj && typeof obj === 'object') {47const result: any = {};48for (const key of Object.keys(obj)) {49const val = obj[key];50if (Buffer.isBuffer(val) || (Array.isArray(val) && typeof val[0] === 'number')) {51result[key] = Buffer.from(val).toString('hex');52} else {53result[key] = convertBytesToHex(val);54}55}56return result;57}58return obj;59}6061client.GetEpoch(request, metadata, (err: grpc.ServiceError | null, response: any) => {62if (err) {63console.error('gRPC Error:', {64code: err.code,65message: err.message,66details: err.details,67});68} else {69const decoded = convertBytesToHex(response);70console.log('GetEpoch Response:');71console.log(JSON.stringify(decoded, null, 2));72}73});74
1import grpc2import json3from google.protobuf.field_mask_pb2 import FieldMask4from google.protobuf.json_format import MessageToDict5from sui.rpc.v2 import ledger_service_pb2, ledger_service_pb2_grpc678def get_epoch():9# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token10# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678911# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be: abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = ledger_service_pb2_grpc.LedgerServiceStub(channel)1920# Specify which epoch you want to retrieve21# For example, epoch 10 - replace with the actual epoch number you want22epoch_number = 102324# Create a field mask to specify which fields to include in the response25read_mask = FieldMask(paths=[26"epoch",27"committee"28])2930# Prepare the GetEpochRequest31request = ledger_service_pb2.GetEpochRequest(32epoch=epoch_number,33read_mask=read_mask34)3536metadata = [("x-token", token)]3738return stub.GetEpoch(request, metadata=metadata)394041def parse_response_to_json(response):42return json.dumps(43MessageToDict(response, preserving_proto_field_name=True),44indent=245)464748def main():49try:50response = get_epoch()51print(parse_response_to_json(response))52except grpc.RpcError as e:53print(f"{e.code().name}: {e.details()}")545556if __name__ == "__main__":57main()58
1import grpc2import json3from google.protobuf.field_mask_pb2 import FieldMask4from google.protobuf.json_format import MessageToDict5from sui.rpc.v2 import ledger_service_pb2, ledger_service_pb2_grpc678def get_epoch():9# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token10# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678911# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be: abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = ledger_service_pb2_grpc.LedgerServiceStub(channel)1920# Specify which epoch you want to retrieve21# For example, epoch 10 - replace with the actual epoch number you want22epoch_number = 102324# Create a field mask to specify which fields to include in the response25read_mask = FieldMask(paths=[26"epoch",27"committee"28])2930# Prepare the GetEpochRequest31request = ledger_service_pb2.GetEpochRequest(32epoch=epoch_number,33read_mask=read_mask34)3536metadata = [("x-token", token)]3738return stub.GetEpoch(request, metadata=metadata)394041def parse_response_to_json(response):42return json.dumps(43MessageToDict(response, preserving_proto_field_name=True),44indent=245)464748def main():49try:50response = get_epoch()51print(parse_response_to_json(response))52except grpc.RpcError as e:53print(f"{e.code().name}: {e.details()}")545556if __name__ == "__main__":57main()58