Examples

Practical examples for common TRON blockchain operations using GoTRON SDK.

Monitor Account Balance

Watch an account for balance changes:

package main

import (
    "fmt"
    "log"
    "time"

    "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()

    address := "TRX_ADDRESS"
    var lastBalance int64

    for {
        acc, err := conn.GetAccount(address)
        if err != nil {
            log.Printf("Error: %v", err)
            continue
        }

        if acc.Balance != lastBalance {
            fmt.Printf("Balance changed: %d -> %d SUN\n", lastBalance, acc.Balance)
            lastBalance = acc.Balance
        }

        time.Sleep(3 * time.Second)
    }
}

Batch TRC20 Transfers

Send tokens to multiple recipients using goroutines:

package main

import (
    "fmt"
    "log"
    "math/big"
    "sync"

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

type Transfer struct {
    To     string
    Amount *big.Int
}

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

    contract := "TOKEN_CONTRACT"
    from := "SENDER_ADDRESS"
    feeLimit := int64(300000)

    transfers := []Transfer{
        {To: "ADDR_1", Amount: big.NewInt(1000)},
        {To: "ADDR_2", Amount: big.NewInt(2000)},
        {To: "ADDR_3", Amount: big.NewInt(3000)},
    }

    var wg sync.WaitGroup
    for _, t := range transfers {
        wg.Add(1)
        go func(t Transfer) {
            defer wg.Done()
            tx, err := conn.TRC20Send(from, t.To, contract, t.Amount, feeLimit)
            if err != nil {
                log.Printf("Failed to send to %s: %v", t.To, err)
                return
            }
            fmt.Printf("Sent %s tokens to %s: %s\n", t.Amount, t.To, tx.GetTxid())
        }(t)
    }
    wg.Wait()
}

Check Energy Cost Before Transaction

Estimate energy consumption before sending a transaction:

resource, err := conn.GetAccountResource("YOUR_ADDRESS")
if err != nil {
    log.Fatal(err)
}

fmt.Printf("Energy: %d / %d\n",
    resource.GetEnergyUsed(),
    resource.GetEnergyLimit(),
)
fmt.Printf("Bandwidth: %d / %d\n",
    resource.GetFreeNetUsed(),
    resource.GetFreeNetLimit(),
)

CLI Examples

Export Account Activity

# Check account details
tronctl account info TRX_ADDRESS

# Get recent transactions
tronctl account transactions TRX_ADDRESS --limit 20

Token Operations via CLI

# Check TRC20 balance
tronctl trc20 balance USDT_CONTRACT HOLDER_ADDRESS

# Transfer TRC20 tokens
tronctl trc20 transfer \
  --contract USDT_CONTRACT \
  --from SENDER \
  --to RECIPIENT \
  --amount 100

Staking via CLI

# Stake for energy
tronctl stake --from ADDRESS --amount 1000 --resource ENERGY

# Vote for SR
tronctl vote --from ADDRESS --witness SR_ADDRESS --count 1000

# Check rewards
tronctl rewards ADDRESS

Next Steps