GetContractABI gRPC Method
参数
contractAddress
字符串
必填
正在加载...
退货
entrys
数组
正在加载...
anonymous
布尔型
正在加载...
constant
布尔型
正在加载...
名称
字符串
正在加载...
inputs
数组
正在加载...
indexed
布尔型
正在加载...
名称
字符串
正在加载...
类型
字符串
正在加载...
outputs
数组
正在加载...
indexed
布尔型
正在加载...
名称
字符串
正在加载...
类型
字符串
正在加载...
类型
字符串
正在加载...
payable
布尔型
正在加载...
stateMutability
字符串
正在加载...
请求
1包 main23导入 (4"上下文"5"crypto/tls"6"encoding/json"7"fmt"8"github.com/fbsobreira/gotron-sdk/pkg/client"9"google.golang.org/grpc"10"google.golang.org/grpc/credentials"11"日志"12)1314// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token15// For eg: QN Endpoint: https://docs-demo.tron-mainnet.quiknode.pro/abcde12345678916// endpoint will be: docs-demo.tron-mainnet.quiknode.pro:50051 {50051 is the port number for Tron gRPC}17// token will be : abcde1234567891819var token = "YOUR_TOKEN"20var 端点 = "YOUR_ENDPOINT:50051"2122类型 auth 结构体 {23token 字符串24}2526func (a *auth) GetRequestMetadata(ctx 上下文.上下文, uri ...字符串) (map[字符串]字符串, error) {27返回 map[字符串]字符串{28“x-token”: a.令牌,29}, nil30}3132func (a *auth) RequireTransportSecurity() bool {33返回 false34}3536func main() {3738opts := []grpc.DialOption{39grpc.WithTransportCredentials(凭证.NewTLS(&tls.配置{})),40grpc.WithPerRPC凭据(&auth{令牌}),41}42conn := client.NewGrpcClient(endpoint)43if err := conn.Start(opts...); err != nil {44恐慌(err)45}46推迟 conn.Conn.关闭()4748contractAddress := "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"49fmt.Printf("Fetching ABI for contract: %s\n", contractAddress)50contractABI, err := conn.GetContractABI(contractAddress)51如果 err != nil {52log.Fatalf("Error getting contract ABI: %v\n", err)53}5455fmt.Println("\nContract ABI Information:")56abiJSON, err := json.MarshalIndent(contractABI, "", " ")57如果 err != nil {58log.Printf("Error marshaling ABI to JSON: %v\n", err)59} else {60fmt.Println(string(abiJSON))61}6263if contractABI.Entrys != nil && len(contractABI.Entrys) > 0 {64fmt.Printf("\nContract has %d function entries\n", len(contractABI.Entrys))65maxFunctions := 566if len(contractABI.Entrys) < maxFunctions {67maxFunctions = len(contractABI.Entrys)68}6970fmt.Println("\nFunction Overview:")71for i := 0; i < maxFunctions; i++ {72entry := contractABI.Entrys[i]73fmt.Printf("%d. Name: %s, Type: %s\n", i+1, entry.Name, entry.Type)74if len(entry.Inputs) > 0 {75fmt.Print(" Parameters: ")76for j, input := range entry.Inputs {77fmt.Printf("%s (%s)", input.Name, input.Type)78if j < len(entry.Inputs)-1 {79fmt.Print(", ")80}81}82fmt.Println()83}84if len(entry.Outputs) > 0 {85fmt.Print(" Returns: ")86for j, output := range entry.Outputs {87fmt.Printf("%s (%s)", output.Name, output.Type)88if j < len(entry.Outputs)-1 {89fmt.Print(", ")90}91}92fmt.Println()93}94}9596if len(contractABI.Entrys) > maxFunctions {97fmt.Printf("\n... and %d more functions\n", len(contractABI.Entrys)-maxFunctions)98}99} else {100fmt.Println("No function entries found in this contract's ABI.")101}102}
1包 main23导入 (4"上下文"5"crypto/tls"6"encoding/json"7"fmt"8"github.com/fbsobreira/gotron-sdk/pkg/client"9"google.golang.org/grpc"10"google.golang.org/grpc/credentials"11"日志"12)1314// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token15// For eg: QN Endpoint: https://docs-demo.tron-mainnet.quiknode.pro/abcde12345678916// endpoint will be: docs-demo.tron-mainnet.quiknode.pro:50051 {50051 is the port number for Tron gRPC}17// token will be : abcde1234567891819var token = "YOUR_TOKEN"20var 端点 = "YOUR_ENDPOINT:50051"2122类型 auth 结构体 {23token 字符串24}2526func (a *auth) GetRequestMetadata(ctx 上下文.上下文, uri ...字符串) (map[字符串]字符串, error) {27返回 map[字符串]字符串{28“x-token”: a.令牌,29}, nil30}3132func (a *auth) RequireTransportSecurity() bool {33返回 false34}3536func main() {3738opts := []grpc.DialOption{39grpc.WithTransportCredentials(凭证.NewTLS(&tls.配置{})),40grpc.WithPerRPC凭据(&auth{令牌}),41}42conn := client.NewGrpcClient(endpoint)43if err := conn.Start(opts...); err != nil {44恐慌(err)45}46推迟 conn.Conn.关闭()4748contractAddress := "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"49fmt.Printf("Fetching ABI for contract: %s\n", contractAddress)50contractABI, err := conn.GetContractABI(contractAddress)51如果 err != nil {52log.Fatalf("Error getting contract ABI: %v\n", err)53}5455fmt.Println("\nContract ABI Information:")56abiJSON, err := json.MarshalIndent(contractABI, "", " ")57如果 err != nil {58log.Printf("Error marshaling ABI to JSON: %v\n", err)59} else {60fmt.Println(string(abiJSON))61}6263if contractABI.Entrys != nil && len(contractABI.Entrys) > 0 {64fmt.Printf("\nContract has %d function entries\n", len(contractABI.Entrys))65maxFunctions := 566if len(contractABI.Entrys) < maxFunctions {67maxFunctions = len(contractABI.Entrys)68}6970fmt.Println("\nFunction Overview:")71for i := 0; i < maxFunctions; i++ {72entry := contractABI.Entrys[i]73fmt.Printf("%d. Name: %s, Type: %s\n", i+1, entry.Name, entry.Type)74if len(entry.Inputs) > 0 {75fmt.Print(" Parameters: ")76for j, input := range entry.Inputs {77fmt.Printf("%s (%s)", input.Name, input.Type)78if j < len(entry.Inputs)-1 {79fmt.Print(", ")80}81}82fmt.Println()83}84if len(entry.Outputs) > 0 {85fmt.Print(" Returns: ")86for j, output := range entry.Outputs {87fmt.Printf("%s (%s)", output.Name, output.Type)88if j < len(entry.Outputs)-1 {89fmt.Print(", ")90}91}92fmt.Println()93}94}9596if len(contractABI.Entrys) > maxFunctions {97fmt.Printf("\n... and %d more functions\n", len(contractABI.Entrys)-maxFunctions)98}99} else {100fmt.Println("No function entries found in this contract's ABI.")101}102}