跳轉到主要內容
TRON 約每 3 秒出一個區塊,支援高吞吐的交易和智能合約執行。TRON 使用獨特的資源模型(Energy 和 Bandwidth)和 Witness(超級代表)共識機制。 Schema 倉庫github.com/chainstream-io/streaming_protobuf/tron

Message Types 總覽

TRON Streams 提供以下訊息類型:
Message Type說明Topic
TradeEventsDEX 交易事件tron.dex.trades
TokenEventsToken 事件tron.tokens
BalanceEvents餘額變動事件tron.balances
DexPoolEvents流動性池事件tron.dex.pools
TransfersMessage轉帳訊息tron.v1.transfers.proto
CandlestickEventsK線資料tron.candlesticks

Block-Level Data

BlockHeader 核心欄位

欄位類型說明
Numberuint64區塊號
Hashbytes區塊雜湊
ParentHashbytes父區塊雜湊
TimestampTimestamp出塊時間
TxTrieRootbytes交易樹根
Versionuint32區塊版本

Witness(超級代表)資訊

欄位說明
AddressWitness 地址
IdWitness ID
Signature區塊簽名
TRON 使用 DPoS 共識機制,由 27 個超級代表(Witness)輪流出塊。

Transaction-Level Data

TransactionHeader

欄位類型說明
Hashbytes交易雜湊
Feeuint64交易費用
Indexuint32區塊內索引
ExpirationTimestamp過期時間
FeeLimituint64費用上限
Signatures[]bytes簽名列表
FeePayerbytes費用支付方

Result — 執行結果

欄位說明
Status執行狀態
Success是否成功
Message失敗時的錯誤訊息

Receipt — 資源消耗

欄位說明
EnergyUsageTotal總 Energy 消耗
EnergyFeeEnergy 費用
NetUsage頻寬消耗
NetFee頻寬費用

Contract

包含合約執行詳情:
欄位說明
Address合約地址
Type合約類型(TransferContract、TriggerSmartContract 等)
Parameters呼叫參數
InternalTransactions內部交易
Logs事件日誌
ExecutionTrace執行 Trace
WithdrawInfo獎勵提取資訊

Transfer Data

TransfersMessage 提供 TRON 鏈的轉帳資訊(Topic: tron.v1.transfers.proto)。

TransfersMessage 結構

message TransfersMessage {
  Chain Chain = 1;
  BlockHeader Header = 2;
  repeated Transfer Transfers = 3;
}

Transfer 結構

欄位類型說明
CallIndexuint64呼叫索引
LogIndexuint64日誌索引
Senderstring發送方地址
Receiverstring接收方地址
Amountstring轉帳金額
IdstringToken ID(NFT)
URIstringToken URI
CurrencyTokenInfoToken 資訊
Successbool是否成功
Indexuint32轉帳索引
TransactionHeaderTransactionHeader交易頭資訊

TokenInfo 結構

欄位類型說明
SmartContractstring合約地址
Delegatedbool是否委託
DelegatedTostring委託地址
ProtocolNamestring協議名稱
NamestringToken 名稱
SymbolstringToken 符號
Decimalsint32精度
HasURIbool是否有 URI
Fungiblebool是否同質化
AssetIdstring資產 ID(TRC-10)

TRON Token 標準

標準說明
TRC-10TRON 原生 Token,無需智能合約
TRC-20智能合約 Token(類似 ERC-20)
TRC-721NFT Token(類似 ERC-721)
TRC-10 是 TRON 獨有的原生 Token 標準,建立和轉帳更便宜,但功能不如 TRC-20 靈活。

DEX Data

TradeEvents 提供 DEX 交易資料(Topic: tron.dex.trades),使用通用的 TradeEvent 結構。

Trade 核心欄位

欄位說明
token_a_address / token_b_address交易對代幣地址
user_a_amount / user_b_amount使用者交易數量
pool_address池子地址
vault_a / vault_b池子 Vault 地址
vault_a_amount / vault_b_amountVault 數量

DApp 資訊

欄位說明
program_addressDEX 合約地址(如 SunSwap)
inner_program_address內部程式地址
chain鏈標識(CHAIN_TRON)

DexPoolEvent - 流動性池

欄位說明
type事件類型(INITIALIZE/INCREASE_LIQUIDITY/DECREASE_LIQUIDITY/SWAP)
address池子地址
token_a_address / token_b_address代幣地址
token_a_amount / token_b_amount代幣數量
lp_walletLP 錢包地址

TRON 鏈特性

Energy 和 Bandwidth 資源模型

不同於 EVM 的 Gas 模型,TRON 使用兩種資源:
資源說明取得方式
Energy計量智能合約執行消耗質押 TRX 或付費
Bandwidth (Net)計量交易資料大小消耗質押 TRX 或付費
Receipt 中分別體現兩種資源的用量和費用:
Receipt {
  EnergyUsageTotal: 50000    // 智能合約消耗
  EnergyFee: 0               // 如有質押則為 0
  NetUsage: 265              // 交易資料大小
  NetFee: 0                  // 如有質押則為 0
}

Witness 系統

特性說明
名稱Witness(超級代表)
數量27 個活躍超級代表
選舉持幣者投票選舉
出塊輪流出塊,約 3 秒/塊
BlockMessage 中包含 Witness 的地址、ID 和簽名。

預定義合約類型

TRON 為常見操作預定義了合約類型:
類型說明
TransferContractTRX 轉帳
TransferAssetContractTRC-10 轉帳
TriggerSmartContract呼叫智能合約
CreateSmartContract建立智能合約
FreezeBalanceV2Contract質押 TRX
UnfreezeBalanceV2Contract解除質押
DelegateResourceContract資源委託
WithdrawBalanceContract提取獎勵
透過 Contract 的 Type 欄位標識。

資源委託

使用者可以將 Energy 和 Bandwidth 委託給其他帳戶使用,這在 TRON 生態中常用於:
  • 降低使用者交易成本
  • DApp 為使用者代付資源

Topic → Message Type 映射表

TopicProto FileMessage Type說明
tron.dex.tradestrade_event.protoTradeEventsDEX 交易事件
tron.dex.trades.processedtrade_event.protoTradeEvents含 USD 價格、可疑標記
tron.tokenstoken_event.protoTokenEventsToken 事件
tron.tokens.processedtoken_event.protoTokenEvents含描述、圖片、社交連結
tron.balancesbalance_event.protoBalanceEvents餘額變動事件
tron.v1.transfers.prototron/transfers_message.protoTransfersMessageTRON 轉帳訊息
tron.v1.transfers.processed.prototron/transfers_message.protoTransfersMessage處理後的轉帳訊息
tron.dex.poolsdex_pool_event.protoDexPoolEvents流動性池事件
tron.candlestickscandlestick.protoCandlestickEventsK線資料

程式碼示例

Python 示例:消費 TRON DEX 交易

from kafka import KafkaConsumer
from common import trade_event_pb2  # 從 streaming_protobuf 倉庫取得

# 建立 consumer
consumer = KafkaConsumer(
    'tron.dex.trades',
    bootstrap_servers=['<your_broker_address>'],
    security_protocol='SASL_SSL',
    sasl_mechanism='SCRAM-SHA-512',
    sasl_plain_username='your_username',
    sasl_plain_password='your_password',
    auto_offset_reset='latest',
    enable_auto_commit=False,
    group_id='my-tron-consumer'
)

# 消費並解析訊息
for message in consumer:
    trade_events = trade_event_pb2.TradeEvents()
    trade_events.ParseFromString(message.value)
    
    for event in trade_events.events:
        print(f"Pool: {event.trade.pool_address}")
        print(f"Token A: {event.trade.token_a_address}")
        print(f"Token B: {event.trade.token_b_address}")
        print(f"Amount A: {event.trade.user_a_amount}")
        print(f"Amount B: {event.trade.user_b_amount}")
        print(f"Block: {event.block.height}")
        print(f"DEX: {event.d_app.program_address}")
        print("---")

監控 TRC-20 Token 事件

from kafka import KafkaConsumer
from common import token_event_pb2

consumer = KafkaConsumer(
    'tron.tokens',
    bootstrap_servers=['<your_broker_address>'],
    security_protocol='SASL_SSL',
    sasl_mechanism='SCRAM-SHA-512',
    sasl_plain_username='your_username',
    sasl_plain_password='your_password',
    auto_offset_reset='latest',
    group_id='my-tron-token-consumer'
)

# USDT on TRON
USDT_ADDRESS = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'

for message in consumer:
    token_events = token_event_pb2.TokenEvents()
    token_events.ParseFromString(message.value)
    
    for event in token_events.events:
        # 篩選 USDT 事件
        if event.token.address == USDT_ADDRESS:
            print(f"Event Type: {event.type}")  # CREATED or UPDATED
            print(f"Token: {event.token.symbol}")
            print(f"Name: {event.token.name}")
            print(f"Decimals: {event.token.decimals}")
            print("---")

相關文件

概念與接入指南

Kafka Streams 接入基礎

EVM Streams

EVM 鏈資料流

Solana Streams

Solana 高吞吐資料流

WebSocket 即時資料

WebSocket 接入方式