SubscribeCheckpoints gRPC Method
매개변수
read_mask
객체
로딩 중...
반품
cursor
문자열
로딩 중...
checkpoint
객체
로딩 중...
sequenceNumber
문자열
로딩 중...
digest
문자열
로딩 중...
summary
객체
로딩 중...
서명
객체
로딩 중...
contents
객체
로딩 중...
거래
배열
로딩 중...
요청
1grpcurl -proto ./sui/rpc/v2/subscription_service.proto -H "x-token: abcde123456789" -d '{2"read_mask": {3"paths": [4"sequence_number",5"digest",6"network_total_transactions",7"previous_digest",8"epoch_rolling_gas_cost_summary",9"timestamp_ms",10"transactions"11]12}13}' docs-demo.sui-mainnet.quiknode.pro:9000 sui.rpc.v2.SubscriptionService/SubscribeCheckpoints14
1grpcurl -proto ./sui/rpc/v2/subscription_service.proto -H "x-token: abcde123456789" -d '{2"read_mask": {3"paths": [4"sequence_number",5"digest",6"network_total_transactions",7"previous_digest",8"epoch_rolling_gas_cost_summary",9"timestamp_ms",10"transactions"11]12}13}' docs-demo.sui-mainnet.quiknode.pro:9000 sui.rpc.v2.SubscriptionService/SubscribeCheckpoints14
1패키지 main23가져오기 (4"문맥"5"crypto/tls"6"encoding/json"7"fmt"8"io"9"로그"10"os"11"os/signal"12"syscall"1314"google.golang.grpc"15"google.golang.grpc"16"google.golang.org/protobuf/encoding/protojson"17"google.golang.org/protobuf/types/known/fieldmaskpb"1819pb "sui-grpc/sui/rpc/v2" // Your Generated .pb.go files path20)2122// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token23// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678924// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}25// token will be : abcde1234567892627var (28token = "YOUR_TOKEN_NUMBER"29endpoint = "YOUR_QN_ENDPOINT:9000"30)3132// Auth structure for x-token33유형 auth struct {34토큰 문자열35}3637func (a *auth) GetRequestMetadata(ctx 컨텍스트.Context, uri ...문자열) (map[문자열]문자열, error) {38return map[string]string{"x-token": a.token}, nil39}40func (a *auth) RequireTransportSecurity() bool {41return true42}4344func main() {45creds := credentials.NewTLS(&tls.Config{})46opts := []grpc.DialOption{47grpc.WithTransportCredentials(creds),48grpc.WithPerRPCCredentials(&auth{token}),49}5051conn, err := grpc.Dial(endpoint, opts...)52만약 err != nil {53log.Fatalf("Failed to connect: %v", err)54}55이연 conn.닫기()5657client := pb.NewSubscriptionServiceClient(conn)5859// Build request with field mask60req := &pb.SubscribeCheckpointsRequest{61ReadMask: &fieldmaskpb.FieldMask{62Paths: []string{63"sequence_number",64"digest",65"network_total_transactions",66"previous_digest",67"epoch_rolling_gas_cost_summary",68"timestamp_ms",69"transactions",70},71},72}7374ctx, cancel := context.WithCancel(context.Background())75연기 연기()7677stream, err := client.SubscribeCheckpoints(ctx, req)78만약 err != nil {79log.Fatalf("SubscribeCheckpoints failed: %v", err)80}8182sigChan := make(chan os.Signal, 1)83signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)8485go func() {86<-sigChan87fmt.Println("\nClosing subscription...")88cancel()89}()9091fmt.Println("Subscribing to checkpoints... Press Ctrl+C to stop.")9293marshaler := protojson.MarshalOptions{94UseProtoNames: true,95EmitUnpopulated: true,96Indent: " ",97}9899for {100resp, err := stream.Recv()101if err == io.EOF {102fmt.Println("Stream ended")103break104}105if err != nil {106log.Printf("Stream error: %v", err)107break108}109110// Pretty print the response111jsonBytes, err := marshaler.Marshal(resp)112if err != nil {113log.Printf("Failed to marshal: %v", err)114continue115}116117var pretty map[string]interface{}118if err := json.Unmarshal(jsonBytes, &pretty); err != nil {119log.Printf("Failed to parse JSON: %v", err)120continue121}122123out, _ := json.MarshalIndent(pretty, "", " ")124fmt.Printf("Received checkpoint:\n%s\n", string(out))125}126}127
1패키지 main23가져오기 (4"문맥"5"crypto/tls"6"encoding/json"7"fmt"8"io"9"로그"10"os"11"os/signal"12"syscall"1314"google.golang.grpc"15"google.golang.grpc"16"google.golang.org/protobuf/encoding/protojson"17"google.golang.org/protobuf/types/known/fieldmaskpb"1819pb "sui-grpc/sui/rpc/v2" // Your Generated .pb.go files path20)2122// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token23// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678924// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}25// token will be : abcde1234567892627var (28token = "YOUR_TOKEN_NUMBER"29endpoint = "YOUR_QN_ENDPOINT:9000"30)3132// Auth structure for x-token33유형 auth struct {34토큰 문자열35}3637func (a *auth) GetRequestMetadata(ctx 컨텍스트.Context, uri ...문자열) (map[문자열]문자열, error) {38return map[string]string{"x-token": a.token}, nil39}40func (a *auth) RequireTransportSecurity() bool {41return true42}4344func main() {45creds := credentials.NewTLS(&tls.Config{})46opts := []grpc.DialOption{47grpc.WithTransportCredentials(creds),48grpc.WithPerRPCCredentials(&auth{token}),49}5051conn, err := grpc.Dial(endpoint, opts...)52만약 err != nil {53log.Fatalf("Failed to connect: %v", err)54}55이연 conn.닫기()5657client := pb.NewSubscriptionServiceClient(conn)5859// Build request with field mask60req := &pb.SubscribeCheckpointsRequest{61ReadMask: &fieldmaskpb.FieldMask{62Paths: []string{63"sequence_number",64"digest",65"network_total_transactions",66"previous_digest",67"epoch_rolling_gas_cost_summary",68"timestamp_ms",69"transactions",70},71},72}7374ctx, cancel := context.WithCancel(context.Background())75연기 연기()7677stream, err := client.SubscribeCheckpoints(ctx, req)78만약 err != nil {79log.Fatalf("SubscribeCheckpoints failed: %v", err)80}8182sigChan := make(chan os.Signal, 1)83signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)8485go func() {86<-sigChan87fmt.Println("\nClosing subscription...")88cancel()89}()9091fmt.Println("Subscribing to checkpoints... Press Ctrl+C to stop.")9293marshaler := protojson.MarshalOptions{94UseProtoNames: true,95EmitUnpopulated: true,96Indent: " ",97}9899for {100resp, err := stream.Recv()101if err == io.EOF {102fmt.Println("Stream ended")103break104}105if err != nil {106log.Printf("Stream error: %v", err)107break108}109110// Pretty print the response111jsonBytes, err := marshaler.Marshal(resp)112if err != nil {113log.Printf("Failed to marshal: %v", err)114continue115}116117var pretty map[string]interface{}118if err := json.Unmarshal(jsonBytes, &pretty); err != nil {119log.Printf("Failed to parse JSON: %v", err)120continue121}122123out, _ := json.MarshalIndent(pretty, "", " ")124fmt.Printf("Received checkpoint:\n%s\n", string(out))125}126}127
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';45// Configuration6const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2/subscription_service.proto');78// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token9// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678910// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}11// token will be : abcde1234567891213const endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';14const token = 'abcde123456789';1516// Load protobuf definitions17const packageDefinition = protoLoader.loadSync(PROTO_PATH, {18keepCase: true,19longs: String,20enums: String,21defaults: true,22oneofs: true,23includeDirs: [path.join(__dirname, 'protos/proto')],24});2526const proto = grpc.loadPackageDefinition(packageDefinition) as any;27const SubscriptionService = proto.sui.rpc.v2.SubscriptionService;2829// Create secure client30const client = new SubscriptionService(endpoint, grpc.credentials.createSsl());3132// Add token metadata33const metadata = new grpc.Metadata();34metadata.add('x-token', token);3536// Request payload37const request = {38read_mask: {39paths: [40'sequence_number',41'digest',42'network_total_transactions',43'previous_digest',44'epoch_rolling_gas_cost_summary',45'timestamp_ms',46'transactions',47],48},49};5051const call = client.SubscribeCheckpoints(request, metadata);5253call.on('data', (response: any) => {54console.log('Received checkpoint:', JSON.stringify(response, null, 2));55});5657call.on('error', (error: any) => {58console.error('Stream error:', error);59});6061call.on('end', () => {62console.log('Stream ended');63});6465console.log('Subscribing to checkpoints... Press Ctrl+C to stop.');66process.on('SIGINT', () => {67console.log('Closing subscription...');68call.cancel();69process.exit(0);70});71
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';45// Configuration6const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2/subscription_service.proto');78// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token9// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678910// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}11// token will be : abcde1234567891213const endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';14const token = 'abcde123456789';1516// Load protobuf definitions17const packageDefinition = protoLoader.loadSync(PROTO_PATH, {18keepCase: true,19longs: String,20enums: String,21defaults: true,22oneofs: true,23includeDirs: [path.join(__dirname, 'protos/proto')],24});2526const proto = grpc.loadPackageDefinition(packageDefinition) as any;27const SubscriptionService = proto.sui.rpc.v2.SubscriptionService;2829// Create secure client30const client = new SubscriptionService(endpoint, grpc.credentials.createSsl());3132// Add token metadata33const metadata = new grpc.Metadata();34metadata.add('x-token', token);3536// Request payload37const request = {38read_mask: {39paths: [40'sequence_number',41'digest',42'network_total_transactions',43'previous_digest',44'epoch_rolling_gas_cost_summary',45'timestamp_ms',46'transactions',47],48},49};5051const call = client.SubscribeCheckpoints(request, metadata);5253call.on('data', (response: any) => {54console.log('Received checkpoint:', JSON.stringify(response, null, 2));55});5657call.on('error', (error: any) => {58console.error('Stream error:', error);59});6061call.on('end', () => {62console.log('Stream ended');63});6465console.log('Subscribing to checkpoints... Press Ctrl+C to stop.');66process.on('SIGINT', () => {67console.log('Closing subscription...');68call.cancel();69process.exit(0);70});71
1import grpc2import json3import signal4import sys5from google.protobuf.field_mask_pb2 import FieldMask6from google.protobuf.json_format import MessageToDict7from sui.rpc.v2 import subscription_service_pb2, subscription_service_pb2_grpc89def signal_handler(sig, frame):10print('\nClosing subscription...')11sys.exit(0)1213def subscribe_checkpoints():14# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token15# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678916# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}17# token will be : abcde1234567891819endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';20token = 'abcde123456789';2122channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())23stub = subscription_service_pb2_grpc.SubscriptionServiceStub(channel)2425read_mask = FieldMask(paths=[26"sequence_number",27"digest",28"network_total_transactions",29"previous_digest",30"epoch_rolling_gas_cost_summary",31"timestamp_ms",32"transactions"33])3435request = subscription_service_pb2.SubscribeCheckpointsRequest(36read_mask=read_mask37)3839metadata = [("x-token", token)]4041return stub.SubscribeCheckpoints(request, metadata=metadata)4243def parse_response_to_json(response):44return json.dumps(45MessageToDict(response, preserving_proto_field_name=True),46indent=247)4849def main():50signal.signal(signal.SIGINT, signal_handler)51print("Subscribing to checkpoints... Press Ctrl+C to stop.")5253try:54response_stream = subscribe_checkpoints()5556for response in response_stream:57print("Received checkpoint:")58print(parse_response_to_json(response))5960except grpc.RpcError as e:61print(f"{e.code().name}: {e.details()}")62except KeyboardInterrupt:63print("\nSubscription interrupted")6465if __name__ == "__main__":66main()67
1import grpc2import json3import signal4import sys5from google.protobuf.field_mask_pb2 import FieldMask6from google.protobuf.json_format import MessageToDict7from sui.rpc.v2 import subscription_service_pb2, subscription_service_pb2_grpc89def signal_handler(sig, frame):10print('\nClosing subscription...')11sys.exit(0)1213def subscribe_checkpoints():14# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token15# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678916# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}17# token will be : abcde1234567891819endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';20token = 'abcde123456789';2122channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())23stub = subscription_service_pb2_grpc.SubscriptionServiceStub(channel)2425read_mask = FieldMask(paths=[26"sequence_number",27"digest",28"network_total_transactions",29"previous_digest",30"epoch_rolling_gas_cost_summary",31"timestamp_ms",32"transactions"33])3435request = subscription_service_pb2.SubscribeCheckpointsRequest(36read_mask=read_mask37)3839metadata = [("x-token", token)]4041return stub.SubscribeCheckpoints(request, metadata=metadata)4243def parse_response_to_json(response):44return json.dumps(45MessageToDict(response, preserving_proto_field_name=True),46indent=247)4849def main():50signal.signal(signal.SIGINT, signal_handler)51print("Subscribing to checkpoints... Press Ctrl+C to stop.")5253try:54response_stream = subscribe_checkpoints()5556for response in response_stream:57print("Received checkpoint:")58print(parse_response_to_json(response))5960except grpc.RpcError as e:61print(f"{e.code().name}: {e.details()}")62except KeyboardInterrupt:63print("\nSubscription interrupted")6465if __name__ == "__main__":66main()67