BatchGetTransactions gRPC Method
參數
digests
陣列
必填
載入中...
read_mask
物件
載入中...
paths
陣列
載入中...
退貨
交易
陣列
載入中...
digest
字串
載入中...
交易
物件
載入中...
bcs
物件
載入中...
名稱
字串
載入中...
值
字串
載入中...
digest
字串
載入中...
版本
整數
載入中...
種類
物件
載入中...
programmableTransaction
物件
載入中...
輸入
陣列
載入中...
種類
字串
載入中...
objectId
字串
載入中...
mutable
布林值
載入中...
pure
字串
載入中...
版本
字串
載入中...
digest
字串
載入中...
commands
陣列
載入中...
moveCall
物件
載入中...
package
字串
載入中...
module
字串
載入中...
function
字串
載入中...
typeArguments
陣列
載入中...
arguments
陣列
載入中...
種類
字串
載入中...
輸入
整數
載入中...
結果
整數
載入中...
寄件人
字串
載入中...
gasPayment
物件
載入中...
objects
陣列
載入中...
objectId
字串
載入中...
版本
字串
載入中...
digest
字串
載入中...
所有者
字串
載入中...
價格
字串
載入中...
budget
字串
載入中...
expiration
物件
載入中...
種類
字串
載入中...
effects
物件
載入中...
bcs
物件
載入中...
名稱
字串
載入中...
值
字串
載入中...
digest
字串
載入中...
版本
整數
載入中...
狀態
物件
載入中...
成功
布林值
載入中...
時代
字串
載入中...
gasUsed
物件
載入中...
computationCost
字串
載入中...
storageCost
字串
載入中...
storageRebate
字串
載入中...
nonRefundableStorageFee
字串
載入中...
transactionDigest
字串
載入中...
gasObject
物件
載入中...
objectId
字串
載入中...
inputState
字串
載入中...
inputVersion
字串
載入中...
inputDigest
字串
載入中...
inputOwner
物件
載入中...
種類
字串
載入中...
地址
字串
載入中...
outputState
字串
載入中...
outputVersion
字串
載入中...
outputDigest
字串
載入中...
outputOwner
物件
載入中...
種類
字串
載入中...
地址
字串
載入中...
idOperation
字串
載入中...
eventsDigest
字串
載入中...
dependencies
陣列
載入中...
lamportVersion
字串
載入中...
changedObjects
陣列
載入中...
objectId
字串
載入中...
inputState
字串
載入中...
inputVersion
字串
載入中...
inputDigest
字串
載入中...
inputOwner
物件
載入中...
種類
字串
載入中...
地址
字串
載入中...
outputState
字串
載入中...
outputVersion
字串
載入中...
outputDigest
字串
載入中...
outputOwner
物件
載入中...
種類
字串
載入中...
地址
字串
載入中...
idOperation
字串
載入中...
objectType
字串
載入中...
unchangedConsensusObjects
陣列
載入中...
種類
字串
載入中...
objectId
字串
載入中...
版本
字串
載入中...
digest
字串
載入中...
活動
物件
載入中...
bcs
物件
載入中...
名稱
字串
載入中...
值
字串
載入中...
digest
字串
載入中...
活動
陣列
載入中...
packageId
字串
載入中...
module
字串
載入中...
寄件人
字串
載入中...
eventType
字串
載入中...
contents
物件
載入中...
名稱
字串
載入中...
值
字串
載入中...
json
物件
載入中...
balanceManagerId
字串
載入中...
baseAssetQuantityCanceled
字串
載入中...
clientOrderId
字串
載入中...
isBid
布林值
載入中...
orderId
字串
載入中...
originalQuantity
字串
載入中...
poolId
字串
載入中...
價格
字串
載入中...
時間戳記
字串
載入中...
trader
字串
載入中...
請求
1grpcurl \2-import-path . \3-proto sui/rpc/v2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"digests": [7"HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G"8],9"read_mask": {10"paths": [11"digest",12"transaction",13"effects",14"events"15]16}17}' \18docs-demo.sui-mainnet.quiknode.pro:9000 \19sui.rpc.v2.LedgerService/BatchGetTransactions
1grpcurl \2-import-path . \3-proto sui/rpc/v2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"digests": [7"HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G"8],9"read_mask": {10"paths": [11"digest",12"transaction",13"effects",14"events"15]16}17}' \18docs-demo.sui-mainnet.quiknode.pro:9000 \19sui.rpc.v2.LedgerService/BatchGetTransactions
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"log"9"time"1011"google.golang.org/grpc"12"google.golang.org/grpc/credentials"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-token30type auth struct {31token string32}3334func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {35return map[string]string{36"x-token": a.token,37}, nil38}3940func (a *auth) RequireTransportSecurity() bool {41return true42}4344func main() {45// TLS credentials and x-token auth46creds := credentials.NewTLS(&tls.Config{})47opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{token}),50}5152conn, err := grpc.Dial(endpoint, opts...)53if err != nil {54log.Fatalf("Failed to connect: %v", err)55}56defer conn.Close()5758client := pb.NewLedgerServiceClient(conn)5960// Digest array61digests := []string{62"HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G",63}6465// FieldMask to restrict returned fields66readMask := &fieldmaskpb.FieldMask{67Paths: []string{"digest", "transaction", "effects", "events"},68}6970req := &pb.BatchGetTransactionsRequest{71Digests: digests,72ReadMask: readMask,73}7475ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)76defer cancel()7778resp, err := client.BatchGetTransactions(ctx, req)79if err != nil {80log.Fatalf("BatchGetTransactions failed: %v", err)81}8283// Format response as pretty JSON84marshaler := protojson.MarshalOptions{85UseProtoNames: true,86EmitUnpopulated: true,87Indent: " ",88}8990jsonBytes, err := marshaler.Marshal(resp)91if err != nil {92log.Fatalf("Failed to marshal response: %v", err)93}9495var pretty map[string]interface{}96if err := json.Unmarshal(jsonBytes, &pretty); err != nil {97log.Fatalf("Failed to parse JSON: %v", err)98}99100formatted, _ := json.MarshalIndent(pretty, "", " ")101fmt.Println(string(formatted))102}103
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"log"9"time"1011"google.golang.org/grpc"12"google.golang.org/grpc/credentials"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-token30type auth struct {31token string32}3334func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {35return map[string]string{36"x-token": a.token,37}, nil38}3940func (a *auth) RequireTransportSecurity() bool {41return true42}4344func main() {45// TLS credentials and x-token auth46creds := credentials.NewTLS(&tls.Config{})47opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{token}),50}5152conn, err := grpc.Dial(endpoint, opts...)53if err != nil {54log.Fatalf("Failed to connect: %v", err)55}56defer conn.Close()5758client := pb.NewLedgerServiceClient(conn)5960// Digest array61digests := []string{62"HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G",63}6465// FieldMask to restrict returned fields66readMask := &fieldmaskpb.FieldMask{67Paths: []string{"digest", "transaction", "effects", "events"},68}6970req := &pb.BatchGetTransactionsRequest{71Digests: digests,72ReadMask: readMask,73}7475ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)76defer cancel()7778resp, err := client.BatchGetTransactions(ctx, req)79if err != nil {80log.Fatalf("BatchGetTransactions failed: %v", err)81}8283// Format response as pretty JSON84marshaler := protojson.MarshalOptions{85UseProtoNames: true,86EmitUnpopulated: true,87Indent: " ",88}8990jsonBytes, err := marshaler.Marshal(resp)91if err != nil {92log.Fatalf("Failed to marshal response: %v", err)93}9495var pretty map[string]interface{}96if err := json.Unmarshal(jsonBytes, &pretty); err != nil {97log.Fatalf("Failed to parse JSON: %v", err)98}99100formatted, _ := json.MarshalIndent(pretty, "", " ")101fmt.Println(string(formatted))102}103
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 proto definition16const 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 gRPC client with TLS28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const metadata = new grpc.Metadata();32metadata.add('x-token', token);3334// Request setup35const request = {36digests: ['HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G'], // Replace with valid digests37read_mask: {38paths: ['digest', 'transaction', 'effects', 'events'], // FieldMask39},40};4142// Invoke BatchGetTransactions43client.BatchGetTransactions(request, metadata, (err: grpc.ServiceError | null, response: any) => {44if (err) {45console.error('gRPC Error:', {46code: err.code,47message: err.message,48details: err.details,49});50} else {51console.log('BatchGetTransactions Response:');52console.log(JSON.stringify(response, null, 2));53}54});55
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 proto definition16const 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 gRPC client with TLS28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const metadata = new grpc.Metadata();32metadata.add('x-token', token);3334// Request setup35const request = {36digests: ['HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G'], // Replace with valid digests37read_mask: {38paths: ['digest', 'transaction', 'effects', 'events'], // FieldMask39},40};4142// Invoke BatchGetTransactions43client.BatchGetTransactions(request, metadata, (err: grpc.ServiceError | null, response: any) => {44if (err) {45console.error('gRPC Error:', {46code: err.code,47message: err.message,48details: err.details,49});50} else {51console.log('BatchGetTransactions Response:');52console.log(JSON.stringify(response, null, 2));53}54});55
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_batch_transactions():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)1920tx_digests = [21"HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G"22]2324read_mask = FieldMask(paths=[25"digest",26"transaction",27"effects",28"events"29])3031request = ledger_service_pb2.BatchGetTransactionsRequest(32digests=tx_digests,33read_mask=read_mask34)3536metadata = [("x-token", token)]3738return stub.BatchGetTransactions(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_batch_transactions()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_batch_transactions():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)1920tx_digests = [21"HjuLoCGjS4wBC5KfqmExUa7GcF3yzaWRN1YoYpgxQC6G"22]2324read_mask = FieldMask(paths=[25"digest",26"transaction",27"effects",28"events"29])3031request = ledger_service_pb2.BatchGetTransactionsRequest(32digests=tx_digests,33read_mask=read_mask34)3536metadata = [("x-token", token)]3738return stub.BatchGetTransactions(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_batch_transactions()51print(parse_response_to_json(response))52except grpc.RpcError as e:53print(f"{e.code().name}: {e.details()}")545556if __name__ == "__main__":57main()58