Skip to main content
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
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.

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.
In tokens_multichain.transfers, Tron rows use the base58 *_varchar address columns from this table rather than 0x hex casts from the EVM union.

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.

Table Schema

ColumnTypeDescription
unique_keyVARCHARSurrogate key to identify a unique transfer row
blockchainVARCHARBlockchain identifier (tron)
block_monthDATEMonth bucket derived from block_time (partition key)
block_dateDATEBlock date
block_timeTIMESTAMPBlock timestamp
block_numberBIGINTBlock number
tx_hashVARBINARYTransaction hash (0x)
evt_indexBIGINTLog event index for TRC20 transfers; NULL for native TRX
trace_addressARRAY(BIGINT)Trace address; currently NULL for Tron transfers
token_standardVARCHARToken standard (trc20 or native)
tx_fromVARBINARYTransaction sender (0x)
tx_toVARBINARYTransaction receiver (0x)
tx_indexBIGINTTransaction index within the block
fromVARBINARYTransfer sender (0x)
toVARBINARYTransfer receiver (0x)
contract_addressVARBINARYToken contract address for TRC20; native TRX token address for TRX rows (0x)
tx_hash_varcharVARCHARTransaction hash (base58)
contract_address_varcharVARCHARToken contract address (base58)
from_varcharVARCHARTransfer sender (base58)
to_varcharVARCHARTransfer receiver (base58)
tx_from_varcharVARCHARTransaction sender (base58)
tx_to_varcharVARCHARTransaction receiver (base58)
symbolVARCHARToken symbol
amount_rawUINT256Raw transfer amount before decimal adjustment
amountDOUBLETransfer amount in display units
price_usdDOUBLEHourly USD price used to calculate amount_usd
amount_usdDOUBLEUSD value of the transfer
_updated_atTIMESTAMPTimestamp when this row was last written

Query Performance

Partition key: block_month Always include block_date or block_month in your WHERE clause for partition pruning.
-- ✅ 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:
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:
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:
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