SDK Usage

The GoTRON SDK provides a clean, idiomatic Go API for interacting with the TRON blockchain via gRPC.

Connecting to a Node

package main

import (
    "fmt"
    "log"

    "github.com/fbsobreira/gotron-sdk/pkg/client"
)

func main() {
    conn := client.NewGrpcClient("grpc.trongrid.io:50051")
    if err := conn.Start(); err != nil {
        log.Fatal(err)
    }
    defer conn.Stop()
}

Get Account Balance

acc, err := conn.GetAccount("TRX_ADDRESS")
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Balance: %d SUN\n", acc.Balance)

Transfer TRX

tx, err := conn.Transfer(
    "SENDER_ADDRESS",
    "RECIPIENT_ADDRESS",
    1000000, // amount in SUN (1 TRX = 1,000,000 SUN)
)
if err != nil {
    log.Fatal(err)
}

TRC20 Token Operations

Get Token Balance

balance, err := conn.TRC20ContractBalance(
    "HOLDER_ADDRESS",
    "TOKEN_CONTRACT_ADDRESS",
)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Token balance: %s\n", balance.String())

Transfer Tokens

tx, err := conn.TRC20Send(
    "SENDER_ADDRESS",
    "RECIPIENT_ADDRESS",
    "TOKEN_CONTRACT_ADDRESS",
    big.NewInt(1000),
    300000, // fee limit in SUN
)

Resource Management

Freeze TRX for Energy

tx, err := conn.FreezeBalance(
    "OWNER_ADDRESS",
    "RECEIVER_ADDRESS",
    core.ResourceCode_ENERGY,
    1000000000, // amount in SUN
)

Signing Transactions

With Keystore

import "github.com/fbsobreira/gotron-sdk/pkg/keystore"

ks := keystore.NewKeyStore(keystorePath)
account := ks.Accounts()[0]

signedTx, err := ks.SignTx(account, tx)
if err != nil {
    log.Fatal(err)
}

// Broadcast
result, err := conn.Broadcast(signedTx)

With Ledger Hardware Wallet

import "github.com/fbsobreira/gotron-sdk/pkg/ledger"

signedTx, err := ledger.SignTx(txBytes)

Next Steps