跳转到主要内容
Solana 目标出块时间为 400ms,实际吞吐量约 4,000 TPS,理论峰值可达 65,000 TPS。极高的消息量对消费端的处理能力要求较高。 Schema 仓库github.com/chainstream-io/streaming_protobuf/solana

Message Types 总览

Solana Streams 提供以下消息类型:

Block-Level Data

Solana 使用 Slot 而非传统区块号作为时间线标识。
Solana 的 shred stream 中,Block Header 可能不完整,仅 Slot 字段保证正确。

Transaction-Level Data

交易核心字段

Instructions

交易包含多种 Instruction,这是 Solana 执行模型的核心:
一笔 Solana 交易可以包含多个 Instruction,每个 Instruction 调用不同的程序(Program)。

Transfer Data

TransferEvents 提供 Solana 的转账信息(Topic: sol.transfers)。

TransferEvent 结构

Transfer 核心字段

Token 元数据(TokenEvent)

Token 事件使用通用的 TokenEvents(Topic: sol.tokens),包含:

SolanaExtra 特有字段

Solana Token 包含额外的元数据字段:

Balance Updates 分层机制(Solana 特有)

这是 Solana 流数据的一个重要特性,余额更新在两个层级提供:
每条 instruction 执行后的即时余额变动,反映单步操作的直接影响。
这使得开发者既可以追踪细粒度的资金流向,也可以获取最终状态。

DEX Data

TradeEvents 提供 DEX 交易数据(Topic: sol.dex.trades),使用通用的 TradeEvent 结构。

Trade 核心字段

DApp 信息

DexPoolEvent - 流动性池


Solana 链特性

Slot 机制

Solana 使用 Slot 而非传统区块号作为时间线标识:

消息打包

交易以小批次打包,每条 Kafka 消息不超过 250 笔交易。

Block Header 完整性

Solana 的 shred stream 中,Block Header 可能不完整,仅 Slot 字段保证正确。其他字段可能为空或不准确。

高吞吐量处理建议

由于 Solana 的极高吞吐量,建议:
  1. 充足的处理能力:确保消费端有足够的 CPU 和内存
  2. 并行处理:使用多线程/协程并行处理消息
  3. 高效解析:优化 Protobuf 解析代码
  4. 批量写入:如需持久化,采用批量写入数据库

Topic → Message Type 映射表


代码示例

Python 示例:消费 Solana DEX 交易

Go 示例:高性能消费


相关文档

概念与接入指南

Kafka Streams 接入基础

EVM Streams

EVM 链数据流

TRON Streams

TRON 网络数据流

WebSocket 实时数据

WebSocket 接入方式