註冊
登錄
致勝關鍵: 低延遲Shred
BlockRazor · 2025/08/15
Fundamental
Solana

image.png

Shred是什麼

Shred 是 Solana 分割、傳輸和處理區塊數據的基本單位。Solana 通過將區塊數據分片為Shred並結合Turbine廣播,使數據傳輸效率得以顯著提高。Shred的整體數據結構如下圖所示

image.png

可以看到,Shred主要分為Payload和Header和兩部分。

Payload承擔數據存儲的作用,分為data shred和code shred。

  • data shred: 包含區塊的實際賬本條目(entries),每個條目包含一組交易。
  • code shred: 包含基於Reed-Solomon糾刪碼生成的冗餘數據,用於恢復丟失的數據分片,以應對網絡丟包或惡意行為。

Header包含shred的基本標識和驗證信息。其中slot和index用於共同標識shred在所屬slot中的位置序號,fec_set_index用於標識shred屬於哪個糾刪碼集合,以便Solana將屬於同一個糾刪碼集合的data shred和code shred組織在一起,用於數據恢復。

Shred有什麼用

區塊重組:Validator節點、RPC節點和普通的Solana節點,都需要接收Shred用於重組區塊、更新節點狀態。對於Validator而言,低延遲接收Shred傳輸意味著投票交易可以被及時發出,從而提高投票積分獲得高比例的質押獎勵;對於RPC 節點而言,低延遲接收Shred可以在第一時間重組區塊,幫助dApp在第一時間查詢到最新的鏈上數據。

信號捕捉:Sniping Bot和Copy Trading Bot可利用Shred捕捉交易信號,低延遲Shred可以幫助Bot相比競爭對手更早地捕捉到交易信號,通過贏得先發優勢提升勝率。

交易分析:對於DEX項目方而言,Shred可以幫助項目方判斷交易上鏈結果,繪製幣對的價格K線等。低延遲接收shred意味著上述操作可以低延遲完成,從而為用戶打造極致的交易體驗。

根據上述分析,雖然不同用戶使用Shred的場景存在差異,但低延遲在所有應用場景中都是剛性需求。

如何讓低延遲Shred成為致勝關鍵

本文以Sniper Bot為例,介紹通過低延遲Shred提升業務表現的最佳實踐。

Sniper Bot 是一種快速"狙擊"新上市代幣(通常是 meme 幣)的自動化交易程序。它們通過監控去中心化交易所(如 Raydium 或 Pump.fun)的新流動性池,在代幣價格上漲前搶先買入,追求高頻交易利潤。

通常監控新流動性池的激活交易是基於WebSocket訂閱Solana RPC節點的JSON-RPC方法,但其缺點是只能訂閱到區塊重組後的數據,延遲較高。而採用實時訂閱Validator在區塊重組過程中拋出的Shred再將其解析為業務所需數據的方案,則可以顯著降低延遲。

步驟1:確定低延遲Shred源

Validator節點: 高質押的Validator節點可以在Turbine上層以低跳數轉發Shred

Jito Block Engine: 可轉發Jito Validator節點客戶端(Jito-Solana)拋出的Shred

Shred服務: 目前市場上有多家提供Shred服務的供應商,我們即將公開shred測評方法與結論供參考

步驟2:低延遲接收Shred

建議部署shredstream-proxy低延遲接收Shred。shredstream-proxy是Jito Labs 提供的Shred訂閱代理服務,可接收基於UDP協議的原生Shred流。shredstream-proxy分為兩種模式:

  • Shredstream模式:主動連接模式,代理會主動連接到Jito Block Engine來獲取Shred,但需要認證密鑰對來與Jito服務通信同時通過心跳機制維護與Block Engine的連接。
  • ForwardOnly模式:被動監聽模式,代理只是簡單地轉發接收到的任何數據包,不需要與Jito服務交互,可以監聽指定的低延遲Shred源。

shredstream-proxy支持接收多渠道的原生Shred,在ForwardOnly模式下,shredstream-proxy通過多個UDP socket實現多源數據接收(每個UDP socket獨立接收數據包),同時支持按源IP地址跟蹤數據包統計。圖示如下:

image.png

需要注意,為降低shredstream-proxy和Shred源間的傳輸延遲,請盡量將shredstream-proxy部署於靠近Shred源的地理位置。目前法蘭克福、阿姆斯特丹、東京和紐約是Shred源相對集中的地區。

步驟3:快速解析Shred

在低延遲接收Shred後,需將Shred快速解析為契合業務場景需求的數據。Sniper Bot的目標是獲取新流動性池的激活交易,因此只需將Shred解析為交易即可,目前有兩種方式:

shredstream-proxy

shredstream-proxy提供可選的gRPC重構服務,支持將原生Shred重構為entry。Sniper Bot將entry反序列化為交易後即可捕捉新流動性池激活交易,圖示如下:

image.png

三方開源工具

Sniper Bot在業務工程中集成三方開源工具,比如☞ https://github.com/BlockRazorinc/shreds-subscribe.git 和 ☞ https://github.com/dyodx/unshred,更為輕量地將接收到的Shred解析為交易,圖示如下:

image.png

上述兩種方式可以基本滿足Sniper Bot的業務訴求,而對於完整區塊數據有訴求的業務場景,需要在本地服務器部署Solana節點,同時集成Yellowstone插件。

Yellowstone 是 Solana 生態系統中一個開源的 gRPC 協議,基於Solana節點Geyser插件封裝,提供標準化的Solana區塊數據流式訪問。Yellowstone推出的數據包含account、transaction、slot、block metadata和entry等,相比直接解析原生Shred得到的數據更為完整。

作為開源項目,Sniper Bot可直接選擇訂閱市場上公開的Yellowstone gRPC服務,如需本地部署則方案圖示如下:

image.png

如上圖,Sniper Bot可在本地部署集成Yellowstone插件的Solana節點,開放TVU端口低延遲接收Shred並重組區塊。Yellowstone接收節點在重組區塊過程中拋出的數據,將數據經gRPC服務處理後以gRPC Stream的形式實時推送給客戶端。

Yellowstone提供多語言的客戶端庫來簡化對接過程,包括Rust、Node.js和TypeScript等,Sniper Bot將客戶端庫導入業務的工程代碼中,在創建客戶端實例並連接到gRPC服務器後即可接收到gRPC流。

總結

低延遲Shred是區塊重組、交易信號捕捉和交易分析等應用場景中的剛性需求,充分利用低延Shred可以提升業務表現,在競爭中贏得先機,成為致勝關鍵。

相比傳統的Websocket訂閱,本文以Sniper Bot為例,介紹通過低延遲Shred提升業務表現的最佳實踐,用戶可綜合根據業務場景、數據需求和集成便利性等對最佳實踐進行自由裁剪和組合,形成最適合自己的方案。