メインコンテンツへスキップ
TRON は約 3 秒ごとにブロックを生成し、高スループットのトランザクションとスマートコントラクト実行をサポートしています。TRON は独自のリソースモデル(Energy と Bandwidth)および Witness(スーパー代表)コンセンサスメカニズムを使用しています。 Schema リポジトリgithub.com/chainstream-io/streaming_protobuf/tron

メッセージタイプ一覧

TRON Streams は以下のメッセージタイプを提供します:
メッセージタイプ説明Topic
TradeEventsDEX 取引イベントtron.dex.trades
TokenEventsトークンイベントtron.tokens
BalanceEvents残高変動イベントtron.balances
DexPoolEvents流動性プールイベントtron.dex.pools
TransfersMessage送金メッセージtron.v1.transfers.proto
CandlestickEventsローソク足データtron.candlesticks

ブロックレベルデータ

BlockHeader コアフィールド

フィールド説明
Numberuint64ブロック番号
Hashbytesブロックハッシュ
ParentHashbytes親ブロックハッシュ
TimestampTimestampブロック時刻
TxTrieRootbytesトランザクションツリールート
Versionuint32ブロックバージョン

Witness(スーパー代表)情報

フィールド説明
AddressWitness アドレス
IdWitness ID
Signatureブロック署名
TRON は DPoS コンセンサスメカニズムを使用し、27 のスーパー代表(Witness)が順番にブロックを生成します。

トランザクションレベルデータ

TransactionHeader

フィールド説明
Hashbytesトランザクションハッシュ
Feeuint64トランザクション手数料
Indexuint32ブロック内インデックス
ExpirationTimestamp有効期限
FeeLimituint64手数料上限
Signatures[]bytes署名リスト
FeePayerbytes手数料支払者

Result — 実行結果

フィールド説明
Status実行ステータス
Success成功したかどうか
Message失敗時のエラーメッセージ

Receipt — リソース消費

フィールド説明
EnergyUsageTotalEnergy 消費合計
EnergyFeeEnergy 手数料
NetUsageBandwidth 消費
NetFeeBandwidth 手数料

Contract

コントラクト実行の詳細を含みます:
フィールド説明
Addressコントラクトアドレス
Typeコントラクトタイプ(TransferContract、TriggerSmartContract など)
Parameters呼び出しパラメータ
InternalTransactions内部トランザクション
Logsイベントログ
ExecutionTrace実行トレース
WithdrawInfo報酬引き出し情報

送金データ

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送金額
Idstringトークン ID(NFT)
URIstringトークン URI
CurrencyTokenInfoトークン情報
Successbool成功ステータス
Indexuint32送金インデックス
TransactionHeaderTransactionHeaderトランザクションヘッダー

TokenInfo 構造

フィールド説明
SmartContractstringコントラクトアドレス
Delegatedbool委任されているか
DelegatedTostring委任先アドレス
ProtocolNamestringプロトコル名
Namestringトークン名
Symbolstringトークンシンボル
Decimalsint32精度
HasURIboolURI があるか
Fungibleboolファンジブルか
AssetIdstringアセット ID(TRC-10)

TRON トークン標準

標準説明
TRC-10TRON ネイティブトークン、スマートコントラクト不要
TRC-20スマートコントラクトトークン(ERC-20 に類似)
TRC-721NFT トークン(ERC-721 に類似)
TRC-10 は TRON 固有のネイティブトークン標準で、作成と送金のコストが安いですが、TRC-20 ほど柔軟ではありません。

DEX データ

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 は 2 種類のリソースを使用します:
リソース説明取得方法
Energyスマートコントラクト実行消費の計量TRX をステーキングまたは支払い
Bandwidth (Net)トランザクションデータサイズ消費の計量TRX をステーキングまたは支払い
Receipt には両方のリソースの使用量と手数料が表示されます:
Receipt {
  EnergyUsageTotal: 50000    // Smart contract consumption
  EnergyFee: 0               // 0 if staked
  NetUsage: 265              // Transaction data size
  NetFee: 0                  // 0 if staked
}

Witness システム

特徴説明
名称Witness(スーパー代表)
数量27 のアクティブなスーパー代表
選挙トークンホルダーによる投票
ブロック生成順番に生成、約 3 秒/ブロック
BlockMessage には Witness のアドレス、ID、署名が含まれます。

事前定義コントラクトタイプ

TRON は一般的な操作のためにコントラクトタイプを事前定義しています:
タイプ説明
TransferContractTRX 送金
TransferAssetContractTRC-10 送金
TriggerSmartContractスマートコントラクト呼び出し
CreateSmartContractスマートコントラクト作成
FreezeBalanceV2ContractTRX ステーキング
UnfreezeBalanceV2Contractステーキング解除
DelegateResourceContractリソース委任
WithdrawBalanceContract報酬引き出し
Contract の Type フィールドで識別されます。

リソース委任

ユーザーは Energy と Bandwidth を他のアカウントに委任できます。TRON エコシステムでは以下の用途で一般的です:
  • ユーザーのトランザクションコスト削減
  • DApps によるユーザーのリソース代払い

Topic → メッセージタイプ マッピング

TopicProto Fileメッセージタイプ説明
tron.dex.tradestrade_event.protoTradeEventsDEX 取引イベント
tron.dex.trades.processedtrade_event.protoTradeEventsUSD 価格、疑わしいフラグ付き
tron.tokenstoken_event.protoTokenEventsトークンイベント
tron.tokens.processedtoken_event.protoTokenEvents説明、画像、SNS リンク付き
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.protoCandlestickEventsローソク足データ

コード例

Python 例:TRON DEX 取引を消費

from kafka import KafkaConsumer
from common import trade_event_pb2  # Get from streaming_protobuf repository

# Create 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'
)

# Consume and parse messages
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 トークンイベントのモニタリング

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:
        # Filter USDT events
        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 統合