跳转到主要内容
本节详细介绍了 ChainStream 通过 Kafka 提供的 Tron 数据流。顶层 Kafka 部分解释了我们如何使用 Kafka Streams 来传输数据。 Tron 区块链平均出块时间约为 3 秒,相比以太坊等 EVM 链更快,适合高频交易和应用场景。

链上数据结构

Tron Protobuf 数据流为不同的使用场景提供两种主要消息类型:
  • BlockHeader: 包含区块的核心元数据
  • TransfersMessage: 专注于代币转账和货币元数据

区块级别数据(BlockHeader)

每个区块包含一个 BlockHeader,字段包括:
  • Number: 区块高度
  • Hash: 区块哈希
  • Timestamp: 区块时间戳
  • ParentHash: 父区块哈希
  • ParentNumber: 父区块高度
  • Version: 区块版本
  • TxTrieRoot: 交易树根
  • AccountStateRoot: 账户状态根(可选)
  • TransactionsCount: 区块内交易数量

交易级别数据(TransactionHeader)

TransactionHeader 提供交易的核心信息:
  • Hash: 交易哈希
  • Fee: 实际消耗的手续费
  • Index: 交易在区块中的索引
  • Expiration: 交易过期时间
  • Data: 原始调用数据
  • FeeLimit: 交易指定的手续费上限
  • Timestamp: 交易时间戳
  • Signatures: 签名列表
  • Time: 广播时间戳(可选)
  • FeePayer: 手续费支付方

转账数据(Transfer)

TransfersMessage 中的 Transfer 记录代币或原生货币的转账:
  • CallIndex: 调用索引
  • LogIndex: 日志索引
  • Sender: 发送地址
  • Receiver: 接收地址
  • Amount: 转账数量(字符串表示,保证精度)
  • Id: 代币 ID(NFT 使用)
  • URI: 代币 URI(NFT 元数据)
  • Currency: TokenInfo 代币元数据
  • Success: 转账是否成功
  • Data: 原始事件数据
  • Index: 转账在消息中的索引
  • TransactionHeader: 所属交易的上下文

代币信息(TokenInfo)

TokenInfo 提供代币的详细元数据:
  • SmartContract: 代币合约地址
  • Delegated: 是否被委托
  • DelegatedTo: 委托目标地址
  • ProtocolName: 协议/项目名称
  • Name: 代币名称
  • Symbol: 代币符号
  • Decimals: 小数位数
  • HasURI: 是否包含 URI
  • Fungible: 是否为同质化代币
  • AssetId: 唯一资产标识符
  • Standard: 代币标准(NATIVE、TRC10、TRC20、TRC721、TRC1155)

TransfersMessage

顶层转账消息:
  • Chain: 区块链元数据(ChainId)
  • Header: 当前区块头
  • Transfers: 转账记录列表

使用数据流

主题名称

Tron 数据流在不同的 Kafka 主题下可用:
  • tron.v1.transfers.protoTransfersMessage
I