> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dune.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tron Token Transfers

> Curated and enriched fungible token transfer activity on the Tron blockchain.

export const TableSample = ({tableName, tableSchema}) => <>
    <div className="hidden dark:block">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}&darkMode=true`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
    <div className="dark:hidden">
      <iframe src={`https://dune.com/embeds/3419983/5785629?table_schema_t6f0df=${tableSchema}&table_name_t6f0df=${tableName}`} style={{
  width: '100%',
  height: '500px',
  border: 'none',
  marginTop: '10px'
}} />
    </div>
  </>;

The `tokens_tron.transfers` table contains curated fungible token transfer activity for Tron assets indexed on Dune. This dataset encompasses:

* TRC20 token transfers decoded from `Transfer` event logs
* Native TRX transfers from successful transactions with non-zero value

<Info>
  The table aims to capture standard Tron fungible token movement. Some TRC20 tokens use non-standard transfer patterns that may not appear here. For raw TRC20 event logs without enrichment, see [TRC20 Transfers](/data-catalog/tron/tokens/transfers/erc20-transfers).
</Info>

### Utility

The Tron transfers table provides a consistent view of fungible token movement on Tron, enabling you to:

* Track token flows between wallets, contracts, and exchanges
* Analyze transfer volume by token, address, and day
* Monitor large stablecoin movements such as USDT
* Build wallet activity feeds with both base58 and hex address columns

### Methodology

The `tokens_tron.transfers` table is built from two source paths:

* **TRC20 transfers** — decoded from `erc20_tron.evt_Transfer` and joined to `tron.transactions` for transaction context
* **Native TRX transfers** — successful `tron.transactions` rows with `value > 0`

Each row is enriched with token symbol and decimals from `tokens.erc20`, then priced from `prices_external.hour`. The table exposes both `VARBINARY` (0x) and `VARCHAR` (base58) representations for addresses and transaction hashes via the `*_varchar` columns.

<Note>
  In `tokens_multichain.transfers`, Tron rows use the base58 `*_varchar` address columns from this table rather than 0x hex casts from the EVM union.
</Note>

### Pricing Methodology

The `price_usd` and `amount_usd` columns come from Dune's external hourly price feed (`prices_external.hour`). If a token has a price for that hour, the transfer row gets a USD price and value. If not, both columns stay `NULL`.

For tokens outside Dune's trusted token set, very large computed USD values are set to `NULL` to avoid inflated outlier prices.

For more details on Dune's pricing methodology, see the [Prices documentation](/data-catalog/curated/prices/overview).

## Table Schema

| Column | Type | Description |
| - | - | - |
| `unique_key` | `VARCHAR` | Surrogate key to identify a unique transfer row |
| `blockchain` | `VARCHAR` | Blockchain identifier (`tron`) |
| `block_month` | `DATE` | Month bucket derived from `block_time` (partition key) |
| `block_date` | `DATE` | Block date |
| `block_time` | `TIMESTAMP` | Block timestamp |
| `block_number` | `BIGINT` | Block number |
| `tx_hash` | `VARBINARY` | Transaction hash (0x) |
| `evt_index` | `BIGINT` | Log event index for TRC20 transfers; `NULL` for native TRX |
| `trace_address` | `ARRAY(BIGINT)` | Trace address; currently `NULL` for Tron transfers |
| `token_standard` | `VARCHAR` | Token standard (`trc20` or `native`) |
| `tx_from` | `VARBINARY` | Transaction sender (0x) |
| `tx_to` | `VARBINARY` | Transaction receiver (0x) |
| `tx_index` | `BIGINT` | Transaction index within the block |
| `from` | `VARBINARY` | Transfer sender (0x) |
| `to` | `VARBINARY` | Transfer receiver (0x) |
| `contract_address` | `VARBINARY` | Token contract address for TRC20; native TRX token address for TRX rows (0x) |
| `tx_hash_varchar` | `VARCHAR` | Transaction hash (base58) |
| `contract_address_varchar` | `VARCHAR` | Token contract address (base58) |
| `from_varchar` | `VARCHAR` | Transfer sender (base58) |
| `to_varchar` | `VARCHAR` | Transfer receiver (base58) |
| `tx_from_varchar` | `VARCHAR` | Transaction sender (base58) |
| `tx_to_varchar` | `VARCHAR` | Transaction receiver (base58) |
| `symbol` | `VARCHAR` | Token symbol |
| `amount_raw` | `UINT256` | Raw transfer amount before decimal adjustment |
| `amount` | `DOUBLE` | Transfer amount in display units |
| `price_usd` | `DOUBLE` | Hourly USD price used to calculate `amount_usd` |
| `amount_usd` | `DOUBLE` | USD value of the transfer |
| `_updated_at` | `TIMESTAMP` | Timestamp when this row was last written |

<TableSample tableSchema="tokens_tron" tableName="transfers" />

## Query Performance

**Partition key:** `block_month`

Always include `block_date` or `block_month` in your `WHERE` clause for partition pruning.

```sql theme={null}
-- ✅ Good: date filter on partition column
SELECT *
FROM tokens_tron.transfers
WHERE block_date >= CURRENT_DATE - INTERVAL '7' DAY
  AND contract_address_varchar = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t' -- USDT

-- ❌ Slow: no partition filters
SELECT *
FROM tokens_tron.transfers
WHERE from_varchar = 'T...'
```

## Sample Queries

**Query recent token transfers for a specific Tron address**

This query returns the most recent incoming and outgoing transfers for a wallet using base58 address columns:

```sql theme={null}
SELECT
    block_time,
    token_standard,
    symbol,
    CASE
        WHEN from_varchar = 'TYPF789fwTYPSbkahd51QbPkY3N3n9XHm' THEN 'Outgoing'
        WHEN to_varchar = 'TYPF789fwTYPSbkahd51QbPkY3N3n9XHm' THEN 'Incoming'
    END AS direction,
    amount,
    amount_usd,
    contract_address_varchar
FROM tokens_tron.transfers
WHERE (
        from_varchar = 'TYPF789fwTYPSbkahd51QbPkY3N3n9XHm'
        OR to_varchar = 'TYPF789fwTYPSbkahd51QbPkY3N3n9XHm'
    )
    AND block_date >= CURRENT_DATE - INTERVAL '30' DAY
ORDER BY block_time DESC
LIMIT 100
```

**Calculate daily USDT transfer volume on Tron**

This query aggregates daily transfer activity for USDT, the dominant Tron token:

```sql theme={null}
SELECT
    block_date,
    COUNT(*) AS num_transfers,
    COUNT(DISTINCT from_varchar) AS unique_senders,
    SUM(amount_usd) AS transfer_volume_usd
FROM tokens_tron.transfers
WHERE contract_address_varchar = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'
    AND block_date >= CURRENT_DATE - INTERVAL '30' DAY
GROUP BY 1
ORDER BY 1 DESC
```

**Split TRC20 and native TRX transfer activity**

This query compares transfer counts and volume by token standard:

```sql theme={null}
SELECT
    block_date,
    token_standard,
    COUNT(*) AS num_transfers,
    SUM(amount_usd) AS transfer_volume_usd
FROM tokens_tron.transfers
WHERE block_date >= CURRENT_DATE - INTERVAL '30' DAY
GROUP BY 1, 2
ORDER BY 1 DESC, 2
```

## Related Tables

* [TRC20 Transfers](/data-catalog/tron/tokens/transfers/erc20-transfers) — raw TRC20 `Transfer` event logs
* [USDT on Tron](/data-catalog/tron/tether) — decoded Tether contract events
* [Stablecoin Transfers (Tron)](/data-catalog/curated/stablecoins/transfers/stablecoins-tron-transfers) — stablecoin-only subset with issuer metadata


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.