DelegateResource gRPC Method
參數
來自
字串
必填
載入中...
至
字串
必填
載入中...
resource
字串
必填
載入中...
delegateBalance
整數
必填
載入中...
lock
布林值
必填
載入中...
lockPeriod
整數
必填
載入中...
退貨
交易
物件
載入中...
raw_data
物件
載入中...
ref_block_bytes
字串
載入中...
ref_block_num
整數
載入中...
ref_block_hash
字串
載入中...
expiration
整數
載入中...
auths
陣列
載入中...
資料
字串
載入中...
合約
陣列
載入中...
類型
字串
載入中...
parameter
物件
載入中...
值
字串
載入中...
type_url
字串
載入中...
provider
字串
載入中...
ContractName
字串
載入中...
Permission_id
整數
載入中...
scripts
字串
載入中...
時間戳記
整數
載入中...
fee_limit
整數
載入中...
簽名
陣列
載入中...
ret
陣列
載入中...
fee
整數
載入中...
ret
字串
載入中...
contractRet
字串
載入中...
assetIssueID
字串
載入中...
withdraw_amount
整數
載入中...
unfreeze_amount
整數
載入中...
exchange_received_amount
整數
載入中...
exchange_inject_another_amount
整數
載入中...
exchange_withdraw_another_amount
整數
載入中...
exchange_id
整數
載入中...
shielded_transaction_fee
整數
載入中...
orderId
字串
載入中...
orderDetails
陣列
載入中...
makerOrderId
字串
載入中...
takerOrderId
字串
載入中...
fillSellQuantity
整數
載入中...
fillBuyQuantity
整數
載入中...
withdraw_expire_amount
整數
載入中...
cancelUnfreezeV2Amount
物件
載入中...
txid
字串
載入中...
constant_result
陣列
載入中...
結果
物件
載入中...
結果
布林值
載入中...
程式碼
字串
載入中...
訊息
字串
載入中...
energy_used
整數
載入中...
日誌
陣列
載入中...
地址
字串
載入中...
主題
陣列
載入中...
資料
字串
載入中...
internal_transactions
陣列
載入中...
hash
字串
載入中...
caller_address
字串
載入中...
transferTo_address
字串
載入中...
callValueInfo
陣列
載入中...
callValue
整數
載入中...
tokenId
字串
載入中...
註
字串
載入中...
rejected
布林值
載入中...
extra
字串
載入中...
energy_penalty
整數
載入中...
請求
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"github.com/fbsobreira/gotron-sdk/pkg/client"9"github.com/fbsobreira/gotron-sdk/pkg/proto/core"10"google.golang.org/grpc"11"google.golang.org/grpc/credentials"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 endpoint = "YOUR_ENDPOINT:50051"2122type auth struct {23token string24}2526func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {27return map[string]string{28"x-token": a.token,29}, nil30}3132func (a *auth) RequireTransportSecurity() bool {33return false34}3536func main() {37/*38* IMPORTANT NOTES FOR DOCUMENTATION:39* 1. The DelegateResource method allows an account to delegate bandwidth or energy to another account.40* 2. The delegator retains ownership of the resources but allows another account to use them.41* 3. The delegation can be for either bandwidth (NET) or energy (CPU) resources.42* 4. The delegation can be locked for a specified period (minimum 3 days).43* 5. The owner account must have sufficient resources to delegate.44*45* PREREQUISITE:46* Before using DelegateResource, you must first freeze TRX for resources using FreezeBalanceV2.47* You can only delegate resources that you've previously frozen, and the delegation amount48* must be less than or equal to your available frozen resources of the specified type.49* Example:50* // First freeze TRX for bandwidth51* conn.FreezeBalanceV2(from, delegateBalance, core.ResourceCode_BANDWIDTH)52* // Then delegate a portion of those frozen resources53* conn.DelegateResource(from, to, core.ResourceCode_BANDWIDTH, delegateBalance, lock, lockPeriod)54*/55opts := []grpc.DialOption{56grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),57grpc.WithPerRPCCredentials(&auth{token}),58}59conn := client.NewGrpcClient(endpoint)60if err := conn.Start(opts...); err != nil {61panic(err)62}63defer conn.Conn.Close()6465from := "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g"66to := "TFgY1uN8buRxAtV2r6Zy5sG3ACko6pJT1y"67delegateBalance := int64(1000000)68lockPeriod := int64(3)69lock := false70resource := core.ResourceCode_BANDWIDTH // For bandwidth delegation71// resource := core.ResourceCode_ENERGY // For energy delegation7273fmt.Println("Creating resource delegation transaction...")7475// NOTE: This will fail if the owner address doesn't have enough frozen bandwidth resources.76// You must first freeze TRX for bandwidth using FreezeBalanceV2 before delegating.7778tx, err := conn.DelegateResource(79from,80to,81resource,82delegateBalance,83lock,84lockPeriod,85)8687if err != nil {88fmt.Printf("Error creating resource delegation transaction: %v\n", err)89return90}9192fmt.Println("Resource delegation transaction created successfully. Transaction details:")93jsonData, _ := json.MarshalIndent(tx, "", " ")94fmt.Println(string(jsonData))9596fmt.Println("\nBroadcasting transaction to the TRON network...")97result, err := conn.Broadcast(tx.Transaction)98if err != nil {99fmt.Printf("Error broadcasting transaction: %v\n", err)100return101}102103if !result.GetResult() {104fmt.Printf("Broadcast failed: %s\n", result.GetMessage())105return106}107108fmt.Println("Resource delegation successful! Result:")109resultJSON, _ := json.MarshalIndent(result, "", " ")110fmt.Println(string(resultJSON))111}
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"github.com/fbsobreira/gotron-sdk/pkg/client"9"github.com/fbsobreira/gotron-sdk/pkg/proto/core"10"google.golang.org/grpc"11"google.golang.org/grpc/credentials"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 endpoint = "YOUR_ENDPOINT:50051"2122type auth struct {23token string24}2526func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {27return map[string]string{28"x-token": a.token,29}, nil30}3132func (a *auth) RequireTransportSecurity() bool {33return false34}3536func main() {37/*38* IMPORTANT NOTES FOR DOCUMENTATION:39* 1. The DelegateResource method allows an account to delegate bandwidth or energy to another account.40* 2. The delegator retains ownership of the resources but allows another account to use them.41* 3. The delegation can be for either bandwidth (NET) or energy (CPU) resources.42* 4. The delegation can be locked for a specified period (minimum 3 days).43* 5. The owner account must have sufficient resources to delegate.44*45* PREREQUISITE:46* Before using DelegateResource, you must first freeze TRX for resources using FreezeBalanceV2.47* You can only delegate resources that you've previously frozen, and the delegation amount48* must be less than or equal to your available frozen resources of the specified type.49* Example:50* // First freeze TRX for bandwidth51* conn.FreezeBalanceV2(from, delegateBalance, core.ResourceCode_BANDWIDTH)52* // Then delegate a portion of those frozen resources53* conn.DelegateResource(from, to, core.ResourceCode_BANDWIDTH, delegateBalance, lock, lockPeriod)54*/55opts := []grpc.DialOption{56grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),57grpc.WithPerRPCCredentials(&auth{token}),58}59conn := client.NewGrpcClient(endpoint)60if err := conn.Start(opts...); err != nil {61panic(err)62}63defer conn.Conn.Close()6465from := "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g"66to := "TFgY1uN8buRxAtV2r6Zy5sG3ACko6pJT1y"67delegateBalance := int64(1000000)68lockPeriod := int64(3)69lock := false70resource := core.ResourceCode_BANDWIDTH // For bandwidth delegation71// resource := core.ResourceCode_ENERGY // For energy delegation7273fmt.Println("Creating resource delegation transaction...")7475// NOTE: This will fail if the owner address doesn't have enough frozen bandwidth resources.76// You must first freeze TRX for bandwidth using FreezeBalanceV2 before delegating.7778tx, err := conn.DelegateResource(79from,80to,81resource,82delegateBalance,83lock,84lockPeriod,85)8687if err != nil {88fmt.Printf("Error creating resource delegation transaction: %v\n", err)89return90}9192fmt.Println("Resource delegation transaction created successfully. Transaction details:")93jsonData, _ := json.MarshalIndent(tx, "", " ")94fmt.Println(string(jsonData))9596fmt.Println("\nBroadcasting transaction to the TRON network...")97result, err := conn.Broadcast(tx.Transaction)98if err != nil {99fmt.Printf("Error broadcasting transaction: %v\n", err)100return101}102103if !result.GetResult() {104fmt.Printf("Broadcast failed: %s\n", result.GetMessage())105return106}107108fmt.Println("Resource delegation successful! Result:")109resultJSON, _ := json.MarshalIndent(result, "", " ")110fmt.Println(string(resultJSON))111}