Skip to main content

Tron Development

Index Tron blockchain data including transactions, smart contract events, and TRC-20/TRC-721 token transfers.

Getting Started

1

Install Dependencies

npm install @subsquid/tron-processor @subsquid/typeorm-store
2

Configure Processor

import \{ TronBatchProcessor \} from '@subsquid/tron-processor'

const processor = new TronBatchProcessor()
  .setGateway('https://v2.archive.subsquid.io/network/tron-mainnet')
  .setRpcEndpoint('https://api.trongrid.io')
3

Add Data Sources

Configure what data to index from the Tron blockchain

Key Features

TRC-20 Tokens

Index TRC-20 token transfers and balances

Smart Contracts

Monitor smart contract interactions and events

TRX Transfers

Track native TRX transfers and transactions

Resource Model

Handle Tron’s unique energy and bandwidth system

Basic Processor Setup

import \{ TronBatchProcessor \} from '@subsquid/tron-processor'
import \{ TypeormDatabase \} from '@subsquid/typeorm-store'

const processor = new TronBatchProcessor()
  .setGateway('https://v2.archive.subsquid.io/network/tron-mainnet')
  .setRpcEndpoint('https://api.trongrid.io')
  .addTransaction({
    type: ['TransferContract', 'TriggerSmartContract']
  })
  .setFields({
    transaction: {
      hash: true,
      fee: true,
      energyUsage: true,
      netUsage: true
    },
    block: {
      timestamp: true,
      number: true
    }
  })

const db = new TypeormDatabase()

processor.run(db, async (ctx) => {
  for (let block of ctx.blocks) {
    for (let transaction of block.transactions) {
      // Process Tron transactions
console.log(`TX: "$\{transaction.hash\}`)"
    }
  }
})

Common Use Cases

TRC-20 Token Indexing

processor.addLog({
  address: ['TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'], // USDT on Tron
  topic0: ['0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'] // Transfer event
})

Smart Contract Events

processor.addLog({
  address: ['contract-address'],
  topic0: ['event-signature']
})

Native TRX Transfers

processor.addTransaction({
  type: ['TransferContract']
})

Data Types

Transaction Types

  • TransferContract - Native TRX transfers
  • TriggerSmartContract - Smart contract calls
  • TransferAssetContract - TRC-10 token transfers
  • CreateSmartContract - Contract deployments

Resource Management

Tron uses energy and bandwidth for transaction execution:
  • Energy: Used for smart contract execution
  • Bandwidth: Used for transaction data storage
  • Frozen TRX: Provides energy and bandwidth

Performance Optimization

Selective Filtering

Filter by specific contract addresses and event types

Batch Processing

Process multiple transactions in batches

Resource Monitoring

Monitor energy and bandwidth usage patterns

Efficient Queries

Optimize database queries for Tron data structures

Examples

Network Information

Mainnet

  • Gateway: https://v2.archive.subsquid.io/network/tron-mainnet
  • RPC: https://api.trongrid.io
  • Block Time: ~3 seconds
  • Finality: 19 confirmations

Testnet (Shasta)

  • Gateway: https://v2.archive.subsquid.io/network/tron-shasta
  • RPC: https://api.shasta.trongrid.io

Best Practices

  • Handle Tron’s unique address format (base58)
  • Monitor energy consumption for contract interactions
  • Implement proper error handling for failed transactions
  • Use appropriate block confirmation depths
  • Consider Tron’s resource freezing mechanism

Next Steps