跳轉到主要內容
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 接入方式