FreezeBalanceV2 gRPC Method
매개변수
출처:
문자열
필수
로딩 중...
resource
문자열
필수
로딩 중...
frozenBalance
정수
필수
로딩 중...
반품
거래
객체
로딩 중...
원시 데이터
객체
로딩 중...
ref_block_bytes
문자열
로딩 중...
ref_block_num
정수
로딩 중...
ref_block_hash
문자열
로딩 중...
만료
정수
로딩 중...
auths
배열
로딩 중...
데이터
문자열
로딩 중...
계약
배열
로딩 중...
유형
문자열
로딩 중...
매개변수
객체
로딩 중...
값
문자열
로딩 중...
type_url
문자열
로딩 중...
provider
문자열
로딩 중...
ContractName
문자열
로딩 중...
Permission_id
정수
로딩 중...
scripts
문자열
로딩 중...
타임스탬프
정수
로딩 중...
수수료 한도
정수
로딩 중...
서명
배열
로딩 중...
ret
배열
로딩 중...
수수료
정수
로딩 중...
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
배열
로딩 중...
결과
객체
로딩 중...
결과
부울
로딩 중...
코드
문자열
로딩 중...
메시지
문자열
로딩 중...
에너지_사용량
정수
로딩 중...
로그
배열
로딩 중...
주소
문자열
로딩 중...
주제
배열
로딩 중...
데이터
문자열
로딩 중...
internal_transactions
배열
로딩 중...
해시
문자열
로딩 중...
caller_address
문자열
로딩 중...
transferTo_address
문자열
로딩 중...
callValueInfo
배열
로딩 중...
callValue
정수
로딩 중...
tokenId
문자열
로딩 중...
note
문자열
로딩 중...
rejected
부울
로딩 중...
extra
문자열
로딩 중...
energy_penalty
정수
로딩 중...
요청
1패키지 main23가져오기 (4"문맥"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.grpc"11"google.golang.grpc"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"2122유형 auth struct {23token string24}2526func (a *auth) GetRequestMetadata(ctx 컨텍스트.Context, uri ...문자열) (map[문자열]문자열, error) {27return map[string]string{28"x-token": a.token,29}, nil30}3132func (a *auth) RequireTransportSecurity() bool {33return false34}3536// Convert SUN to TRX for display (1 TRX = 1,000,000 SUN)37func sunToTrx(sun int64) float64 {38return float64(sun) / 1000000.039}4041func main() {42/*43* 1. The FreezeBalanceV2 method is the upgraded version of FreezeBalance for obtaining resources.44* 2. Unlike V1, frozen TRX using V2 can be unfrozen at any time without a waiting period.45* 3. V2 does not support delegating resources to other accounts directly (use DelegateResource instead).46* 4. The account must have sufficient TRX balance for the freeze operation.47* 5. The transaction must be signed before broadcasting to the network.48* 6. FreezeBalanceV2 is the recommended method for obtaining resources in newer Tron versions.49*/5051opts := []grpc.DialOption{52grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),53grpc.WithPerRPCCredentials(&auth{token}),54}55conn := client.NewGrpcClient(endpoint)56if err := conn.Start(opts...); err != nil {57panic(err)58}59defer conn.Conn.Close()6061from := "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g" // Address that is freezing TRX62resource := core.ResourceCode_BANDWIDTH // Resource type (BANDWIDTH or ENERGY)63frozenBalance := int64(10000000) // Amount of TRX to freeze in SUN (10 TRX)6465resourceName := "BANDWIDTH"66if resource == core.ResourceCode_ENERGY {67resourceName = "ENERGY"68}6970fmt.Printf("Checking balance for account %s...\n", from)71account, err := conn.GetAccount(from)72if err != nil {73fmt.Printf("Error getting account: %v\n", err)74반환75}7677currentBalance := account.GetBalance()78fmt.Printf("Current balance: %d SUN (%.6f TRX)\n", currentBalance, sunToTrx(currentBalance))7980if currentBalance < frozenBalance {81fmt.Printf("Error: Insufficient balance. Have: %d SUN (%.6f TRX), Need: %d SUN (%.6f TRX)\n",82currentBalance, sunToTrx(currentBalance), frozenBalance, sunToTrx(frozenBalance))83if currentBalance > 1000000 { // At least 1 TRX available84suggestedAmount := (currentBalance / 1000000) * 1000000 // Round down to nearest TRX85fmt.Printf("\nAdjusting freeze amount to %d SUN (%.0f TRX) based on available balance\n",86suggestedAmount, sunToTrx(suggestedAmount))87frozenBalance = suggestedAmount88} else {89fmt.Println("\nYour balance is too low to freeze any meaningful amount of TRX.")90fmt.Println("Please add more TRX to your account and try again.")91반환92}93}9495fmt.Printf("Freezing %d SUN (%.6f TRX) to obtain %s resources\n",96frozenBalance, sunToTrx(frozenBalance), resourceName)9798fmt.Println("Creating freeze balance V2 transaction...")99100tx, err := conn.FreezeBalanceV2(101from, // From address102resource, // Resource type (BANDWIDTH or ENERGY)103frozenBalance, // Amount to freeze in SUN104)105106if err != nil {107fmt.Printf("Error creating freeze transaction: %v\n", err)108반환109}110111fmt.Println("Freeze transaction created successfully. Transaction details:")112jsonData, _ := json.MarshalIndent(tx, "", " ")113fmt.Println(string(jsonData))114115// Broadcast the transaction116fmt.Println("\nBroadcasting transaction to the TRON network...")117result, err := conn.Broadcast(tx.Transaction)118if err != nil {119fmt.Printf("Error broadcasting transaction: %v\n", err)120반환121}122123if !result.GetResult() {124fmt.Printf("Broadcast failed: %s\n", result.GetMessage())125반환126}127128fmt.Println("TRX frozen successfully using V2! Result:")129resultJSON, _ := json.MarshalIndent(result, "", " ")130fmt.Println(string(resultJSON))131}
1패키지 main23가져오기 (4"문맥"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.grpc"11"google.golang.grpc"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"2122유형 auth struct {23token string24}2526func (a *auth) GetRequestMetadata(ctx 컨텍스트.Context, uri ...문자열) (map[문자열]문자열, error) {27return map[string]string{28"x-token": a.token,29}, nil30}3132func (a *auth) RequireTransportSecurity() bool {33return false34}3536// Convert SUN to TRX for display (1 TRX = 1,000,000 SUN)37func sunToTrx(sun int64) float64 {38return float64(sun) / 1000000.039}4041func main() {42/*43* 1. The FreezeBalanceV2 method is the upgraded version of FreezeBalance for obtaining resources.44* 2. Unlike V1, frozen TRX using V2 can be unfrozen at any time without a waiting period.45* 3. V2 does not support delegating resources to other accounts directly (use DelegateResource instead).46* 4. The account must have sufficient TRX balance for the freeze operation.47* 5. The transaction must be signed before broadcasting to the network.48* 6. FreezeBalanceV2 is the recommended method for obtaining resources in newer Tron versions.49*/5051opts := []grpc.DialOption{52grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),53grpc.WithPerRPCCredentials(&auth{token}),54}55conn := client.NewGrpcClient(endpoint)56if err := conn.Start(opts...); err != nil {57panic(err)58}59defer conn.Conn.Close()6061from := "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g" // Address that is freezing TRX62resource := core.ResourceCode_BANDWIDTH // Resource type (BANDWIDTH or ENERGY)63frozenBalance := int64(10000000) // Amount of TRX to freeze in SUN (10 TRX)6465resourceName := "BANDWIDTH"66if resource == core.ResourceCode_ENERGY {67resourceName = "ENERGY"68}6970fmt.Printf("Checking balance for account %s...\n", from)71account, err := conn.GetAccount(from)72if err != nil {73fmt.Printf("Error getting account: %v\n", err)74반환75}7677currentBalance := account.GetBalance()78fmt.Printf("Current balance: %d SUN (%.6f TRX)\n", currentBalance, sunToTrx(currentBalance))7980if currentBalance < frozenBalance {81fmt.Printf("Error: Insufficient balance. Have: %d SUN (%.6f TRX), Need: %d SUN (%.6f TRX)\n",82currentBalance, sunToTrx(currentBalance), frozenBalance, sunToTrx(frozenBalance))83if currentBalance > 1000000 { // At least 1 TRX available84suggestedAmount := (currentBalance / 1000000) * 1000000 // Round down to nearest TRX85fmt.Printf("\nAdjusting freeze amount to %d SUN (%.0f TRX) based on available balance\n",86suggestedAmount, sunToTrx(suggestedAmount))87frozenBalance = suggestedAmount88} else {89fmt.Println("\nYour balance is too low to freeze any meaningful amount of TRX.")90fmt.Println("Please add more TRX to your account and try again.")91반환92}93}9495fmt.Printf("Freezing %d SUN (%.6f TRX) to obtain %s resources\n",96frozenBalance, sunToTrx(frozenBalance), resourceName)9798fmt.Println("Creating freeze balance V2 transaction...")99100tx, err := conn.FreezeBalanceV2(101from, // From address102resource, // Resource type (BANDWIDTH or ENERGY)103frozenBalance, // Amount to freeze in SUN104)105106if err != nil {107fmt.Printf("Error creating freeze transaction: %v\n", err)108반환109}110111fmt.Println("Freeze transaction created successfully. Transaction details:")112jsonData, _ := json.MarshalIndent(tx, "", " ")113fmt.Println(string(jsonData))114115// Broadcast the transaction116fmt.Println("\nBroadcasting transaction to the TRON network...")117result, err := conn.Broadcast(tx.Transaction)118if err != nil {119fmt.Printf("Error broadcasting transaction: %v\n", err)120반환121}122123if !result.GetResult() {124fmt.Printf("Broadcast failed: %s\n", result.GetMessage())125반환126}127128fmt.Println("TRX frozen successfully using V2! Result:")129resultJSON, _ := json.MarshalIndent(result, "", " ")130fmt.Println(string(resultJSON))131}