8
"github.com/fbsobreira/gotron-sdk/pkg/client"9
"google.golang.org/grpc"10
"google.golang.org/grpc/credentials"19
var punto final = "TU_PUNTO_DE_ACceso:50051"21
tipo autenticación estructura {25
func (a *auth) GetRequestMetadata(ctx contexto.Context, uri ...cadena) (mapa[cadena]cadena, error) {26
volver mapa[cadena]cadena{31
func (a *auth) RequireTransportSecurity() bool {37
opts := []grpc.DialOption{38
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),39
grpc.WithPerRPCCredentials(&auth{token}),41
conn := cliente.NewGrpcClient(punto de conexión)42
if err := conn.Start(opts...); err != nil {45
aplazar conn.Conn.Cerrar()47
from := "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g"48
exchangeID := int64(123) 50
fmt.Printf("Verifying exchange ID %d...\n", exchangeID)51
exchange, err := conn.ExchangeByID(exchangeID)53
fmt.Printf("Error: The specified exchange does not exist: %v\n", err)57
creatorAddress := string(exchange.CreatorAddress)58
fmt.Printf("Exchange creator: %s\n", creatorAddress)59
if creatorAddress != from {60
fmt.Printf("Error: Only the exchange creator (%s) can withdraw liquidity\n", creatorAddress)64
firstTokenID := string(exchange.FirstTokenId)65
secondTokenID := string(exchange.SecondTokenId)66
fmt.Printf("Exchange %d contains tokens: %s and %s\n", 67
exchangeID, firstTokenID, secondTokenID)68
fmt.Printf("Current liquidity: %d %s and %d %s\n",69
exchange.FirstTokenBalance, firstTokenID,70
exchange.SecondTokenBalance, secondTokenID)72
tokenID := firstTokenID73
amountToken := int64(1000000)75
if tokenID != firstTokenID && tokenID != secondTokenID {76
fmt.Printf("Error: Token %s is not in exchange %d\n", tokenID, exchangeID)80
var availableAmount int6481
if tokenID == firstTokenID {82
availableAmount = exchange.FirstTokenBalance84
availableAmount = exchange.SecondTokenBalance87
if amountToken > availableAmount {88
fmt.Printf("Error: Insufficient liquidity. Requested: %d, Available: %d\n", 89
amountToken, availableAmount)93
var otherTokenAmount int6494
if tokenID == firstTokenID {95
otherTokenAmount = amountToken * exchange.SecondTokenBalance / exchange.FirstTokenBalance96
fmt.Printf("Withdrawing %d %s will also withdraw approximately %d %s\n", 97
amountToken, firstTokenID, otherTokenAmount, secondTokenID)99
otherTokenAmount = amountToken * exchange.FirstTokenBalance / exchange.SecondTokenBalance100
fmt.Printf("Withdrawing %d %s will also withdraw approximately %d %s\n", 101
amountToken, secondTokenID, otherTokenAmount, firstTokenID)104
fmt.Println("Creating exchange withdrawal transaction...")106
tx, err := conn.ExchangeWithdraw(114
fmt.Printf("Error creating withdrawal transaction: %v\n", err)118
fmt.Println("Withdrawal transaction created successfully. Transaction details:")119
jsonData, _ := json.MarshalIndent(tx, "", " ")120
fmt.Println(string(jsonData))123
fmt.Println("\nBroadcasting transaction to the TRON network...")124
result, err := conn.Broadcast(tx.Transaction)126
fmt.Printf("Error broadcasting transaction: %v\n", err)130
if !result.GetResult() {131
fmt.Printf("Broadcast failed: %s\n", result.GetMessage())135
fmt.Println("Liquidity withdrawal executed successfully! Result:")136
resultJSON, _ := json.MarshalIndent(result, "", " ")137
fmt.Println(cadena(resultJSON))
8
"github.com/fbsobreira/gotron-sdk/pkg/client"9
"google.golang.org/grpc"10
"google.golang.org/grpc/credentials"19
var punto final = "TU_PUNTO_DE_ACceso:50051"21
tipo autenticación estructura {25
func (a *auth) GetRequestMetadata(ctx contexto.Context, uri ...cadena) (mapa[cadena]cadena, error) {26
volver mapa[cadena]cadena{31
func (a *auth) RequireTransportSecurity() bool {37
opts := []grpc.DialOption{38
grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{})),39
grpc.WithPerRPCCredentials(&auth{token}),41
conn := cliente.NewGrpcClient(punto de conexión)42
if err := conn.Start(opts...); err != nil {45
aplazar conn.Conn.Cerrar()47
from := "TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g"48
exchangeID := int64(123) 50
fmt.Printf("Verifying exchange ID %d...\n", exchangeID)51
exchange, err := conn.ExchangeByID(exchangeID)53
fmt.Printf("Error: The specified exchange does not exist: %v\n", err)57
creatorAddress := string(exchange.CreatorAddress)58
fmt.Printf("Exchange creator: %s\n", creatorAddress)59
if creatorAddress != from {60
fmt.Printf("Error: Only the exchange creator (%s) can withdraw liquidity\n", creatorAddress)64
firstTokenID := string(exchange.FirstTokenId)65
secondTokenID := string(exchange.SecondTokenId)66
fmt.Printf("Exchange %d contains tokens: %s and %s\n", 67
exchangeID, firstTokenID, secondTokenID)68
fmt.Printf("Current liquidity: %d %s and %d %s\n",69
exchange.FirstTokenBalance, firstTokenID,70
exchange.SecondTokenBalance, secondTokenID)72
tokenID := firstTokenID73
amountToken := int64(1000000)75
if tokenID != firstTokenID && tokenID != secondTokenID {76
fmt.Printf("Error: Token %s is not in exchange %d\n", tokenID, exchangeID)80
var availableAmount int6481
if tokenID == firstTokenID {82
availableAmount = exchange.FirstTokenBalance84
availableAmount = exchange.SecondTokenBalance87
if amountToken > availableAmount {88
fmt.Printf("Error: Insufficient liquidity. Requested: %d, Available: %d\n", 89
amountToken, availableAmount)93
var otherTokenAmount int6494
if tokenID == firstTokenID {95
otherTokenAmount = amountToken * exchange.SecondTokenBalance / exchange.FirstTokenBalance96
fmt.Printf("Withdrawing %d %s will also withdraw approximately %d %s\n", 97
amountToken, firstTokenID, otherTokenAmount, secondTokenID)99
otherTokenAmount = amountToken * exchange.FirstTokenBalance / exchange.SecondTokenBalance100
fmt.Printf("Withdrawing %d %s will also withdraw approximately %d %s\n", 101
amountToken, secondTokenID, otherTokenAmount, firstTokenID)104
fmt.Println("Creating exchange withdrawal transaction...")106
tx, err := conn.ExchangeWithdraw(114
fmt.Printf("Error creating withdrawal transaction: %v\n", err)118
fmt.Println("Withdrawal transaction created successfully. Transaction details:")119
jsonData, _ := json.MarshalIndent(tx, "", " ")120
fmt.Println(string(jsonData))123
fmt.Println("\nBroadcasting transaction to the TRON network...")124
result, err := conn.Broadcast(tx.Transaction)126
fmt.Printf("Error broadcasting transaction: %v\n", err)130
if !result.GetResult() {131
fmt.Printf("Broadcast failed: %s\n", result.GetMessage())135
fmt.Println("Liquidity withdrawal executed successfully! Result:")136
resultJSON, _ := json.MarshalIndent(result, "", " ")137
fmt.Println(cadena(resultJSON))